Eclipse:"Replace with branch, tag or version" 没有按预期工作

Eclipse: "Replace with branch, tag or version" does not work as expected

我正在尝试用另一个分支中的目录替换当前分支中存在的目录。 Eclipse 无法删除原来位于原始分支但不位于其他分支的文件。

示例:

Current branch: A
Directory: src

在此分支 src 中有一个名为 NoLongerRequired.java

的文件
Another branch B
Directory: src

在此分支 src 中没有名为 NoLongerRequired.java

的文件

我在分支 A 上,想删除 A's src 目录并将其替换为 B's src 目录 所以我 select src 目录并转到 Eclipse 中的 Replace with Branch Tag or Commit 选项并选择分支 B.

但是,我仍然在 src 目录中看到 NoLongerRequired.java

看起来实施的操作与 git checkout B -- src/ 类似:B 中列出的文件已检出,但 A 中跟踪的文件而非 B 中跟踪的文件] 保持原状。

如果您的计算机上安装了 git,版本为 2.25 或更高,您可以使用 git restore 从命令行执行此操作:

# use --staged to set B's content in the staging area :
git restore --source B --staged -- src/

# --worktree to set the content on disk :
git restore --source B --worktree -- src/
# a word of warning : if you have uncommitted changes in src/, this may delete
# files which aren't committed in git yet.

# you can combine both options in one call :
git restore --source B --staged --worktree -- src/

git restore 帮你删除。