2010-01-05 101 views
21

说有几个文件被修改,我只想每次提交一个文件。怎么做?给出一个状态如下的例子。谢谢!!如何使用Git一次提交一个文件?

例:

> git status 
# modified: file01.txt 
# modified: file02.txt 
# modified: file03.txt 
# modified: file04.txt 
# modified: file05.txt 

回答

17

有几种方法,但最简单的大概是:你列出

git commit file01.txt 
git commit file02.txt 
... 

的任何路径后commit命令将不管他们是否正在上演承诺承诺。另外,您也可以在台上每一个,然后提交:

git add file01.txt 
git commit 

git add file02.txt 
git commit 

... 
+6

这是常规的git提交,但对于部分文件提交-p或-e是需要的 – radistao 2012-02-13 19:15:13

+0

该死的,我应该在使用这个命令之前阅读这个评论。这是对这个问题的错误答案! – default 2013-05-16 07:19:03

+0

@donschoe问题问如何提交单个文件(不是文件的一部分)。答案是正确的,即使你的问题标题不同(可能应该是“如何提交单个文件)。 – 2013-05-16 18:32:00

2
git add file01.txt 
git stash 
git commit -m'commit message' 
git stash pop 

重复。

+3

我打算投票赞成,因为从git的角度来看,没有任何理由去做隐藏,但是如果你想在隐藏和提交之间进行构建和测试,这并不是一个坏主意,这样你就会知道你没有意外地提交破坏的代码。 – 2010-01-05 03:57:08

+0

提交破损的代码有什么问题?只要它没有发布,也没有其他人设法得到它。 – 2010-01-05 06:27:00

+0

@Pat,我倾向于这样做的习惯喜欢有工作提交和使用git svn,我必须存储更改之前上传与dcommit的更改。但是你是对的,在OP的情况下没有任何理由去做隐藏的流行 – 2010-01-05 13:23:15

45

使用git add -p后面跟着git commitgit add -p询问您是否需要为每次更改进行承诺,这非常方便。

您也可以使用-pgit resetgit checkout

+7

我真的认为git add -p需要更多曝光!它创建了更好的工作流程,因为您不必关心文件名,只需滚动即可进行更改。 – dpavlin 2011-03-31 17:42:01

14

git add -p通过DAF的回答说明是好的,但更直接的方式来挑选和选择,我真的很喜欢:

git add -e

它产生相应的补丁程序,然后加载它在你的首选编辑器,以便您可以根据需要进行编辑。保存文件并退出编辑器时,只有修改后的修补版本所做的更改才会添加到索引中。

如果不小心关闭了编辑器而未进行更改,则可能需要使用get reset HEAD,然后重新开始。

+3

我现在比'-p'更喜欢'-e'。 – Richard 2013-03-07 21:04:48

1

关于在文件中暂存部分更改的主题,值得注意的是,各种文本编辑器都支持以比任何命令行选项更好的方式执行此操作。

对于Emacs,我使用Magit,Emacs使用单击键向前或向后通过hunk,增加或减少粒度,以及暂存或取消暂存当前块。您也可以手动标记区域并分阶段(或不分阶段)该区域。

我相信也有类似的vim插件,以及其他编辑器/ IDE。

相关问题