如何设置具有不同拉/推上游的分支

Ale*_*lec 5 git version-control github git-fork

我有一个带有两个远程控制器的本地git repo:,upstream原始主repo和origin我的GitHub分支。

我想基于创建新分支upstream/master,将其推送到originPR,并定期从中引入新更改upstream/master

有没有一种方法可以设置我的分支机构,使其在默认情况下发生?即:

$ git checkout -b my-new-branch --some-other-flags
$ git maybe some other command
# branch 'my-new-branch' points to 'upstream/master' and is checked out
# make changes, git commit
$ git push  # pushes to origin/my-new-branch
$ git pull  # pulls from upstream/master
Run Code Online (Sandbox Code Playgroud)

Ale*_*lec 8

以下似乎有效:

git config push.default current && git config remote.pushdefault origin

然后,使用git checkout -b new-branch upstream/master.

git push推到origin/my-branchgit pull拉出upstream/master


对于基于其他本地分支而不是上游/主分支的分支,事情似乎有点棘手。我可以git config branch.autoSetupMerge always,但是分支会从它们开始的本地分支中拉出,而不是upstream/master. 或者我可以在创建分支时将上游设置为upstream/master显式-u。我不确定哪个更合适。

另一个烦恼是,当我签出有更改的分支时,git 有时会告诉我:

您的分支领先于 'upstream/master' 7 次提交。(使用“git push”来发布你的本地提交)

但A)它的罚款,我是我前进的上游,我等着合并在一个PR这些变化,以及B)更重要的是,git push将推动new-branch原点,而不是master在上游。

但这并不总是发生,所以我认为这里还缺少一些其他变量。


msc*_*ker 0

创建分支后,您需要将其推送到上游并进行设置,以便您local可以跟踪remote.

您可以按如下方式执行此操作(假设您已经在 master 分支中):

// Create and checkout the new branch
git checkout -b <your_branch_nane>

// Push new branch upstream and set it to track remote branch
git push -u origin <your_branch_name>
Run Code Online (Sandbox Code Playgroud)

这会将你的新分支推向上游;该-u参数将其设置为跟踪远程分支。论证-u只是--set-upstream论证的捷径。

您可以阅读有关使用远程分支的更多信息。