1樓:
我來說兩個經典用法,來看看git rebase用法有多麼誘人~
[案例]去除提交列表中的某個commit,例如在master分支上A→B→C→D→E→F,除去D。
方案一:
git checkout C; //將HEAD切換到C提交
git cherry-pick master^;//master^即E,將E放到C後面,E的HSA1值改變
git cherry-pick master; //master即F,將F放到E後面,F的HSA1值改變
git checkout master; //將HEAD切換到master分支
git reset --hard HEAD@ ;//將HEAD切換到最新的F
方案二:
採用變基的方式
git rebase --onto C E^ F //前開後閉區間,E^即D,表面C後面加上(D,F]
git checkout master;
git reset --hard HEAD@
方案三:
互動式變基
git rebase -i D^
問題2:如何合併歷史提交?
[案例]在master分支上A→B→C→D→E→F,合併D到C,即A→B→CD→E→F。
方案一:
git checkout D;
git reset --soft HEAD^^
git commit -c c //-c表示重用C的提交資訊
git cherry-pick E;
git cherry-pick F;
git checkout master;
git reset --hard HEAD@
方案二:
用變基命令
git checkout D;
git reset --soft HEAD^^
git commit -c c //-c表示重用C的提交資訊
git tag newbase
git rebase --onto newbase E^ master
git tag -d newbase //清理該tag
方案三:
互動式變基
git rebase -i C^將第二行的pick 更改為 squash,兩者將合併。
2樓:hengjin xu
rebase的使用場合要看具體情況,並非取代merge.
把乙個branch的commit 拿到另乙個branch上,git提供了2個方法。
1.merge(其中merge根據具體的common ancestor又分兩種型別,fast-forward 和 three-way )
2.rebase
具體git的工作原理可參考pro git book。
3樓:
瀉藥。如果你問命令的用法,man git-rebase如果你需要在網頁上檢視,
Git - git-rebase Documentation如果你問 rebase 使用的場合,
用來替代 merge
用來修改 commit 歷史
介詞 in 有哪些用法?
已登出 刷過了English Prepositions Explained的in部分,我大概說一下 in的概念是這樣的 o 也就是有乙個東西被圍在邊界裡面了,和into相比,更加強調狀態而不是動作 說一下幾個困難的地方吧 其中一種是in circumstances,因為 circum 其實有in的意...
IF函式有哪些奇妙的用法?
星有靈稀 if算不,在原始資料表不能改動的情況下,就對Vlookup的查詢造成了困擾。在這種情況下,if搭配Vlookup的作用就會被凸顯出來 比如上圖中需要對ID進行匹配Name,如果不改動原始表,Vlookup是無法使用的,但通過搭配if,可以看到可以徹底扭轉局面,這其中的原理就要歸功於if的真...
忌廉槍有哪些創新用法?
嬌禹輝z 先裝忌廉,不過忌廉要裝一半瓶子的量,剩下的一半是給一氧化二氮的,要不然充氣就沒有意義了。然後裝瓶蓋和忌廉嘴,擰緊之後,把瓶子上下來回使勁搖3到5下讓氣和忌廉充分融合。然後往容器裡打奶油就成型了。追問 還有忌廉槍用完了忌廉怎麼清洗啊?如果拆出來那些氣會不會一下子漏光了,我之前用的乙個氣彈都還...