如何检查以前的提交后回到最新的提交?
我有时会检查一些以前版本的代码来检查或testing。 如果我想修改以前的提交,我已经看到了怎么做的说明 – 但是假设我没有做任何修改。 在完成了git checkout HEAD^
,我该如何回到分支的顶端? git log
不再显示我最近提交的SHA。
如果你知道你想返回的提交是某个分支的头部,或者被标记了,那么你可以
git checkout branchname
您也可以使用git reflog
来查看过去您的HEAD(或其他参考)指向的其他内容。
编辑添加:
在新版本的Git中,如果你只运行git checkout
或者其他的东西来移动HEAD
一次,你也可以
git checkout -
切换回最后一次结帐前的位置。 这是由于类似于shell的习惯用法cd -
回到之前的任何工作目录。
git checkout master
主人是小费,还是最后一次提交。 gitk只会显示你当时在树中的位置。 git reflog会显示所有的提交,但在这种情况下,你只是想提示,所以git checkout master。
刚刚遇到这个问题,有一些补充
要去最近的提交:
git checkout $(git log --branches -1 --pretty=format:"%H")
说明:
git log --branches
显示所有本地分支提交的日志
-1
限制为一个提交→最近的提交
--pretty=format:"%H"
格式只显示提交散列
git checkout $(...)
使用subshell的输出作为签出的参数
注意:
这将导致一个分离的头虽然(因为我们直接签出提交)。 这可以通过使用sed
提取分支名称来避免,如下所述。
要转到最近一次提交的分支:
git checkout $(git log --branches -1 --pretty=format:'%D' |sed 's/HEAD -> \|tag: [^,]*\|,.*//g')
说明:
git log --branches
显示所有本地分支提交的日志
-1
限制为一个提交→最近的提交
--pretty=format:"%D"
格式只显示参考名称
|sed 's/HEAD -> \|tag: [^,]*\|,.*//g'
忽略HEAD,标记并提取多个分支名称中的第一个
git checkout $(...)
使用subshell的输出作为签出的参数
注意:
如果该提交有多个,这将始终只使用第一个分支名称。
无论如何,我认为最好的解决办法就是显示最近提交的ref名称,以知道在哪里签出:
git log --branches -1 --pretty=format:'%D'
例如,为该命令创build别名git top
。
看看graphics用户界面… gitk
它显示所有提交。 有时候工作起来比较容易… ^^
你可以使用下面的git命令之一:
git checkout master git checkout branchname
如果您的最新提交是在主分支上,您可以简单地使用
git checkout master