当我需要拉下 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)
是否存在任何功能?
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完全摆脱它。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |