最近升级了Intellij IDEA的最新版 2018.1版本。发现git插件的push的逻辑有了变更,适应了好大一会。
旧的版本上,根据远程分支check out出一个本地分支时,git插件会自动设定本地分支的upstream branch,就像这样:
image.png
当我们提交代码的时候,由于master分支是被保护的,所以我们一般会先push到远程的一个分支上,然后再通过merge request将commit合到master分支里。
Intellij IDEA人性化的记录了本地分支和远程分支的对应关系,当你再次push的时候,Push Commits dialog 自动的将远程分支设定成你上次push的分支,例如这样:
image.png
但是新的版本中这个特性没了:
无论你push了多少次,每次新打开Push Commits dialog的时候,远程分支都显示的是upstream设定的分支。例如这样:
image.png
这是一个很影响效率的事情,我以为是他们出bug了呢,特意给Jetbrains提了一个bug:
https://youtrack.jetbrains.com/issue/IDEA-189922
得到的答案是:
We actually reverted the behavior. 2018.1 and further will not remember the last branch but will behave like git push on the command line.
So by default, it will select a branch depending on your git config settings.
So if you want to push to some specific branches (different from default upstream) specify e.g git config remote.<name>.push refs/heads/LocalBranch:refs/heads/remoteBranch
这就尴尬了,他们特意把这个特性删除了,有是一个开发人员替用户投票的惨案。
吐槽也没用,想办法补救一下吧,按照他说的,在git上设定一个push的映射关系:
git config remote.origin.push LocalBranch:remoteBranch
设定好后,重新打开Push Commits dialog:
image.png
但是这样做有一个问题,只能设定一个分支的映射关系,
如果我本地有多个分支的话,就不知道改怎么设置了,哪位清楚的话望告知。
网友评论