如何创建远程 Git 分支?

我创建了一个本地分支,希望向上游 “推送”。关于堆栈溢出,这里有一个类似的问题,即如何跟踪新创建的远程分支。

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

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

更新使用 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

如先前的回答所述,

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

足以推动本地分支机构。

您的同事可以使用以下命令拉出所有远程分支(包括新分支):

git remote update

然后,要在分支上进行更改,通常的流程是:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

根据当前分支在本地创建一个新分支:

git checkout -b newbranch

像往常一样进行任何更改。然后,将其推向上游:

git push -u origin HEAD

这是一种快捷方式,可将当前分支推送到origin上具有相同名称的分支并对其进行跟踪,这样您以后就无需指定origin HEAD了。

如果要从当前分支创建分支

git checkout -b {your_local_branch_name}

您要从远程分支机构分支,可以尝试

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

如果完成更改,则可以添加文件。

git add -A or git add <each_file_names>

然后在本地进行提交

git commit -m 'your commit message'

当您想推送到远程仓库时

git push -u origin <your_local_branch_name>

一起将

git checkout -b bug_fixes

或如果您想从远程分支创建分支,请说发展

git checkout -b bug_fixes起源 / 开发

您可以通过以下方式推送到分支以进行远程回购

git push -u origin bug_fixes

每当您想从任何其他分支更新分支时,请说master

git pull origin master

如果您实际上只想创建远程分支而没有本地分支,则可以这样做:

git push origin HEAD:refs/heads/foo

它会将您的 HEAD 的任何内容推到远程上不存在的foo分支。

最简单的解决方案... Drumm Roll ... git version 2.10.1(Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes, and do a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

注意:您刚在本地环境中创建的分支,以及您要推送的远程不存在的分支, 必须具有相同的名称

首先,您在本地创建分支:

git checkout -b your_branch

然后远程创建分支:

git push --set-upstream origin your_branch

注意:这适用于最新版本的 git:

$ git --version
git version 2.3.0

干杯!

在本地计算机上创建分支,然后在此分支中切换:

$ git checkout -b [name_of_your_new_branch]

将分支推送到 github:

$ git push origin [name_of_your_new_branch]

如果要在分支中提交某些内容,请确保位于分支中。

您可以查看使用创建的所有分支:

$ git branch

这将显示:

* approval_messages
  master
  master_clean

为您的分支添加一个新的遥控器:

$ git remote add [name_of_your_remote]

将更改从提交推送到分支:

$ git push origin [name_of_your_remote]

当官方存储库中的原始分支已更新时,更新您的分支:

$ git fetch [name_of_your_remote]

然后,您需要申请合并更改,如果您的分支是从 development 派生的,则需要执行以下操作:

$ git merge [name_of_your_remote]/develop

删除本地文件系统上的分支:

$ git branch -d [name_of_your_new_branch]

要在文件系统上强制删除本地分支:

$ git branch -D [name_of_your_new_branch]

删除 github 上的分支:

$ git push origin :[name_of_your_new_branch]

这里所有信息

其他现有项目