0

TL;DR 如果分支名称相同,我无法使用 git checkout 还原文件。


当我发现一个有趣的问题时,我正在处理我的 GIT 存储库。我们有一个名为“build-upload”的分支,我们正在其中创建一个新的“上传”功能。我们还有一个名为“bin/build-upload”的文件,它是一个脚本,用于构建项目并将其上传到生产环境。

问题是我在“bin/”目录并修改了“build-upload”文件,我想恢复它。所以我输入

git checkout build-upload

结果是

amatiasq:~/repo/bin$ git checkout build-upload
M   bin/build-upload
Switched to branch 'build-upload'

我没有注意到结果,继续工作,却没有意识到我在另一个分支。幸运的是,在我提交新更改之前,我看到“bin/build-upload”已被修改,这导致我发现我切换了分支。

问题是。有没有办法防止这种歧义?如果我想切换分支或恢复文件,我如何在“结帐”时告诉 git?

4

3 回答 3

7

根据git help checkout,命令行中 a 之后的所有内容都--将被解释为路径,而不是分支或标签。所以,这可能应该做你需要的:

git checkout -- build-upload
于 2013-03-22T15:41:53.097 回答
3

您必须在路径部分之前放置一个“--”以消除分支名称的歧义。

git checkout <branch> -- <paths..>
于 2013-03-22T15:42:15.410 回答
2

您可以git checkout ./build-upload确保将build-upload其视为文件名。这类似于经典的 Unix 技巧,例如消除由 optionrm ./-r命名的文件的歧义。-r-r

于 2013-03-22T15:44:19.317 回答