Answers:
git checkout master
应该可以。要返回两个版本,您可以说类似git checkout HEAD~2
,但最好根据该时间创建一个临时分支,因此git checkout -b temp_branch HEAD~2
git log
相对于该点将显示?当我结帐master时,将指针移到master分支的最新版本吗?
git checkout
是移动HEAD的一种方式。当您分离HEAD时,将其直接指向给定的提交;当您再次签出母版时,它将指向母版。(很多命令git log
实际上都包含一个修订范围,默认为HEAD。)
当您签出到特定提交时,git会创建一个分离的分支。因此,如果您致电:
$ git branch
您将看到类似以下内容:
* (detached from 3i4j25)
master
other_branch
要返回master分支头,您只需要再次签出到master分支即可:
$ git checkout master
此命令将自动删除分离的分支。
如果git checkout
不起作用,则可能是因为分支之间的修改文件冲突。为了防止丢失代码,git需要您处理这些文件。您有三种选择:
存储您的修改(以后可以将其弹出):
$ git stash
放弃更改以重置分离的分支:
$ git reset --hard
使用先前的修改创建一个新分支,并提交它们:
$ git checkout -b my_new_branch
$ git add my_file.ext
$ git commit -m "My cool msg"
之后,您可以返回到您的master分支(最新版本):
$ git checkout master
要返回最新版本:
git checkout <branch-name>
例如,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
关于相对版本,我发现了这篇文章,但是它只谈论较旧的版本,可能没有什么可以引用较新的版本。
当您返回以前的版本时,
$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32
即使在这种情况下,也可以使用此命令查看功能日志(哈希)。
$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...
master
可以替换为另一个分支名称。
然后签出,您将可以返回到该功能。
$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34
使用Git 2.23+(2019年8月)时,最佳做法是使用git switch
而不是混乱的git checkout
命令。
要基于旧版本创建新分支:
git switch -c temp_branch HEAD~2
返回当前的master分支:
git switch master
git checkout master
这正是我从分支机构切回的方式。这是否意味着当我签出以前的版本时,实际上是在创建分支?