如果我对一个大文件进行了多组更改,是否可以使用Git将其拆分为单独的提交?
您想要使用 git add --patch
(文档)命令,这将允许您选择要暂存的更改。
git add --patch
存在问题,请礼貌地给出解释。 - William Pursellgit add -p
,它允许我们选择要添加的代码块。 - Venkat Ch是的,你可以——使用git add -i
选择要为每个提交暂存的块。你可以通过运行git help add
并滚动到“交互模式”来获取文档。
我经常使用的另一个选项只是因为我忘记了patch
选项 :):
假设你已经更新了文件:aaa.txt
,bbb.txt
,ccc.txt
,并且你想在第一次提交中 push
aaa.txt
文件,然后在第二次提交中 push
bbb.txt
和 ccc.txt
:
step 1:
--------------------
git add aaa.txt
git commit -m "Added first file"
git stash
git push
step 2:
--------------------
git stash pop
git add -A
git commit -m "Added the rest of the modified data"
git push
可能会更冗长,但我认为这样可以获得更多的控制。
干杯!
Williams answer是完全有效的。但有时候手动操作更容易。例如,如果您意外更新了一些第三方库的很多文件,在提交之前进行了修改。使用git add -p
(与--patch
相同),你需要浏览所有这些文件。所以在这种情况下,更方便的做法是只提交想要提交的文件,并在所有其他更改后进行第二次提交:
> git add /path/to/your/file.txt
> git commit -m "my commit message"
[master a0c5ea6] my commit message
1 file changed, 2 insertions(+), 1 deletion(-)
> git add --all
> git commit -m "updated library xyz"
git add -p
允许您在命令行中选择特定的文件,在交互会话中,您可以使用 g
跳转到特定的代码块,或者使用 /
搜索与正则表达式匹配的代码块。add -p
的目的是从文件中选择代码块,但这个提议的解决方案需要添加整个文件,这不符合原帖作者的要求。 - William Pursell