0

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

» 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 让我手动编辑补丁。我可以以某种方式直接在分阶段更改上使用此功能吗?

解决此问题的另一种方法是存储非暂存更改,编辑工作目录中的文件并添加这些更改。但我的印象是,当我取消隐藏时,我会遇到冲突。

4

2 回答 2

1

如果我没听错的话,情况是:

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

line 1
line 2

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

line 3
line 4

您不想添加到舞台上。

现在,您要编辑暂存的内容,例如 remove line 2

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

于 2018-11-11T16:28:01.487 回答
0

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

Git 会自动将您的更改拆分为片段,您可以添加(按y)、不添加(按n)或进一步拆分为单独的片段(按s)。

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

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

于 2018-01-03T18:14:12.000 回答