一、add的回退操作
當我們有時候運行 add . 之後,發現自己的分支不對,需要進行撤銷操作,這時候使用git reset HEAD,即可以把暫存區的修改取消掉,這時看你的代碼,依然是修改後的狀態,等待你重新提交。
二、利用緩存區切換分支提交
上一篇我們說了Git提交代碼的流程,但是有時候我們發現我們想把代碼提交到另外一個遠端的分支上,你在A 分支做的修改,你想把修改提交到B分支上,這時候不能直接切換分支,需要將你做的修改存儲起來,切換分支後提取出來,在提交合並:
1、git stash --將本地代碼暫存到棧中 (git stash list --查看棧中的內容)
2、切換分支 (git checkout 分支名)
3、git stash pop --恢復棧中的代碼到本地
4、然後在新分支進行提交合並
5、當然提交合並完成後需要清空棧中的緩存 (git stash drop --清空棧)
-----(查看分支 git branch 與 git branch -a )
三、使代碼回到任意一個commit ID
git reset commitID (可以查看歷史的提交找到提交ID,有些文件名的變動與文件夾的變動無法變動需要手動刪除)
四、我們剛提交了代碼,但是發現這些代碼需要提交到另一個分支上面
可以用git cherry-pick commitID 來操作
1、立即使用git log命令查看剛剛提交的commitID
2、然後切換到想再次提交的分支上面,運行git cherry-pick命令來提交到新分支上,再次之前可以更新一下保證分支最新代碼
3、這種操作和stash pop有異曲同工之處,stash pop是未提交時候使用,然而這種是commit之後來操。(git stash緩存有時間限制)
以下是我們提交代碼的流程圖:
五、fork代碼,有時候我們一套代碼要給兩個不同的部門開發,兩個部門之間的代碼是兩套獨立的git,但是代碼是一樣的
有時候我們在A部門開發的代碼,需要同步到B部門,則需要將A的代碼fork到B中,一下是具體操作
1、切換到B部門的git倉庫中(相應項目的相應分支上(例如item服務的release分支)),運行git remote -v 可以看到有一個遠端庫(這個origin遠端庫就是你每次將代碼push到的地方,現在我們需要一個遠端的庫來將遠端的代碼拉倒你本地,也就是拉倒你的B倉庫中)
2、運行git remote add upstream 【注意此處要寫上A項目的git倉庫地址】
3、此刻再運行git remote -v你可以看到多了一個遠端庫,不過這個庫看起來稍微有點不同,是以upstream開頭
4、然後運行git fetch upstream 將A的提交拉倒B中
5、然後運行git rebase upstream/release 將拉過來的提交與你本地的release代碼合併
6、然後運行git push origin release 將合併後最新的release代碼push到遠端 (當然你需要有將代碼push到遠端release的權限)