我有时会检查一些以前版本的代码来检查或测试。如果我希望修改以前的提交,我已经看到了关于该怎么做的说明——但假设我不做任何更改。当我完成了例如git checkout HEAD^,我如何回到分支的顶端?..git日志不再显示我最近提交的SHA。
当前回答
你可以使用以下git命令之一:
git checkout master
git checkout branchname
其他回答
刚才碰到这个问题,有什么想补充的
转到最近的提交:
git checkout $(git log --branches -1 --pretty=format:"%H")
解释:
Git log——branches显示所有本地分支的提交日志 -1 limit to one commit→最近一次提交 ——pretty=format:"%H"格式,只显示提交哈希 Git checkout $(…)使用subshell的输出作为checkout的参数
注意:
这将导致一个分离的头(因为我们直接签出到提交)。这可以通过使用sed提取分支名称来避免,如下所述。
转到最近一次提交的分支:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
解释:
Git log——branches显示所有本地分支的提交日志 -1 limit to one commit→最近一次提交 ——pretty=format:“%D”格式,只显示引用名 | sed 's/。*, //g'忽略除最后一个以外的所有引用(*) Git checkout $(…)使用subshell的输出作为checkout的参数
*) HEAD和远程分支按字母降序排列在前面,本地分支按字母降序排列在最后,因此剩下的将是按字母降序排列的第一个分支名称
注意:
如果该提交有多个分支,则始终只使用(按字母顺序)第一个分支名称。
不管怎样,我认为最好的解决方案是显示最近提交的引用名称,以知道签出到哪里:
git log --branches -1 --pretty=format:'%D'
例如,为该命令创建别名git top。
对于git版本>=2.33.0
git switch -d -
允许您检出到先前检出的提交。因此,您可以通过在两次提交之间切换来来回执行。请注意-d标志允许您在分离状态下浏览提交。
如果您有一个不同于master的分支,一个简单的方法是签出该分支,然后签出master。瞧,你又回到了大师的顶端。也许有更聪明的方法……
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>
Git checkout master
大师是秘诀,还是最后的承诺。Gitk只会显示你当时在树中的位置。Git reflog将显示所有提交,但在本例中,您只需要提示,因此Git checkout master。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别