"git commit --amend" 没有 "git add" / 改变暂存区
"git commit --amend" without "git add" / changing staging area
进一步开发后,我需要对之前的提交添加额外的更改。
我做了很多更改,包括 IDE,处理文件重命名、创建新文件等。
所以git status
在暂存区显示了很多文件。
我不想用 git commit --amend --no-message
添加这个文件。
我可以将这些文件列为 git commit --amend --no-message
的参数吗?还有其他不影响索引的可能性吗?
我考虑存储索引 - 但是列出 40 个要忽略的文件而不是 2 个文件进行修改是一件很复杂的事情....
经过试验,我找到了一个简单(且显而易见)的解决方案:
$ echo x >> file1
$ echo x >> file2
$ echo y >> fileZZZ
(1)$ git add .
(2)$ git ci -m fix -- file1
(3)$ git commit --no-edit --amend -- file2
在 (1)
我将所有内容添加到索引中。在 (2)
我只提交选定的文件,在索引中留下其他文件(file2
和 fileZZZ
),在 (3)
我添加缺少的 file2
修复留下 fileZZZ
在索引中。
可以使用 Git 几乎忽略临时区域。
大多数 IDE 将暂存区反映为实际 Git 操作。 (我正在使用 VS Code,它确实如此。)因此,首先取消暂存所有文件:
git reset .
然后,通过 git add
或 IDE 按钮设置要暂存的文件。根据IDE界面,文件应该有一个加号按钮。
最后执行git commit --amend --no-message
。语义应与正常提交相同。
如果您不知道如何执行上述操作,执行交互式变基来压缩提交也有帮助。参见 How to modify existing, unpushed commits?
进一步开发后,我需要对之前的提交添加额外的更改。
我做了很多更改,包括 IDE,处理文件重命名、创建新文件等。
所以git status
在暂存区显示了很多文件。
我不想用 git commit --amend --no-message
添加这个文件。
我可以将这些文件列为 git commit --amend --no-message
的参数吗?还有其他不影响索引的可能性吗?
我考虑存储索引 - 但是列出 40 个要忽略的文件而不是 2 个文件进行修改是一件很复杂的事情....
经过试验,我找到了一个简单(且显而易见)的解决方案:
$ echo x >> file1
$ echo x >> file2
$ echo y >> fileZZZ
(1)$ git add .
(2)$ git ci -m fix -- file1
(3)$ git commit --no-edit --amend -- file2
在 (1)
我将所有内容添加到索引中。在 (2)
我只提交选定的文件,在索引中留下其他文件(file2
和 fileZZZ
),在 (3)
我添加缺少的 file2
修复留下 fileZZZ
在索引中。
可以使用 Git 几乎忽略临时区域。
大多数 IDE 将暂存区反映为实际 Git 操作。 (我正在使用 VS Code,它确实如此。)因此,首先取消暂存所有文件:
git reset .
然后,通过 git add
或 IDE 按钮设置要暂存的文件。根据IDE界面,文件应该有一个加号按钮。
最后执行git commit --amend --no-message
。语义应与正常提交相同。
如果您不知道如何执行上述操作,执行交互式变基来压缩提交也有帮助。参见 How to modify existing, unpushed commits?