2012-07-16 18 views
2

我有一個稍微過時的實驗分支,由於時間限制而被推到一邊。我需要撿起它並將其移動到項目的頭部。將分支分解爲單個文件提交

現在的問題是,分支中的補丁實際上有很多大量的衝突,所以我想將分支中的提交分成單個文件提交,所以我可以更容易地將它們應用一個一。

是否有一些自動命令,這會爲我做,或者我需要手動執行此操作?

回答

2

你可以做到這一點:

git checkout -b experiment master^^^^ 
git rev-list master^^^..master | 
    while read rev; 
    do 
    git diff --name-only $rev^..$rev | 
     while read file; 
     do 
     git checkout $rev -- $file; 
     git add $file; 
     git commit -C $rev; 
     done; 
    done 

請注意,每個語句

這個假定您要擴大範圍master^^^^..master^S的數量,它是線性的歷史,或者你不介意失去合併。它還假定您想要爲每次受影響的文件保留相同的提交消息。

1

我不認爲有一個命令可以做到這一點,但編寫腳本來完成它應該相當容易。它只需要使用git diff來輸出已更改文件的列表,如果爲空則退出。否則,從列表中選擇頂層文件並使用git add進行分級,提交併重複。

相關問題