2016-01-14 19 views
0

對於更復雜的Git命令,我很新,所以我需要一點幫助。這樣的事情目前是這樣的:Git:將我自己的提交移動到分支頂端並重置

origin/master 
1->2->3->4 

master 
1->A->2->3->4 
    | 
my commit 

此刻,我已承諾A.我不能完全滿足它是如何橫空出世,但我還沒有它推到原點/主呢。我也有,我想包括對除了改變A.一些東西從我讀過一些地方的變化,我可以將我的本地提交的4一領先,這看起來像這樣

master 
1->2->3->4->A 

然後,我想軟重置爲提交4,以便將提交A和當前本地更改作爲未提交更改進行更改。所以,我已經找到了將下面的命令:

git stash 
git rebase ??? 
git reset --soft 4 
git stash pop 

因此,作爲最終的結果,我想有從犯了和以前的局部變化,現在在一起的局部變化的變化。我用上面的命令描述了什麼?我將如何將我的本地提交A移至頂部並使用rebase?假設現在一切正常,我可以安全地用重置提交A彈出我的存儲嗎?

回答

1

積攢後,您應該交互式衍合:

git rebase -i HEAD~4 # Rebase up to the last 4 most recent commits. 

然後在編輯器中彈出,重排提交你的願望,讓A最底部(對比gitk,這個視圖顯示最近的提交在底部,而不是頂部)。退出編輯器,保存文件,然後讓Git進行重新綁定。必要時解決衝突。然後重置並彈出存儲器,就像您在示例中所做的那樣。

+0

太棒了,這正是我所需要的。一切都按照我所描述的完成。 – siiminusminus

0

如果您已經運行git fetch和有變化,你也沒有推你的本地修改尚未: -

git pull --rebase會做你想要的東西 - 它倒帶頭點你開始之前,拉在來自上游的最新更改中,然後重播您的更改,以便順序顯示。

任何衝突都會在它們出現的地方解決,而不是在合併提交中解決。

相關問題