如何回到Git的最新版本?
我最近从SVN转移到Git,对于某些东西有些困惑。 我需要通过一个debugging器运行以前版本的脚本,所以我做了git checkout <previous version hash>
,并做了我需要做的事情。
现在我想回到最新版本,但我不知道它的散列。 当我inputgit log
,我没有看到它。
我怎样才能做到这一点? 另外,有没有更容易的方法来改变版本,比input哈希 – 就像“回到两个版本”或“去按时间顺序最近”?
git checkout master
应该做的伎俩。 要回两个版本,你可以说像git checkout HEAD~2
git checkout -b temp_branch HEAD~2
,但更好地创build一个临时分支的基础上,所以git checkout -b temp_branch HEAD~2
当你签出一个特定的提交时,git创build一个分离的分支。 所以,如果你打电话给:
$ git branch
你会看到像这样的东西:
* (detached from 3i4j25) master other_branch
要回到主分支头,您只需要再次签出您的主分支:
$ git checkout master
该命令将自动删除分离的分支。
如果git checkout
不起作用,你可能已经修改了分支之间冲突的文件。 为了防止你丢失代码,git需要你处理这些文件。 你有三个select:
-
存储你的修改(你可以稍后popup):
$ git stash
-
放弃重置分离分支的更改:
$ git reset --hard
-
用以前的修改创build一个新的分支并提交它们:
$ git checkout -b my_new_branch $ git add my_file.ext $ git commit -m "My cool msg"
在此之后,您可以返回到您的主分支(最新版本):
$ git checkout master
这对我来说(我仍然在主分支):
git reset –hard origin / master
我刚开始深入研究git,所以不确定我是否理解正确,但是我认为OP的问题的正确答案是可以运行git log --all
的格式规范: git log --all --pretty=format:'%h: %s %d'
。 这将当前签出的版本标记为(HEAD)
,您可以从列表中抓取下一个版本。
顺便说一句,像这样的一个别名添加到你的.gitconfig
格式稍微好一点,你可以运行git hist --all
:
hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph
关于相关版本,我发现这篇文章 ,但它只谈旧版本,可能没有什么可以参考较新的版本。
首先,您可以使用分支名称签出。
我知道有几种方法来移动HEAD,但是我会把它留给git专家来列举它们。
我只是想build议gitk --all
– 所有 – 我发现它非常有用的开始与git。
当你回到以前的版本,
$ git checkout HEAD~2 Previous HEAD position was 363a8d7... Fixed a bug #32
即使在这种情况下,您也可以使用此命令查看function日志(哈希);
$ git log master --oneline -5 4b5f9c2 Fixed a bug #34 9820632 Fixed a bug #33 ...
master
可以用另一个分店的名字来代替。
然后检查它,你将能够回到function。
$ git checkout 4b5f9c2 HEAD is now at 4b5f9c2... Fixed a bug #34
一个更优雅和简单的解决scheme是使用
git stash
它将返回到最重要的本地版本的分支,并保存您的更改藏匿,所以如果你想撤消这个行动做:
git stash apply
要返回到最新版本:
git checkout <branch-name>
例如, git checkout master
或git checkout dev