How do I push a new local branch to a remote Git repository and track it too?
我希望能够执行以下操作:
基于其他(远程或本地)分支(通过
推动当地分支机构到远程存储库(发布),但使其可跟踪,因此
我该怎么做?
我知道1.7吉特的
在Git 1.7.0及更高版本中,您可以签出新的分支:
1 | git checkout -b <branch> |
编辑文件,添加并提交。然后,使用
1 | git push -u origin <branch> |
Git将在推送过程中设置跟踪信息。
如果您没有与其他人共享您的回购,这将有助于将您的所有分支推送到远程,并且
1 | git push --all -u |
(不完全符合OP的要求,但这条线路非常受欢迎)
如果你和其他人分享你的回购协议,这不是很好的形式,因为你会用你所有狡猾的实验分支阻塞回购协议。
在引入
如果创建新分支时使用:
1 2 | $ git checkout -b branchB $ git push origin branchB:branchB |
可以使用
1 2 | $ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchB |
或者,您可以手动编辑
1 2 3 | [branch"branchB"] remote = origin merge = refs/heads/branchB |
简单地说,要创建一个新的本地分支,请执行以下操作:
1 | git branch <branch-name> |
要将其推送到远程存储库,请执行以下操作:
1 | git push -u origin <branch-name> |
这里已经给出的解决方案略有变化:
基于其他(远程或本地)分支创建本地分支:
1 | git checkout -b branchname |
将本地分支推送到远程存储库(publish),但使其可跟踪,以便
1 | git push -u origin HEAD |
使用
我只是做
1 | git push -u origin localBranch:remoteBranchToBeCreated |
在已经克隆的项目上。
根据我在
我想你已经克隆了一个项目,比如:
1 | git clone http://github.com/myproject.git |
然后在本地副本中,创建一个新分支并签出它:
1 | git checkout -b <newbranch> |
假设您在服务器上创建了一个"git-bare--init"并创建了myapp.git,那么您应该:
1 2 | git remote add origin ssh://example.com/var/git/myapp.git git push origin master |
之后,用户应该能够
1 | git clone http://example.com/var/git/myapp.git |
注意:我假设您已经启动并运行了服务器。如果不是的话,就不起作用了。这里有一个很好的操作方法。
补充添加远程分支:
1 | git push origin master:new_feature_name |
检查是否一切正常(获取源站并列出远程分支):
1 2 | git fetch origin git branch -r |
创建本地分支并跟踪远程分支:
1 | git checkout -tb new_feature_name origin/new_feature_name |
更新所有内容:
1 | git pull |
编辑过时的,只需使用
使用william的其他git工具(gitorious repo和clone)中的
好吧,没有Ruby,所以-忽略安全措施!-取脚本的最后三行,创建一个bash脚本,
1 2 3 4 5 6 7 8 | #!/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} |
然后运行
通过从现有分支分支分支来创建新分支的步骤
1 | git checkout -b <new_branch> |
然后使用
1 | git push -u origin <new_branch> |
这将创建并推动所有本地提交到新创建的远程分支
对于1.7之前的Gitlab版本,请使用:
1 | git checkout -b name_branch |
(名称ou branch,例如:
要将其推送到远程存储库,请执行以下操作:
1 | git push -u origin name_new_branch |
(名称ou new ou branch,示例:
我创建了一个别名,这样每当我创建一个新分支时,它都会相应地推送和跟踪远程分支。我在
1 2 3 4 5 6 | # Create a new branch, push to origin and track that remote branch publishBranch() { git checkout -b $1 git push -u origin $1 } alias gcb=publishBranch |
用法:只需键入
基于这里的回答,我将这个过程包装成一个简单的bash脚本,当然它也可以用作git别名。
对我来说重要的一点是,这会提示我在提交之前运行单元测试,并在默认情况下以当前分支名称传递。
1 2 3 4 5 6 7 8 9 10 11 | $ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} e.g. git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin |
Git_Push_New_分支机构.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function show_help() { IT=$(CAT <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} e.g. git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo"$IT" exit } if [ -z"$1" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if ["$1" =="OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH |
要上载公共存储库的本地分支,需要将
1 | git push -u origin branchname |