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

时间:2009-10-05 09:21:04

标签: git branch git-branch

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

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

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

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

23 个答案:

答案 0 :(得分:3525)

首先,在本地创建分支:

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选项设置上游分支:

  

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

答案 1 :(得分:836)

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

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本地到远程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

答案 2 :(得分:291)

Simple Git 2.0+解决方案:

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

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

我添加了这个,所以现在我可以用

上推一个新的分支
$ git push -u

-u将跟踪同名的远程分支。现在使用此配置,您将自动猜测对git push的远程引用。来自git.config documentation

  

push.default

     

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

     

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

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

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

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

$ git config --global push.default current

答案 3 :(得分:72)

如前面的答案中所述,

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

足以推动本地分支。

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

git remote update

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

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

答案 4 :(得分:58)

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

git checkout -b newbranch

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

git push -u origin HEAD

这是一个快捷方式,可以将当前分支推送到origin上的同名分支并跟踪它,以便您以后不需要指定origin HEAD

答案 5 :(得分:37)

如果你想在没有本地的情况下创建远程分支,你可以这样做:

git push origin HEAD:refs/heads/foo

它会将您的HEAD推送到遥控器上不存在的分支 foo

答案 6 :(得分:29)

最简单的解决方案...... Drumm Roll ... git版本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

N.B。 - 您刚刚在本地环境中创建的分支,以及您尝试推送的远程不存在分支,必须具有相同的名称

答案 7 :(得分:29)

如果要从当前分支

创建分支
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

答案 8 :(得分:23)

首先在本地创建分支:

git checkout -b your_branch

然后远程创建分支:

git push --set-upstream origin your_branch

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

$ git --version
git version 2.3.0

干杯!

答案 9 :(得分:16)

  

在本地计算机上创建分支并切换到此分支:

    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissViewControllerAnimated:YES completion:nil];
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

  [receiptimage setImage: image forState:UIControlStateNormal];

    [receiptButton setTitle:@"Detach" forState:UIControlStateNormal];
    receiptButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14.0f];
    receiptButton.titleLabel.textAlignment = NSTextAlignmentCenter;
    [receiptButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 10, 5)];

}

在github上推送分支:

$ git checkout -b [name_of_your_new_branch]

如果您想在分支机构中提交某些内容,请务必进入您的分支机构。

您可以使用以下命令查看所有分支:

$ 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]

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

$ git merge [name_of_your_remote]/develop

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

$ git branch -d [name_of_your_new_branch]

删除github上的分支:

$ git branch -D [name_of_your_new_branch]

Here All Information

Other Existing project

答案 10 :(得分:12)

[快速解答]

您可以在2个陡峭的山坡上完成它:

1。。使用checkout创建本地分支:

git checkout -b yourBranchName

2。。使用push命令自动创建分支并将代码发送到远程存储库:

git push -u origin yourBanchName
  

有多种方法可以做到这一点,但我认为这种方法非常简单。

答案 11 :(得分:11)

从现有分支创建本地分支(可以是master / develop / any-other-branch)。

  

git checkout -b branch_name

将其推送到远程

  

git push -u remote_name local_branch_name:remote_branch_name

下面,

  1. -u:设置上游分支
  2. remote_name:git在创建存储库时默认将名称设置为“origin”。但是,这可以更改为不同的任意名称。
  3. local_branch_name:是要推送的本地分支的名称。
  4. remote_branch_name:是我们想要在远程创建的远程分支的名称。
  5. 如果我们删除本地和远程分支名称,它将具有格式

      

    git push -u remote_name branch_name

    这会将本地分支推送到远程并且具有与本地分支branch_name相同的名称。本地分支也将跟踪远程分支。

答案 12 :(得分:8)

我知道这个问题得到了很好的回答,但只是想列出我创建新分支“myNewBranch”并推送到远程(我的情况下为“origin”)并设置跟踪的步骤。考虑这个“TL; DR”版本:)

# create new branch and checkout that branch
git checkout -b myNewBranch
# now push branch to remote 
git push origin myNewBranch
# set up the new branch to track remote branch from origin
git branch --set-upstream-to=origin/myNewBranch myNewBranch

答案 13 :(得分:8)

现在使用git,只需输入正确的分支

即可

git push --set-upstream origin <remote-branch-name&GT;

和git为你创建原始分支。

答案 14 :(得分:6)

只想在以下时间添加:

git checkout -b {branchName}

创建一个新分支,它还会检出该分支/使其成为当前分支。如果由于某种原因,您想要做的就是截取分支但不使其成为当前分支,那么您将使用以下命令:

git branch {branchName}

在第一个命令中,&#34; checkout&#34;使所述分支成为您当前的分支,以及&#34; -b&#34;意思是:这个分支还没有存在,所以请为我做。

答案 15 :(得分:5)

如何通过源树

 1: Open SourceTree, click on Repository -> Checkout
 2 :Click on Create New Branch
 3: Select branch where from you want to get code for new branch 
 4: Give your branch name
 5: Push the branch  (by click on Push button)

答案 16 :(得分:5)

如果新创建的分支不是从同一个repo中生成的话,

git push -u <remote-name> <branch-name>不起作用,即如果你没有使用git checkout -b new_branch创建新分支,那么这将不起作用。< / p>

例如,我在本地克隆了两个不同的存储库,我不得不将repo2 / branch1复制到repo1 /然后推送它。

This链接帮助我将我的本地分支(从另一个仓库克隆)推送到我的远程仓库:

答案 17 :(得分:3)

以下是通过Egit在eclipse中进行的操作。

1)转到“Git Repository Exploring”视图并解释要为其创建分支的git项目。在Brances下 - &gt; Local ..选择要为其创建分支的分支(在我的情况下,我选择了master ..如果您愿意,可以选择另一个分支)..然后右键单击并单击Create Branch选项..并选择checkout此项目选项,然后单击完成按钮。

2)现在从项目资源管理器中选择项目..右键单击然后团队 - &gt;推分支。

将创建一个新的远程分支。您可以将分支的名称提供给您的同事,以便他们可以将其拉出来。

答案 18 :(得分:2)

你可以简单地,

  1. git checkout -b 你的新分支名称
  2. git 添加。
  3. git push origin 你的新分支名称

你可以在相关的 git repo 下看到你的分支代码

干杯!! :)

答案 19 :(得分:0)

我用这个,很方便:

git config --global alias.mkdir '!git checkout -b $1; git status; git push -u origin $1; exit;'
  

用法:git mkdir NEW_BRANCH

您甚至不需要git status;也许,我只是想确保一切顺利...

您可以使用单个命令同时拥有LOCAL和REMOTE分支。

答案 20 :(得分:0)

我已通过将其添加到bash ~/.profile中来解决了这个问题:

function gitb() { git checkout -b $1 && git push --set-upstream origin $1; }

然后启动一个新的本地+远程分支,我写道:

gitb feature/mynewbranch

这将创建分支,并且会进行第一次推送,不仅是为了进行设置跟踪(以便以后的git pullgit push无需额外的参数即可工作),而且实际上是在确认目标存储库中没有这样的分支。

答案 21 :(得分:0)

在此示例中,我只有两个本地优先的分支:origin和mobile-test。

对我来说什么都没有用,直到我在命令行中使用它在远程分支中实际显示更新的文件。

git push --set-upstream origin mobile-test

答案 22 :(得分:0)

如果您已使用--single-branch克隆当前分支,请使用它从当前分支创建一个新分支:

git checkout -b <new-branch-name>
git push -u origin <new-branch-name>
git remote set-branches origin --add <new-branch-name>
git fetch