git可以自动将提交分成单个帅哥吗?

lef*_*out 3 git bash

如前面的问题所述,您可以将提交拆分为较小的补丁.但是,这些答案建议git add -p,这可以完成工作,但如果我想要的是每个块的一次提交,则按照文件中的给定顺序进行繁琐.有没有办法实现这一点,自动?

mar*_*tin 5

你可以做点什么

echo -e "y\nq" | git add -p && git commit -m "automated"
Run Code Online (Sandbox Code Playgroud)

这样做:

echo y(接受第一个hunk),然后q(退出)下一个hunk,使用给定的消息进行提交.

循环直到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
Run Code Online (Sandbox Code Playgroud)

或者在一行中:

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
Run Code Online (Sandbox Code Playgroud)

产生类似的提交

c5ba3 - (HEAD) automated 3
14da0 - automated 2
6497b - automated 1
Run Code Online (Sandbox Code Playgroud)