我正在尝试诊断一个别名问题,该别名允许用户签出文件的最新提交以破坏他们最近的更改。我不想硬重置,只需将旧版本签入新一轮提交即可。
如果文件名没有被错误地传递,不要将整个 repo 分支到 HEAD^ 也很重要,因此 sh 的 -u 开关(如果 $1 没有填充某些东西,则阻塞)。
如果这很重要,我们都在同一个存储库中工作,我是唯一一个不是完整新手的用户,但无论如何我都不是 git 大师。
我们在 Windows 7 上使用 MsysGit 1.8.4。
这是别名:
[alias]
back1=!sh -uc 'git checkout HEAD^ $1 ' -
但是,这有时会出现错误,例如
$ git back0 format_tests.sas
error: pathspec 'format_tests.sas' did not match any file(s) known to git.
但是,如果我跑
$ git checkout HEAD^ format_tests.sas
直接从命令行,它工作正常。它似乎也可以在另一个 git 存储库上进行测试。
我觉得这可能是一个引用问题,但我现在不知道。
我不使用下面介绍的方法的原因是,如果我在没有文件的情况下运行命令,我会得到如下内容,这在我们的新手环境中是不行的(为什么我使用带有“-u”的 shell 命令首先切换):
testgit.git/ (j=0,r=0)$ git back1
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
a77dfed hlksdj;
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch new_branch_name a77dfed
HEAD is now at 954f639... blakjsd
感谢您的关注和帮助!