git - push一个新的本地分支到远程Git repo并跟踪它

  显示原文与译文双语对照的内容

我试图寻找一个答案,但找不到这个特定需求的任何答案。 这是奇怪的。

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

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

  2. 将本地分支推送到远程仓库( 发布),但使它的可以跟踪,这样 git pullgit push 将立即工作。

我该怎么做?

编辑:我知道 --set-upstream 1.7中的,但这是一个post-creation操作。 我想在将分支推送到远程仓库时,找到一种类似的更改方式。

时间:

在最近的Git 1.7.0 + 中,你可以执行以下操作:


$ git checkout -b feature_branch_name
... edit files, add and commit.. .
$ git push -u origin feature_branch_name

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

于所有 you,这将推相关你的分支到远程,和set-upstream追踪 correctly:


git push --all -u

( 我知道不正是OP要求而一个简单one-liner推起一个新的分支到自己的回购)

没有 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

或者你可以手动编辑 .git/config 文件,以便跟踪这里分支的跟踪信息。


[branch"branchB"]
 remote = origin
 merge = refs/heads/branchB

使用 git publish-branch杂项工具中

编辑:好,没有 ruby,所以忽略安全措施 ! - 执行脚本的最后三行并创建bash脚本 git-publish-branch


#!/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 ,REMOTENAME通常是原始的( 你可以修改脚本以将它的作为默认的等等 。)

我假设你已经克隆了一个项目,例如:


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

  1. 然后在本地副本中创建一个新分支并查看:

    
    git checkout -b <newbranch>
    
    
  2. 假设你在服务器中创建了一个"git裸 --init"并创建了 myapp.git,你应该:

    
    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
    
  3. 之后,用户应该能够

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

注意: 我假设你有你的服务器启动并运行。 如果不是,就不能工作。 一个很好的如何在这里

添加

添加一个远程分支:


git push origin master:new_feature_name

检查是否一切正常( 获取来源并列出远程分支):


git fetch origin
git branch -r

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


git checkout -tb new_feature_name origin/new_feature_name

更新所有内容:

 
git pull

 

简单地说,创建一个新的本地 web 分支:


git branch <branch-name>

要将它的推送到英镑的远程仓库:


git push -u origin <branch-name>

...