常用的GIt指令總結
sh-keygen -t rsa
標準操流程 git clone ssh://[email protected]:2222/source/all_in_one.git git checkout -b develop origin/develop git checkout -b gjs_feature develop do something
git pull |- git fetch origin |- git merge origin/當前分支的對應分支
git add . git commit -m ‘some commit’ git checkout develop git merge gjs_feature
resolving conflict git diff branch1 branch2 >>~/coflict.diff
git push develop
install git
sudo apt-get install git
config
git config --global user.name kaku git config --global user.email [email protected]
initial example
git init git status git add readme.md git commit -m ‘update readme.md
git remote
git clone ssh://[email protected]:2222/source/all_in_one.git git clone -b development ssh://[email protected]:2222/source/all_in_one.git git clone -o oth_origin ssh://[email protected]
git fetch
git fetch <遠端主機名> <分支名> git fetch origin master 取回遠端更新後,可在本地主機上新建立分支 git checkout -b newbranch origin/master 或在本地分支上合併遠端分支 git merge origin/master git rebase origin/master
pull遠端指定分支並與當前分支融合
git pull <遠端主機名> <遠端分支名>:<本地分支名> git pull git pull origin develop # 與當前分支merge git pull origin develop:develop git push --force origin強制推送 git pull相當於 -p 在本地刪除遠端已經刪除的分支
檢視工作區和版本庫裡面的區別
git diff readme.md git log git log --pretty=oneline git reflog git log --oneline --graph
版本回退 HEAD指當前版本,HEAD^指前一版本
git reset --hard HEAD^ git reset --hard HEAD~100 git reset --hard 6fcfc89
丟棄工作區改動(回到最近一次commit或add後的狀態)
git checkout – file git checkout – readme.md 回到暫存區或庫中版本! git rm --cached readme.md 從快取區撤回
丟棄暫存區改動(與版本庫同步)
git reset HEAD file
隱藏工作現場
git stash git stash list git stash pop git stash apply [email protected]{0}
push local master
git push <遠端主機名> <本地分支名>:<遠端分支名> git push -u origin master #指定預設主機 git push origin master:master git push 預設push當前分支
檢視遠端分支
git branch -a
刪除遠端分支
git push origin :branch-name
建立追蹤關係
git branch --set-upstream development origin/development
tag
git tag v0.1 git push --tags git push origin :refs/tags/ver0.1
各種取消操作
git rm –cached filename#add之後取消! git command --amend #重新編輯提交message!合併提交! git checkout – readme.md #撤銷本地修改 git reset --hard <commit_ish> #commit後修改回到某個ish位置,連同硬碟(本地修改) git reset --mixed <commit_ish> #修改HEAD,提交記錄變,但檔案變(本地未修改)預設! git reset --soft <commit_ish> #相當於mixed方法後再git add soft (commit) < mixed (commit + add) < hard (commit + add + local working)
rebase
如果是對local 私有的臨時性質的分支,則直接git rebase -i master(梳理歷史資訊比 如合併成一個commit)+git merge產生一個fast forward,最終以一個commit展示在master分支上
merge
marge 特點:自動建立一個新的commit 如果合併的時候遇到衝突,僅需要修改後重新commit 優點:記錄了真實的commit情況,包括每個分支的詳情 缺點:因為每次merge會自動產生一個merge commit,所以在使用一些git 的GUI tools,特別是commit比較頻繁時,看到分支很雜亂。
合併時如果出現衝突需要按照如下步驟解決 1.修改衝突部分 2.git add 3.git rebase --cotinue 4.(如果第三步無效可以執行 git rebase --skip) 5.不要在git add 之後習慣性的執行 git commit命令