有多种解决方法。
如果您想在不影响当前更改的情况下进行第一次提交的更改,则可能要使用git stash
。这样会将您所有未完成的更改都收起来,让您以后可以将其还原。使用git status
地看到,它们不存在了。现在按照您的习惯创建第一个提交。接下来,您可以使用它git stash pop
来还原原始更改并创建第二个提交,从而完成主要工作。
另一种方法是进行所有必需的更改,然后创建两个提交,两个提交都包含工作的一部分。为此,您可以使用git提供的索引(也称为暂存区域)。这是可以用来准备提交的特殊区域。假设您已经更改了多个文件,则可以使用将每个文件添加到索引中git add
。执行git commit
此操作时,只会提交添加到索引的文件。git status
将向您显示更改的哪些部分将被提交,哪些不被提交。例如,在更改文件a.txt,b.txt和c.txt之后,它将执行以下操作git add a.txt
:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: a.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: b.txt
modified: c.txt
当你正在做git commit
在这种状态下,只有改变A.TXT将被添加到您的承诺。
另外,您可以使用来查看要提交的确切更改git diff --cached
,这将向您显示所有将要提交的更改的差异。
如果一个文件包含两个提交的更改,则还可以使用“ git add --patch b.txt”将其仅一部分添加到索引中。git将为您提供一种交互模式,询问您是否应将给定文件中的每个更改添加到索引中。如果行之间的更改彼此相邻,而这需要在两次提交中进行拆分,则这可能会变得更加困难,但是也有解决方法。
如果您想了解有关登台区域的更多信息,则可能需要阅读以下内容:http :
//gitready.com/beginner/2009/01/18/the-staging-area.html
您可能还想在此处阅读有关交互式添加的更多信息:http :
//nuclearsquid.com/writings/git-add/
git status
用来查看所有已更改的文件,并通过git add
与特定文件(而不是git add --all
)一起使用并进行逐个提交来进行两次或多次提交。