我怎么做:
从另一个分支创建一个本地分支(通过 git 分支或 git checkout -b) 将本地分支推到远程存储库(即发布),但使其可追踪,以便 git pull 和 git push 工作。
我怎么做:
从另一个分支创建一个本地分支(通过 git 分支或 git checkout -b) 将本地分支推到远程存储库(即发布),但使其可追踪,以便 git pull 和 git push 工作。
当前回答
这里已经提供的解决方案的轻微变化:
创建一个本地分支,基于某些其他(远程或本地)分支: git checkout -b 分支名称 将本地分支推到远程存储库(发布),但使其可追踪,所以 git pull 和 git push 将立即运行 git push -u 起源 HEAD 使用 HEAD 是一个“手动的方式,将当前分支推到相同的名称在远程”。 来源: https://git-scm.com/docs/git-push 在 Git 条款中, HEAD (in)
其他回答
在 Git 1.7.0 或更高版本中,您可以查看一个新的分支:
git checkout -b <branch>
编辑文件,添加和承诺. 然后按下 -u (缩写为 --set-upstream) 选项:
git push -u origin <branch>
Git 在推时将设置跟踪信息。
在引入 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
基于这里的答案,我把这个过程作为一个简单的Bash脚本,当然也可以用作Git alias。
对于我来说,重要补充是,这促使我进行单位测试,然后默认地在当前分支名称中进行。
$ 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_branch.sh
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
如果你不分享你的repo与其他人,这是有用的推所有的分支到远程,并 -set-upstream跟踪正确为你:
git push --all -u
(不是OP想要什么,但这个单线是相当受欢迎的)
如果你正在与其他人分享你的repo,这不是一个很好的形式,因为你会用你所有的Dodgy实验分支来关闭repo。
我创建了一个标签,所以每当我创建一个新的分支,它将按下推和跟踪远程分支。
# 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
使用: 只是用 thuy/do-sth-kool 输入 gcb thuy/do-sth-kool 是我的新分支名称。