Git中是否有最近被 checkout 的分支列表?

svdrlsy4  于 5个月前  发布在  Git
关注(0)|答案(3)|浏览(69)

当我需要下拉master并将其合并到我正在处理的分支中时,我已经厌倦了必须键入分支名称,以便在分支和master(或另一个分支)之间进行更改。
我想创建一个bash脚本,它将在我当前 checkout 的分支之前 checkout 我已经 checkout 的分支
如果我有两个分支masterbranch-1

git checkout master (initial branch) 
git checkout branch-1 (do work on branch-1, but need to merge master changes into branch-1)
git checkout master
git pull (pull master changes) (current branch is master, previous branch is branch-1)
git checkout branch-1 <-- replace this command with a command `git lastbranch` that checks out the branch I had open before this branch

字符串
基本上我只是在寻找我最近 checkout 的分行列表,从我的最后一个分行开始
所以如果我 checkout 了master,而在此之前我 checkout 了分支-1,列表将如下所示

master
branch-1
... etc


是否存在任何功能?

mec1mxoz

mec1mxoz1#

git checkout(或Git 2.23及更高版本中的git switch)有一个“previously checked out分支”的简写语法:

@{-1}

字符串
表示“一个前 checkout 的分支”,其中:

@{-2}


意思是“两年前 checkout 的分支”,依此类推。

git checkout -


@{-1}相同,简称@{-1}
(不过,没有一个方便的方法来列出这些。
也就是说,你可能做了太多的工作
如果你不使用master,你不需要更新它。
假设你正在处理分支feature,有人在origin上提交了新的master,你希望使用它们进行合并或变基。
你可以这样做:

# make sure everything is committed
$ git checkout master
$ git pull               # runs git fetch and then git merge
$ git checkout -         # back to feature
$ git merge master


但你可以这样做:

$ git fetch
$ git merge origin/master


如果使用变基工作流,则为:

$ git fetch
$ git rebase origin/master


请注意完全没有git checkout的步骤,我们不需要更新master;事实上,我们甚至根本不需要master,可以运行git branch -d master来完全解决它。

ni65a41a

ni65a41a2#

要检出以前检出的分支,可以使用破折号git checkout -
这同样适用于其他系统命令,如cd

kx1ctssn

kx1ctssn3#

使用git reflogdocs
这显示了HEAD所指向的所有不同引用(分支、标签等)的历史记录。这包括每次你 checkout 不同的分支、提交等。


的数据

相关问题