我正在使用两台机器并在第三台机器上创建原始仓库(原点可以从其他两台机器人访问,机器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
分支?
答案 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删除分支(即使没有合并)