2015-05-21 27 views
3

As explained in previous questions,你可以分割成更小的補丁。但是,這些答案建議git add -p,它完成這項工作,但如果我只想按文件中的給定順序進行一次提交,那麼將會很乏味。有沒有辦法自動實現這一點?git可以自動將提交分成單個區塊嗎?

+1

如果

s=0; i=0; while [ $s -eq 0 ]; do echo -e "y\nq" | git add -p && git commit -m "automated $i"; s=$?; let i=$i+1; done 

可生產提交你想知道爲什麼我需要這個:由於自動代碼格式化工具的改變,我有一個巨大的提交。這導致了一個運行時錯誤;如果每個人都在自己的提交中,我可以很容易地使用'git bisect'來找到它。 – leftaroundabout

+0

什麼將是一個規則來界定胖子?一個文件=一個提交? –

+0

@NickVolynkin:我會對'git add -p'提供的hunk表示滿意。 – leftaroundabout

回答

5

你可以做類似

echo -e "y\nq" | git add -p && git commit -m "automated" 

其作用:

呼應Y(接受第一帥哥),然後Q(退出)未來大塊,用給定的信息提交。

循環直到git commit不返回成功:

s=0 
i=1 
while [ $s -eq 0 ] 
do 
    echo -e "y\nq" | git add -p && git commit -m "automated $i" 
    s=$? 
    let i=$i+1 
done 

或一條線:像

c5ba3 - (HEAD) automated 3 
14da0 - automated 2 
6497b - automated 1 
+0

更多的'bash' /'sh'解決方案比'git',看起來相當駭人,但如果沒有本地替代品可用,我會保持不錯。 – leftaroundabout

+1

不是'addp'錯字還是別名? –

+0

@leftaroundabout是的,我認爲是這樣,但它對我的小測試非常有用;)。 – martin

相關問題