我如何将新的本地分支推送到远程Git存储库并对其进行跟踪?

问题描述 投票:4097回答:14

我希望能够执行以下操作:

  1. 基于其他(远程或本地)分支(通过git branchgit checkout -b)创建本地分支

  2. 推送本地分支到远程存储库(发布),但是进行可跟踪的,因此git pullgit push将立即运行。

我该怎么做?

我知道Git 1.7中的--set-upstream,但这是创建后的操作。我想找到一种将分支推送到远程存储库时进行类似更改的方法。

git repository git-branch git-push git-remote
14个回答
6341
投票

在Git 1.7.0及更高版本中,您可以签出一个新分支:

git checkout -b <branch>

编辑文件,添加并提交。然后push with the -u (short for --set-upstream)选项:

-u

Git将在推送过程中设置跟踪信息。


13
投票
对于1.7之前的GitLab版本,使用:

10
投票
我做了一个别名,以便每当我创建一个新分支时,它将相应地推送和跟踪远程分支。我将以下块放入git push -u origin name_new_branch 文件中:

5
投票
基于此处的答案,我将这个过程包装为一个简单的Bash脚本,当然也可以用作Git别名。

0
投票
您可以在2个陡峭的山坡上完成它:

-7
投票
要上载公共存储库的本地分支,您需要push到公共存储库,然后使用以下代码:

477
投票

如果您不与其他人共享您的仓库,这对于将分支机构的[[all推送到远程,并为您正确跟踪--set-upstream很有用:

git push -u origin <branch>
(不完全是OP的要求,但是这种单线很受欢迎)

如果您要与其他人共享您的存储库,这不是一个很好的形式,因为您将使用所有狡猾的实验分支阻塞该存储库。


146
投票
--set-upstream引入之前,没有git push --all -u 选项可以获取您想要的东西。您必须添加新的配置语句。

如果使用以下方法创建新分支:

git push -u

您可以使用git push命令来避免直接编辑$ git checkout -b branchB
$ git push origin branchB:branchB
文件。

git config

或者,您也可以手动编辑.git/config文件以使该分支具有跟踪信息。

$ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchB


123
投票
简单地说,要创建一个新的

local分支,请执行:

.git/config
要将其推送到

remote

存储库,请执行:[branch "branchB"] remote = origin merge = refs/heads/branchB

86
投票
这里已经给出的解决方案略有变化:

  1. 基于其他(远程或本地)分支创建本地分支:

    git branch <branch-name>

  2. 将本地分支推送到远程存储库(发布),但使其可跟踪,因此git push -u origin <branch-name> git checkout -b branchname 将立即起作用

    git pull

    使用git push是“将当前分支推送到遥控器上相同名称的简便方法”。资料来源:git push -u origin HEAD
    用Git术语来说,HEAD(大写)是对当前分支(树)顶部的引用。

    HEAD选项只是https://git-scm.com/docs/git-push的缩写。这将为当前分支添加上游跟踪参考。您可以通过查看.git / config文件来验证这一点:

    -u


41
投票
我只是做

--set-setupstream

通过一个已经克隆的项目。

Git在我在Enter image description here中所做的提交下创建了一个名为git push -u origin localBranch:remoteBranchToBeCreated 的新分支。

Edit:这会将您当前的本地分支(可能命名为remoteBranchToBeCreated)上游更改为localBranch。要解决此问题,只需键入:

localBranch
所以您当前的本地分支现在回溯了origin/remoteBranchToBeCreated

30
投票
我想您已经克隆了一个项目,例如:

git branch --set-upstream-to=origin/localBranch

  1. 然后在您的本地副本中,创建一个新分支并检出它:

    origin/localBranch

  • 假设您在服务器上进行了“ git裸露--init”并创建了myapp.git,则应该:

    git clone http://github.com/myproject.git

  • 此后,用户应该可以

    git checkout -b <newbranch>

  • NOTE:我假设您已启动服务器并正在运行。如果不是,它将不起作用。一个好方法是git remote add origin ssh://example.com/var/git/myapp.git git push origin master

    ADDED

    添加远程分支:

    git clone http://example.com/var/git/myapp.git

    检查是否一切都很好(获取源并列出远程分支):

    here

    创建本地分支并跟踪远程分支:

    git push origin master:new_feature_name

    更新所有内容:

    git fetch origin git branch -r


    23
    投票

    edit已过时,只需使用git checkout -tb new_feature_name origin/new_feature_name


    使用git pull 中的git push -u origin $BRANCHNAMEgit publish-branchWilliam's miscellaneous Git tools)。

    [确定,没有Ruby,所以-忽略安全措施! -使用脚本的最后三行并创建一个bash脚本,gitorious repo

    clone

    然后运行git-publish-branch,其中REMOTENAME通常是原点(您可以修改脚本以将原点作为默认值,等等...]

    23
    投票
    通过从现有分支分支创建新分支

    #!/bin/bash REMOTE=$1 # Rewrite this to make it optional... BRANCH=$2 # Uncomment the following line to create BRANCH locally first #git checkout -b ${BRANCH} git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} && git config branch.${BRANCH}.remote ${REMOTE} && git config branch.${BRANCH}.merge refs/heads/${BRANCH}

    然后使用以下方法将此新分支推送到存储库中>

    git-publish-branch REMOTENAME BRANCHNAME

    这将创建所有本地提交并将其推送到新创建的远程分支git checkout -b <new_branch>
    
    © www.soinside.com 2019 - 2024. All rights reserved.