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

12

所以我有一个文件:

...

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个回答

18
< p > < code > -p 标志将允许您选择添加文件的哪些部分。 这里有一个流行的问题 这里, 提供了有关补丁标志的更多详细信息。


8

从终端中,可以使用git add --patchgit add --interactive来选择性地将更改暂存以进行提交,即使在同一文件中也可以。

如果您更喜欢使用图形工具,则可以通过右键单击差异,在"暂存块以进行提交"和(如果选择了行)"暂存行以进行提交"命令下,使用git gui进行选择性的暂存。


3

可交互式暂存

git add --interactive 

您可以选择性地从编辑过的文件中进行部分提交。

隐藏更改

如果您有一点预见性,您可以

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

git stash pop 

之前暂时存储的拼写错误修复 (在其他版本控制系统中称为"shelve") 将被合并回您的工作副本。


如果您有兴趣使用 Vim 进行此操作,那么 Vim 的 fugitive 功能要强大得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接