编辑要提交的更改

时间:2018-01-03 18:03:58

标签: git git-commit git-stage

我在一个文件中提交了一些更改,已添加(但未提交)。该文件在当前目录中有其他更改,不会提交。 但是在实际提交之前,我需要编辑一些即将提交的更改。明确?我是这么想的!

» git status
On branch dev
Your branch is ahead of 'origin/dev' by 2 commits.
  (use "git push" to publish your local commits)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   myfile  <-- I need to edit this

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:   myfile  <-- I do not care about this (for this specific commit)

所以,在实际提交之前,我想改变分阶段的变化。 git commit -i让我手动编辑补丁。我可以以某种方式直接在分阶段的更改中使用此功能吗?

解决此问题的另一种方法是隐藏非分段更改,编辑工作目录中的文件并添加这些更改。但我的印象是,当我解开时,我会发生冲突。

2 个答案:

答案 0 :(得分:0)

这似乎正是为git add -p所做的。它允许您分别选择和添加文件的片段。您可以继续编辑文件,然后输入命令git add <file path> -p。这将打开您的默认git编辑器,并允许您选择要进行提交的更改。

Git会自动拆分您可以添加的摘要(通过按y),而不是添加(按n)或进一步拆分为单独的摘要(按{{1} })。

谷歌搜索给了我link这似乎解释了它是如何工作的以及如何使用它。

当然,隐藏你当前的变化也是一种选择,但正如你所说,这可能导致冲突,这些冲突之后必须解决。但是,如果你在弹出藏匿之前提交并推送了其他更改,那么这不应该造成任何问题(除了消耗的时间)。

答案 1 :(得分:0)

如果我说对了,情况是:

您有一个文件xxx,并且上演了一些内容,例如:

line 1
line 2

此外,您已在此文件中添加了更多内容但未上演,例如:

line 3
line 4

您不想添加到舞台上。

现在,您要编辑分段内容,例如删除line 2

如果我的描述正确,git reset -p是您所需要的。