逐个承诺GIT

时间:2012-04-23 11:49:09

标签: git

我对存储库的工作副本进行了一些更改。我没有承诺很长时间,所有的变化都被跟踪。

现在,我想先提交一部分更改,然后再提交另一部分更改,以便我可以恢复到每个更改。显然,这些部分更改都在不同的文件上。我是git的新手,并且担心如果我尝试其他地方建议的git rm --cache之类的东西,我可能会撤消所有的更改。请帮助。

6 个答案:

答案 0 :(得分:3)

你可以git gui和'stage hunk for commit'或'stage line for commit'

答案 1 :(得分:3)

在命令行上,您可以使用

$ git add -p

选择提交的帅哥。

答案 2 :(得分:2)

我建议使用-p选项git add。这告诉git 交互式地询问用户是否提交大块。

$ git add -p src_file.c
$ git commit
$ git add -p src_file.c
$ git commit
...

使用此选项,您将获得每个块的提示:

Stage this hunk [y,n,q,a,d,/,s,e,?]?

可以获得以下帮助信息。

y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk nor any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk nor any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

像这样添加您可以轻松地将更改拆分为同一个文件或 多个文件分成多个提交。有关更详细的说明 查看man (1) git-add

答案 3 :(得分:1)

您可以使用git add命令将文件添加到提交中。例如,键入git add file.c,然后file.c将与下一个git commit一起提交。未添加的任何文件都不会被提交。提交后,只需添加其他文件并再次提交。

您可以通过键入git status来查看为提交暂存的文件。要添加所有文件,请键入git add .

答案 4 :(得分:1)

也许我不明白这个问题,只需添加一些文件并进行提交,然后重复这个过程。

git add file1 file2
git commit -m "Comment first commit comment"
git add file3 ...

答案 5 :(得分:0)

如果要提交已修改文件子集中的所有更改,请使用git add <file1> ...。如果您想要选择里面哪些更改文件被添加到索引中,请使用git add -i [<file1> ...]或恕我直言更多usefule git add -p [<file1> ...],这样您甚至可以修改在没有更改工作副本中的状态的情况下应用于索引的差异。

最后,如果您是Vim用户,则绝对必须知道并使用fugitive