在git中有一种方法可以将单个文件中的更改拆分为两个提交吗?

时间:2013-10-15 22:36:19

标签: git git-commit git-add

所以我有一个文件:

...

some code here..

...

some unrelate code here..

...

我对它进行了以下更改:

...

some code here that needs to be changed a bunch..

...

some unrelated code here..

...

假设我正处于第一部分的一些重大变化中,我注意到后面部分中的拼写错误。我想修复拼写错误并提交并可能立即推送,但我仍在努力完成第一部分而不是阅读以分享它。显然我可以使用git stash或者进行中间提交并在另一个分支中修复拼写错误,但是有没有办法只将文件中的一些更改添加到暂存区域。显然,我可以解除输入错误,git add myfile然后重新拼写错字,但如果拼写错误修复更复杂,可能会有点烦人。有没有办法用git add指定要添加的文件中的行?

3 个答案:

答案 0 :(得分:13)

-p标志将允许您选择要添加的文件的哪些部分。这是一个受欢迎的问题here,它提供了有关补丁标记的更多详细信息。

答案 1 :(得分:4)

从终端,git add --patchgit add --interactive可用于选择性地提交提交更改,即使在同一文件中也是如此。

如果您更愿意使用图形工具,git gui允许您通过右键单击diff来选择性地进行分段,使用“stage hunk for commit”,如果选择了行,则“stage for lines for commit “命令。

答案 2 :(得分:2)

以交互方式暂存

git add --interactive 

将允许您从已编辑的文件中选择性阶段。

存储更改

如果你有一点远见,你可以

git stash save 'typos'
// edit file
git commit -am 'fix'

git stash pop 

暂时“隐藏”(其他VCS中的a.k.a. 搁置)的拼写错误修补程序将合并回您的工作副本。


如果你有兴趣将Vim用于此目的,那么Vim的逃犯具有更强大的功能。