Nat*_*ong 291 git git-checkout
我最近从SVN搬到了Git,对某些事情感到有些困惑.我需要通过调试器运行以前版本的脚本,所以我做了git checkout <previous version hash>并做了我需要做的事情.
现在我想回到最新版本,但我不知道它的哈希.当我输入时git log,我看不到它.
我怎样才能做到这一点?此外,是否有更简单的方法来更改版本,而不是键入哈希 - 类似"返回两个版本"或"按时间顺序排列最近"?
Ana*_*tts 355
git checkout master应该做的伎俩.要返回两个版本,您可以说类似git checkout HEAD~2,但最好根据该时间创建临时分支,所以git checkout -b temp_branch HEAD~2
Tho*_*mio 49
当您签出特定提交时,git会创建一个分离的分支.所以,如果你打电话:
$ git branch
Run Code Online (Sandbox Code Playgroud)
你会看到类似的东西:
* (detached from 3i4j25)
master
other_branch
Run Code Online (Sandbox Code Playgroud)
要返回主分支头,您只需要再次检查到主分支:
$ git checkout master
Run Code Online (Sandbox Code Playgroud)
此命令将自动删除分离的分支.
如果git checkout不起作用,您可能修改了分支之间冲突的文件.为了防止你丢失代码git需要你处理这些文件.你有三个选择:
存储您的修改(您可以稍后弹出):
$ git stash
Run Code Online (Sandbox Code Playgroud)放弃重置分离分支的更改:
$ git reset --hard
Run Code Online (Sandbox Code Playgroud)使用先前的修改创建一个新分支并提交它们:
$ git checkout -b my_new_branch
$ git add my_file.ext
$ git commit -m "My cool msg"
Run Code Online (Sandbox Code Playgroud)在此之后,您可以返回主分支(最新版本):
$ git checkout master
Run Code Online (Sandbox Code Playgroud)
ave*_*sko 33
这对我有用(我仍然在主分支上):
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
要返回最新版本:
git checkout <branch-name>
Run Code Online (Sandbox Code Playgroud)
例如,git checkout master或git checkout dev
我刚刚开始深入研究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
Run Code Online (Sandbox Code Playgroud)
关于相对版本,我发现这篇文章,但它只谈到旧版本,可能没有什么可以参考新版本.
这里的一些答案假设您在决定签出较早的提交之前就已经在master分支上。这并非总是如此。
git checkout -
Run Code Online (Sandbox Code Playgroud)
将使您回到先前所在的分支(无论它是否是主分支)。