2017-10-17 88 views
0

原來提交包含5個文件:混帳:如何合併存在於先前丟失的文件提交到最新提交

a.txt 
b.txt 
c.txt 
d.txt 
e.txt 

下一個提交補充道線的a.txt底部,刪除b.txt和上載新文件f.txt。即

a.txt - additions from second commit 
c.txt 
d.txt 
e.txt 
f.txt - new file from second commit 

我想合併的提交,讓我接受改變a.txt,從第一次提交恢復b.txt並添加f.txt從最新的提交。回購現在應該是這樣的:

a.txt - additions from second commit 
b.txt - restored from first commit 
c.txt 
d.txt 
e.txt 
f.txt - new file from second commit 

我試着用git rebase --root -i這樣做的,離開原來承諾的「選擇」,改變了第二承諾「南瓜」

pick commit1 
squash commit2 

但rebase完成後,我只剩下commit2

我做錯了什麼,或者是我所問的不可能?

+0

我相信你不能選擇一個提交_partially_,就像你想要做的第二次提交。但是,因爲我不是專家,所以我會去檢查是否有其他人有這樣的魔力:) –

回答

0

如果你想在一個特定的給定文件(S)提交的內容,只需運行:

git checkout <commit> -- file1 [file2 ...] 

看起來你只需要做:

# get the version of b.txt from your previous commit : 
git checkout <original commit> -- b.txt 

# you will now see 'b.txt' as staged for commit : 
git status 

# create a new commit on top of the previous one : 
git commit