当前位置 : 主页 > 手机开发 > 无线 >

如何在没有签出文件或更新任何引用的情况下将HEAD移动到Git中的其他分支?

来源:互联网 收集:自由互联 发布时间:2021-06-10
我通常通过echo ref来做到这一点:refs / heads / new_branch的.git / HEAD.怎么做得好? 一些用例: 您从其他位置导入了源代码,现在想将其提交到Git(但不是当前分支). 你的.git只是一个符号链接
我通常通过echo ref来做到这一点:refs / heads / new_branch>的.git / HEAD.怎么做得好?

一些用例:

>您从其他位置导入了源代码,现在想将其提交到Git(但不是当前分支).
>你的.git只是一个符号链接,现在你正在从其他workdir访问它(我已经知道了git-new-workdir来正确地执行它)

因此,您希望手动选择下一个提交应具有的父级以及应由其更新的ref.

这是git plumbing命令

git symbolic-ref HEAD refs/heads/existing_branch

你不能进入分离头状态(它需要一个ref,而不是一个SHA).但是,您可以切换到不存在的引用(也称为未知分支).为了防止这种情况,也许使用以下git别名:

git config --global alias.switch '!f() { git show-ref --heads --verify "refs/heads/$1" && git symbolic-ref -m "switch to branch $1 not touching workdir" HEAD "refs/heads/$1"; }; f'

然后你可以像git switch existing_branch一样使用它.请注意,你需要选项-m来查看git reflog中的条目,这通常是你想要的.

笔记:

> git reflog HEAD显示HEAD的ref日志(您将再次看到选项-m中给出的注释).完整文件(包括之前的SHA,如果你想找到一些丢失的提交)存储在$(git rev-parse –git-dir)/ logs / HEAD(对于HEAD)> git show-ref –heads列出了你可以在RHS上使用的所有引用.如别名所示,您可以将它与–verify一起使用来检查参数是否是正确的(现有)引用(也称为分支).>注意:git symbolic-ref可以指向任何其他引用,如refs / tags /或refs / remotes /甚至包含在refs中.这可能不是你想要的,因此别名将其限制为refs / heads /.

网友评论