我希望能够做到以下几点:
基于其他(远程或本地)分支创建本地分支(通过
git branch
要么git checkout -b
)推送本地分支 到远程存储库(发布),但做到了 跟踪如此
git pull
和git push
会立即奏效。
我怎么做?
我知道 --set-upstream
在Git 1.7中,但这是一个创作后的动作。我想找到一种方法来在将分支推送到远程存储库时进行类似的更改。
我希望能够做到以下几点:
基于其他(远程或本地)分支创建本地分支(通过 git branch
要么 git checkout -b
)
推送本地分支
到远程存储库(发布),但做到了
跟踪如此 git pull
和 git push
会立即奏效。
我怎么做?
我知道 --set-upstream
在Git 1.7中,但这是一个创作后的动作。我想找到一种方法来在将分支推送到远程存储库时进行类似的更改。
在Git 1.7.0及更高版本中,您可以签出一个新分支:
git checkout -b <branch>
编辑文件,添加和提交。然后 推着 -u
(短缺 --set-upstream
) 选项:
git push -u origin <branch>
Git将在推送期间设置跟踪信息。
如果您不与他人分享您的回购,这对推送非常有用 所有 你的分支到遥控器,和 --set-upstream
正确跟踪您:
git push --all -u
(不完全是OP的要求,但这个单线很受欢迎)
如果你与其他人分享你的回购,这不是一个很好的形式,因为你会用你所有狡猾的实验分支堵塞回购。
在介绍之前 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
或者你可以手动编辑 .git/config
文件以获得此分支的跟踪信息。
[branch "branchB"]
remote = origin
merge = refs/heads/branchB
简单地说,创造一个新的 本地 分支,做:
git branch <branch-name>
把它推到了 远程 存储库,做:
git push -u origin <branch-name>
这里给出的解决方案略有不同:
基于其他(远程或本地)分支创建本地分支:
git checkout -b branchname
将本地分支推送到远程存储库(发布),但使其可跟踪 git pull
和 git push
会立即奏效
git push -u origin HEAD
运用 HEAD
是一种“将当前分支推送到远程同名的便捷方式”。资源: https://git-scm.com/docs/git-push
在Git术语中,HEAD(大写)是对当前分支(树)顶部的引用。
该 -u
选项只是简称 --set-setupstream
。这将为当前分支添加上游跟踪参考。您可以通过查看.git / config文件来验证这一点:
我想你已经克隆了一个项目,如:
git clone http://github.com/myproject.git
然后在本地副本中,创建一个新分支并检查它:
git checkout -b <newbranch>
假设您在服务器上创建了一个“git bare --init”并创建了myapp.git,您应该:
git remote add origin ssh://example.com/var/git/myapp.git
git push origin master
之后,用户应该能够
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
我只是这样做
git push -u origin localBranch:remoteBranchToBeCreated
在已经克隆的项目上。
Git创建了一个名为的新分支 remoteBranchToBeCreated
根据我的承诺,我做了 localBranch
。
编辑 过时,只需使用 git push -u origin $BRANCHNAME
使用 git publish-branch
从 威廉的杂项Git工具 (有礼的回购 和 克隆)。
好的,没有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 checkout -b <new_branch>
然后使用将此新分支推送到存储库
git push -u origin <new_branch>
这会创建所有本地提交并将其推送到新创建的远程分支 origin/<new_branch>