协慌网

登录 贡献 社区

你如何创建一个远程 Git 分支?

我创建了一个本地分支,我想在上游 “推”。 Stack Overflow 上有一个关于如何跟踪新创建的远程分支的类似问题。

但是,我的工作流程略有不同。 首先,我想创建一个本地分支,当我满意并希望共享我的分支时,我只会将其推送到上游。

  • 我该怎么办? (我的谷歌搜索似乎没有提出任何东西)。
  • 我如何告诉我的同事从上游存储库中取出它?

更新使用 Git 2.0,我在下面写了一个更简单的答案https//stackoverflow.com/a/27185855/109305

答案

首先,在本地创建分支:

git checkout -b <branch-name> # Create a new branch and check it out

将其推送到远程服务器时,将自动创建远程分支。因此,当您准备好它时,您可以这样做:

git push <remote-name> <branch-name>

其中<remote-name>通常是origin ,git 为您克隆的远程提供的名称。然后你的同事就会拉出那个分支,它会在本地自动创建。

但请注意,正式格式为:

git push <remote-name> <local-branch-name>:<remote-branch-name>

但是当你省略一个时,它假设两个分支名称是相同的。说到这一点,作为一个提醒 ,不要犯下仅指定的错误:<remote-branch-name> (带冒号),否则远程分支将被删除!

因此,随后的git pull将知道该怎么做,你可能会想要使用:

git push --set-upstream <remote-name> <local-branch-name>

如下所述, --set-upstream set --set-upstream选项设置上游分支:

对于每个最新或成功推送的分支,添加上游(跟踪)引用,由无参数 git-pull(1)和其他命令使用。

首先,您必须在本地创建分支

git checkout -b your_branch

之后,您可以在分支机构中本地工作,当您准备共享分支时,推送它。下一个命令将分支推送到远程存储库源并跟踪它

git push -u origin your_branch

队友可以通过以下方式联系您的分支机构:

git fetch
git checkout origin/your_branch

您可以继续在分支中工作并随时随地推送而不将参数传递给 git push(无参数 git push 会将 master 推送到远程 master,your_branch 本地到 remote your_branch 等等)

git push

队友可以通过提交推送到您的分支,然后明确推送

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

或者跟踪分支以避免 git push 的参数

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

简单的 Git 2.0 + 解决方案:

Git 2.0 开始,行为变得更加简单

您可以使用push.default = current配置 git 以push.default = current生活:

我添加了这个,所以现在我可以在上游推送一个新的分支

$ git push -u

-u将跟踪同名的远程分支。不使用此配置,您将自动猜测对 git push 的远程引用。从git.config 文档

push.default

如果没有明确给出 refspec,则定义 git push 应采取的操作。

push.default = current - 推送当前分支以更新接收端具有相同名称的分支。适用于中央和非中央工作流程。

对我来说,这是我日常 Git 工作流程的一个很好的简化。配置设置负责处理本地添加分支并希望远程创建的 “常规” 用例。另外,我可以通过执行git co remote_branch_name (与使用--set-upstream-to标志相反)轻松地从遥控器创建本地分支。

我知道这个问题并且接受的答案相当陈旧,但行为已经改变,因此现在存在配置选项以使您的工作流更简单。

要添加到全局 Git 配置,请在命令行上运行:

$ git config --global push.default current