Git版本回退和分支合併

2021-09-25 17:01:05 字數 1810 閱讀 9557

@[git跳坑記錄]

剛進入公司,初學git可以說是瘋狂跳坑試錯。有些命令使用的時候知其然還要知其所以然,比如reset,不然可能半天的功夫就白費了。寫這篇部落格剛好可以加深記憶。

版本回退 git reset

一開始使用的時候總是習慣性加上–hard,也沒有理解引數的含義。結果有一次想追加提交時誤打成git commit時就傻眼了,然後又不假思索地再輸入了git reset --hard head^。。。然後git status一看,我的工作區快取區啥都沒了。那reset到底有什麼引數,它們的含義有分別是什麼呢?

soft

git reset --soft head^
這個時候,只是你的head回退到了上乙個版本,但是你的工作區和快取區的東西還是最近一次提交前的東西。所以如果你本來想追加提交時,就使用soft,然後把快取區的東西直接amend到當前提交版本

git commit --amend
mixed

git reset --mixed head^
這個時候,你的快取區的內容已經和head指向的提交版本一致了,如果你想追加提交的話,需要使用

git add . 或者 git add
將工作目錄的檔案新增在快取區,然後進行追加。

hard

git reset --hard head^
這個命令使用的時候需要小心,因為提交後工作目錄和快取區的內容都會和head指向保持一致,也就是說你找不回你想追加的東西了hiahiahia ?

revert

使用revert同樣可以版本回退,但是注意,revert會新增一次新的commit。這個命令使用的比較少,等遇到了再寫吧,就不誤導人了。

追加回退

那麼問題來了,如果你追加的時候也多追加了一次,咋整?沒錯,我也遇到了這種情況。我可真是試錯小天才:)

別急,這和版本回退的場景很類似。

git reflog
用這個命令檢視歷史操作,然後撤銷你的操作

git reset @
注意,追加回退也會有引數(soft/hard)的問題,使用時需要謹慎。

rebase 和 merge

merge命令會把master分支的修改內容和newbranch分支的修改內容匯合起來,合併兩個修改會生成乙個提交,master分支的head會移動到該提交上。

rebase newbranch分支到master分支, newbranch分支的歷史記錄會新增在master分支的後面,歷史記錄成一條線,相當整潔,此時可能會產生衝突,手動解完衝突後,輸入rebase --continue命令即可。

rebase之後,master的head位置不變。因此,要合併master分支和newbranch分支,即是將master的head移動到newbranch的head這裡,即是上文中的merge操作。

詳見分支的合併.

git add . 無法將工作區的修改新增至快取區

將工作目錄回退到跟目錄即可

參考

分支的合併.

git reset --soft,–hard的區別.

撤銷 git commit --amend.

git版本回退打標籤分支合併

第一步 執行git log命令,檢視提交記錄,獲取版本號 提交記錄只顯示最近三次,放大螢幕可看多次,也可手動回車依次往前檢視,ctrl c停止 第二步 執行git reset hard 版本號 命令,這樣本地的 就成功回退到了你想要的版本,再次git log,本地的記錄也沒了,但當重新status的...

git分支建立切換合併及版本回退

檢視分支 git branch建立分支 git branch切換分支 git checkout建立 切換分支 建立 切換分支 git checkout b origin master使遠端倉庫有本地分支 把本地倉庫分支推到遠端倉庫 git push u origin這裡為什麼不直接使用 git ch...

Git合併遠端倉庫和版本回退

因為我個人需要合併兩個遠端倉庫 保留commit log 就查了一些相關資料,整理了一些操作。而在我的操作過程中,由於一些誤刪除和誤提交,又引發了版本回退的一些問題,一併做說明。合併的思路就是講乙個倉庫新增進另乙個倉庫作為乙個遠端倉庫,然後為這個遠端倉庫建立乙個分支,然後將這個分支合併到主分支 假設...