2013-01-15 16 views
0

支行的背後,是由產地通過5次提交。如何拉git的具體提交變基

[email protected][~/git/task](task-68↓3| ✓)$git status 
# On branch task-68 
# Your branch is behind 'origin/task-68' by 5 commits, and can be fast-forwarded. 
# 
nothing to commit, working directory clean 
[email protected][~/git/task](desflow-68↓3| ✓)$ 

這些提交是A-> B-> C-> D-> E。我如何才能獲得與提交C到工作目錄相關的更改。

它試圖變基混帳-i但不會犯下的所有名單。它輸出以下信息。

noop 

    # Rebase 484a22b..b7fa802 onto 484a22b 
    # 
    # Commands: 
    # p, pick = use commit 
    # r, reword = use commit, but edit the commit message 
    # e, edit = use commit, but stop f 

任何幫助表示讚賞。

+1

如果你只是想拉一個單一提交,也許嘗試'櫻桃pick'? – jeremyharris

+0

我試過,但它會再次上演這些變化犯,甚至unstaging後的變化,如果這種變化是在本地製造或櫻桃採摘就不是很清楚。 – Sriharsha

+0

「在當地製作」是指櫻桃採摘之前還是之後? –

回答

1

嘗試

git cherry-pick <C-sha> 

如果你不想這些更改存儲爲一個新的提交使用

git reset HEAD~1 

然後改變既不會上演,也沒有承諾根本。

更新:

如果你想自己的分支出現已經從合併任務-68的5次提交,同時在現實那就只能提交C,可寫(cherry-後採摘):

git merge -s ours task-68 

更新2:

它是一種常見的做法,讓您的本地task-68分支相同origin/task-68,所以如果你想從父分支省略一些提交,這是一個好主意,事先叉它:

git checkout -b task-68-wip 

在此之後,入手櫻桃採摘和合並如上所述。

+0

是的,這是有效的,甚至我可以忽略提交本身,而櫻桃選擇-n選項。但工作目錄不會乾淨。有人看着它認爲。當地有一個變化,還有5個承諾被提取。 – Sriharsha

+0

'muralish @ vnc9 [〜/ git的/任務(任務68↓5 |✓)$ git的狀態 #分支任務的68 #你分支的背後是 '起源/任務-68' 由5個提交,並能被快速轉發。 # #未提交更改的提交: #(使用「git add ...」更新將提交的內容) #(使用「git checkout- ...」放棄工作目錄中的更改) # #修改:Common.java 什麼承諾,工作目錄乾淨 muralish @ vnc9 [〜/ git的/任務(任務68↓5 |✓)$' – Sriharsha

+1

誰做你希望看看你自己工作目錄除了你自己嗎?分佈式版本控制系統是關於每個人都有自己的工作目錄。 –