git将master合并到当前分支的快捷方式

时间:2018-12-19 20:44:00

标签: git

所以有时候我在分支上工作,我想引入自分支创建以来对原点/主节点所做的更改。通常,仅做git merge master是不够的,因为本地主服务器可能没有远程主服务器的更改,因此我发现自己必须这样做:

# save any uncommitted changes (if there are any)
git stash  
# update master first:
git checkout master
git pull
# back to where we were:
git checkout <previous branch>
git stash pop # omit if git stash not done
# and finally the actual merge: 
git merge master

当然有一个较短的方法,只有一个或两个git命令?

3 个答案:

答案 0 :(得分:3)

一个命令:

git pull origin master:master

让我将其拆分并解释。 git pull master:master等同于

git fetch origin master:master
git merge master

git fetch origin master:master的意思是:从远程origin分支master获取新提交,并更新本地分支master指向与远程master相同的提交。这就是你要做的

git checkout master
git pull
git checkout <previous branch>

但速度更快(无需2次结帐)。

如果需要隐藏,请添加--autostash

git pull --autostash origin master:master

答案 1 :(得分:1)

我经常面对您的情况,并且很快就厌倦了像您描述的那样来做它,所以我创建了别名master而不进行切换。

我在[alias]的{​​{1}}部分中创建了一个别名,以将~/.gitconfig(或任何分支)更新为master,而无需检出。

以下是此别名的简单(但不安全)版本:

origin/master

您通过输入 ff = !sh -c 'git update-ref refs/heads/$1 origin/$1' - 来调用它,并且它使用git ff some_branch将该分支设置为update-ref

定义此别名后,您的操作将变为:

origin/some_branch

但是,这是不安全的,因为即使不等同于快速合并,它也会进行更新,因此可能会丢弃某些提交。这是此别名的第二个版本,带有保护措施,因此它只能进行快速转发,而在其他情况下则拒绝执行任何操作:

git fetch
git ff master
git merge master

我经常发现不安全别名也很有用,特别是当我确实想放弃分支的本地副本上的某些工作时,所以我也将其保留为 # Do a fast-forward merge on the branch specified as argument, as long # as it's safe: $1 is not checked out, and a fast-forward merge is possible. ff = !bash -c '\ if [[ `git symbolic-ref HEAD` = refs/heads/$1 ]] ";" then \ echo $1 is checked out, use pull or merge instead. ";" \ else \ git update-ref refs/heads/$1 origin/$1 `git merge-base origin/$1 $1` ";" \ fi' -

ff-force

我的两个别名的已知限制:遥控器必须称为 # Not safe - reset the specified branch to its state on origin, even if it's not a fast-forward merge and potentially throws away some commits ff-force = !sh -c 'git update-ref refs/heads/$1 origin/$1' -

答案 2 :(得分:0)

我愿意

  1. git fetch origin develop-获取最新更改,但不要将其合并到本地develop-
  2. git merge origin/develop-合并