因此,这里有许多旧答案。我将向您展示我如何在 2021 年在一个分支上重新开始:
当您进行了数十次提交并更改了数十个文件并且您需要重置时
git checkout master
git pull origin master
git checkout -b feat-foo-v2 # make a second version of feat-foo branch
现在你有了一个新的分支。但是您可能仍然做了很多工作仍然很好,您只需要拉入 那些 文件。在您的 root git 目录中:
git checkout feat-foo -- path/to/file/to/be/used.java
现在您拥有来自旧分支的单个文件的副本。多做几次,旧的分支就会过时。现在您可以随意删除该分支,并将feat-foo-v2 重命名为feat-foo。
假设您有一个包含一些更改的文件,并且您只想提取其中的 一些 更改。我建议熟悉git checkout 上的--patch 选项:
git checkout -p feat-foo -- path/to/file.java
将打开一个对话框,允许您选择要保留的文件更改的部分。
当你不能只创建一个新分支时
出于某种原因,您只是迷恋于您的功能分支并且您不愿意或无法放弃它。您知道您需要重置一些文件,但您不需要重置整个文件。创建一个全新的分支实际上只是一个不必要的步骤。我们可以从 master 中提取 fresh 文件:
git checkout master -- path/to/file.java
现在一个文件被重置了!如果您只想重置文件的部分,--patch 应该以同样的方式工作。