Git 中是否有最近签出的分支列表?

Jak*_*134 1 git

当我需要拉下 master 并将其合并到我正在处理的分支中时,我已经厌倦了必须输入分支名称才能在分支和 master (或另一个分支)之间进行更改。

我想创建一个 bash 脚本,它将在我当前签出的分支之前签出我签出的分支

所以如果我有两个分支master并且branch-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
Run Code Online (Sandbox Code Playgroud)

基本上我只是在寻找我最近签出的分支的列表,从我的最后一个分支开始

因此,如果我已经签出了 master,并且在此之前我已经签出了branch-1,那么列表将如下所示

master
branch-1
... etc
Run Code Online (Sandbox Code Playgroud)

是否存在任何功能?

tor*_*rek 5

git checkout(或者git switch在 Git 2.23 及更高版本中)有一个“先前签出的分支”的简写语法:

@{-1}
Run Code Online (Sandbox Code Playgroud)

表示“该分支在一年前签出”,其中:

@{-2}
Run Code Online (Sandbox Code Playgroud)

意思是“该分支两年前签出”,等等。一个-本身:

git checkout -
Run Code Online (Sandbox Code Playgroud)

@{-1}简单来说,意思与 相同。

(不过,没有一种方便的方法来列出这些。)

也就是说,你可能做了太多的工作

如果您不使用它,则无需更新master

假设您正在分支上工作feature,并且有人在 at 上进行了新的master提交origin,并且您希望使用它们进行合并或变基。

可以这样做:

# 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
Run Code Online (Sandbox Code Playgroud)

但你可以这样做:

$ git fetch
$ git merge origin/master
Run Code Online (Sandbox Code Playgroud)

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

$ git fetch
$ git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

请注意完全缺少git checkout步骤。我们不需要更新master;事实上,我们根本不需要master,并且可以跑去git branch -d master完全摆脱它。