假设有几个文件被修改,我只想要每次提交一个文件。怎么做?给出一个状态示例如下所示。谢谢!
例如:
> git status
# modified: file01.txt
# modified: file02.txt
# modified: file03.txt
# modified: file04.txt
# modified: file05.txt
答案 0 :(得分:45)
使用git add -p
后跟git commit
。 git add -p
要求您进行每次更改是否将其暂存以进行提交,这非常方便。
您还可以将-p
与git reset
和git checkout
一起使用。
答案 1 :(得分:20)
有几种方法,但最简单的可能是:
git commit file01.txt
git commit file02.txt
...
您提交命令后列出的所有路径都将被提交,无论它们是否已暂存。或者,您可以暂存每个,然后提交:
git add file01.txt
git commit
git add file02.txt
git commit
...
答案 2 :(得分:14)
git add -p
很好,但是对于更直接的选择和选择方法,我真的很喜欢:
git add -e
它会生成相应的补丁,然后将其加载到首选编辑器中,以便您可以根据需要进行编辑。保存文件并退出编辑器时,只有编辑后的修补程序版本所做的更改才会添加到索引中。
如果您在不进行更改的情况下意外关闭了编辑器,您可能希望使用get reset HEAD
然后重新开始。
答案 3 :(得分:2)
git add file01.txt
git stash
git commit -m'commit message'
git stash pop
重复。
答案 4 :(得分:1)
关于在文件中暂存部分更改的主题,值得注意的是,各种文本编辑器都支持以比任何命令行选项更好的方式执行此操作。
我使用Magit用于Emacs,它使用单击键来向前或向后穿过深色,增加或减少粒度,以及暂存或取消暂存当前的大块。您也可以手动标记区域并仅在该区域上进行阶段(或非阶段)。
我相信vim和其他编辑器/ IDE也有相似的插件。