1、檢視分支提交版本號:commit id
git rev-parse head
2、檢視日誌
git log
#或git reflog
#或git log --pretty=online
#或git log --graph
3、刪除分支
當乙個分支被廢棄時,我們要做的是刪除分支,在徹底刪除乙個分支時,需要三個步驟
刪除本地分支
刪除遠端分支
刪除本地追蹤分支,即追蹤遠端master
的追蹤分支origin/master
刪除本地分支
在刪除分支的時候,我們會使用git branch --delete dev
來執行.有時還會通過縮寫git branch -d dev
來代替,使用中我們發現還有git branch -d dev
的寫法,他們有什麼區別呢?
刪除遠端分支
指令git push origin --delete branch
,該指令也會刪除追蹤分支
刪除追蹤分支
通過指令git branch --delete --remotes /
,可以刪除追蹤分支,該操作並沒有真正刪除遠端分支,而是刪除的本地分支和遠端分支的關聯關係,即追蹤分支
如上,通過命令列git push origin --delete branch
會刪除遠端分支和追蹤分支,不需要單獨刪除追蹤分支,但是如果通過網頁對遠端分支進行刪除,追蹤分支是不會被刪除的.
在git版本1.6.6之後,可以通過git fetch origin --prune
或它的簡寫git fetch origin -p
來單獨刪除追蹤分支
補充:git fetch
的--all
和--multiple
用來獲取多個資源
git --prune
用來刪除被廢棄的追蹤分支,該指令可以實現git remote update
和git remote prune
的功能,使得git remote update
和git remote prune
沒有太多存在的必要,儘管如此,目前git並沒有刪除這兩個指令的打算.
4、用git checkout切換本地分支從b1到b2時, 如果b1的本地檔案有修改, 為什麼會發生衝突?
b1和b2不再乙個commit id上.
設b1和b2都有123.txt這個檔案(這2個branch下123.txt檔案內容可相同可不相同); 當前在b1下, 修改了一行123.txt, 然後想git checkout b2切換到b2分支, 就會提示衝突! 我覺得這種行為特別不合理, 大家有知道git為什麼這麼設計麼?
我想git至少可以用如下方法避免這種衝突:
git checkout b2時, git可以自己來先git stash, 再git stash pop, pop時嘗試merge**, 真正有衝突解決不了再報給使用者;
同樣的, 你在用git merge b2來merge本地2個分支時, 如果b1有修改的檔案, 那麼同樣會有上面git checkout b2的問題!
解答:你覺得不合理是因為剛好你的需求是「需要保留修改且不要commit」,但實際上你也可能遇到其它情況。git把選擇權交給使用者來應對不同的場景,是比較靈活務實的做法。而且如果真要做成你想的那樣,git也提供了alias機制可以實現,專為自己定製。如果嫌棄alias不能用checkout這個關鍵字,還可以自定義乙個bash函式封裝重寫git命令,使得git checkout
這種格式的命令按照你想的那樣執行,而其它命令和其它格式的checkout扔按原來的樣子執行。豈不是很自由,很靈活!
Git使用總結
1.git branch vv 檢視本地分支與遠端分支的關聯關係 2.git push origin localbranch remotebranch 建立遠端分支remotebranch,該遠端分支的內容與localbranch內容一致 3.git push origin remotebranch...
Git使用總結
在linux上安裝git 命令 tar,config,make,sudo make install 在mac os x上安裝git exe程式執行即可 安裝完成後,在開始選單裡找到 git git bash 蹦出乙個類似命令列視窗的東西,就說明git安裝成功!設定使用者名稱 git config g...
Git使用總結
在windows上安裝git 安裝完成後,在開始選單裡找到 git git bash 蹦出乙個類似命令列視窗的東西,就說明git安裝成功!install git on windows安裝完成後,還需要最後一步設定,在命令列輸入 git config global user.name your nam...