早上好,搜索但没找到,因此问这里。 :)
我遇到如下情况:origin
指向一个项目
在github中,fork1
指向我在github和fork2
上的fork
那是指着配偶的分叉。
因此,如果我这样做
$ git checkout master
# perform various stuff
$ git push
所有更改都将转到origin/master
(到目前为止一直很好)。
现在我想拿fork1 master并更新它。我做了
$ git checkout master
$ git pull
$ git checkout -b fork1-master fork1/master
$ git merge
$ git push
我的印象是它应该推动当前的变化
fork1/master
。相反,它正在创建一个新的分支:fork1/fork1-master
。
我在fork1 / master中找到合并的唯一方法就是
$ git checkout master
$ git pull
$ git checkout -b fork1-master fork1/master
$ git merge
$ git push fork1 fork1-master:master
这是预期的行为还是我做错了什么?
谢谢你 的Davide
答案 0 :(得分:0)
当你
git checkout -b fork1-master fork1/master
您创建了一个跟踪fork1-master
远程分支的fork1/master
分支。
为了能够以简单的方式推送git,默认情况下需要(即以简单模式)分支名称将是相同的。这通常是可取的,但在您的情况下是不可取的,因为您显然希望为master
保留名称origin/master
。
所以你要么像你一样继续手动推送,
on fork1-master> git push fork1 HEAD:master
或者你必须告诉git更改默认值并始终推送到上游分支。这可以通过将配置中的 push.default 设置为upstream
来完成。
以下是在命令行而不是config上执行此操作的方法:
on fork1-master> git -c push.default=upstream push
它会告诉git识别你在遥控器上跟踪的分支并将你的分支推到那里。