将本地Git分支推送到原点

时间:2010-06-24 11:22:06

标签: git

我正在使用两台机器并在第三台机器上创建原始仓库(原点可以从其他两台机器人访问,机器1和机器2之间没有直接连接)。

# Machine 1
$ git branch
  master
* testing
  cms

# Machine 2
$ git branch
* master

现在,我想将testing分支推送到原点并将其放在machine2上,因此最终的效果将是:

# Machine 2
$ git branch
* testing
  master

我试过了:

# Machine 1
$ git push origin testing

# Machine 2
$ git pull origin testing                # bunch of merge conflicts
$ git checkout -b testing origin/testing # errors too

现状是:

# Machine 1
$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/testing

怎么做?

我的下一个问题可能是:如何删除origin/testing分支?

4 个答案:

答案 0 :(得分:23)

不要使用git pull(提取和合并),请尝试git fetch(它不会尝试与机器2上的当前分支合并,并导致冲突):

# Machine 1
$ git push origin testing

# Machine 2
$ git fetch origin testing
$ git checkout -b testing origin/testing

答案 1 :(得分:16)

您已成功将测试分支推送到原点,所以现在您只需要将分支转到machine2。

不确定机器2上的回购状态,所以我会删除目录(或创建一个新的目录),然后在Machine2上克隆回购并结帐测试......

所以在Machine2中的空目录(新的或干净的):

$ git clone git@github/somewhere
$ git branch
* master

$ git checkout testing
# ...
# something about getting and switching
# ... 

$ git branch
* testing 
master

答案 2 :(得分:0)

原始海报说明:

  

我的下一个问题可能是:如何删除origin/testing分支?

您必须明确这是什么意思,因为在您将testing推送到远程仓库后,还会有一个 本地 远程 - 跟踪名为origin/testing的分支,用于跟踪远程上testing分支的最后已知状态。您可以在.git/refs/remotes/origin/下找到此远程跟踪分支。

删除远程testing和本地origin/testing分支

如果使用以下命令删除遥控器上的分支:

git push origin :testing
# Or
git push origin --delete testing

然后本地远程跟踪分支origin/testing也会自动删除。

仅删除本地origin/testing分支

如果由于某种原因您只想删除本地远程跟踪分支origin/testing,而不是远程上的testing分支,那么您可以运行git branch -d命令--remotes-r标记:

git branch --delete --remotes origin/testing
# Or shorter
git branch -dr origin/testing

如果您收到一条错误消息,指出由于尚未合并分支而无法删除分支,则可以使用-D标志而不是--delete或{强制删除分支{1}}。

另见

答案 3 :(得分:-1)

  
    

我的下一个问题可能是:如何删除origin / testing分支?

  

回答你的下一个问题:走出你打算删除并运行的分支:

git branch -d< branch_name>

-d删除完全合并的分支

-D删除分支(即使没有合并)