说我创建一个回购,它有一个分支称为主。如果其他人购买回购协议并推入新的分支机构B,那么在本地拉入B而不覆盖本地主分支机构的最佳方式是什么?我是否在本地切换到分支B,然后引入更改?我的猜测是,如果我不明确地在本地切换分支,那么如果我从远程分支B引入更改,那么我将用B覆盖本地主分支。这里最好的选择是什么?拉不同的Git分支
0
A
回答
1
您可以使用git fetch origin branchB
从branchB
获取所有提交信息,而无需修改master
或工作目录。
如果要将更改应用于master
,则可以在master
分支上使用git merge FETCH_HEAD
合并它们。这将创建一个新的提交,其中包含master
和branchB
的所有更改。 FETCH_HEAD
是最后一次提交的提交。
2
git fetch origin
git checkout --track origin/<remote_branch_name>
3
你可以做一个git fetch origin branchname
。 通过执行git pull origin branchname
您可以合并两个分支的更改。安装一个像kdiff3一样的合并工具。 可以整合这两个,按照这个link
0
我想,当你写“[人]推到一个新的分支B”,你的意思是他们推到自己的叉式回购,而不是原来的回购origin
。
不是从原点获取B
相反,你需要从他们的叉获取:
git fetch <url/to/their/fork/repo> B
您将得到提交一份在其分支机构B
,你可以看到远程分支git branch -a
。你可以用checkout
这个远程分支让你的工作文件反映分支B
。
如果你愿意,你可以在你提取的同时创建一个本地分支。创建的本地分支的名字来源于一个:
后:
git fetch <url/to/their/fork/repo> B:B
现在,而不是在一个相当长的分支名称运行git checkout
,你可以git checkout B
。
请记住,pull
只是fetch
+ merge
,而merge
发生在当前检出的分支上。你的猜测是正确的,如果你运行git pull
而master
被检出,你将合并被拉的分支的内容到master
。尽管这不是真正的覆盖,而是增加了对master
的提交。
如果你要使用他们的叉回购更多的时间,你可以将其添加为远程:
git remote add their_fork <url/to/their/fork/repo>
这个你不需要写他们的整个URL后,您可以使用远程名称改为:
git fetch their_fork B:B
相关问题
- 1. 从Git分支拉
- 2. 的Git分支不断得到上拉
- 3. 在Git中推拉分支
- 4. Git拉/克隆分支
- 5. git的变基到不同的分支
- 6. 如果从不同分支拉出git会收到警告
- 7. 跨分支的Git不同目录
- 8. 不同分支的Git镜像
- 9. 合并不同根的git分支
- 10. git中的同步分支
- 11. 有在git的特性分支,并从不同的分支
- 12. 克隆一个分支命名不同分支的git
- 13. Git跟踪远程分支,并推送到不同的分支
- 14. 从不同的检出分支Git推分支
- 15. Git,不同的文件夹,相同的回购,不同分支
- 16. 不同的远程分支推拉
- 17. 调用不同git分支以外的其他git分支的python代码而不切换分支
- 18. 为什么git分支和$(git分支)输出不同的结果
- 19. 恢复从选定的分支git拉
- 20. git-rollback拉后的旧分支
- 21. 拉所有的git存储库分支
- 22. Git在不同分支上推/推
- 23. Git:删除远程分支不同步?
- 24. Git:使用.gitignore与不同分支
- 25. 撤消主分支上的错误分支的git拉
- 26. TortoiseGit ...将远程分支拉到不同的本地分支
- 27. 让Git分支同步
- 28. git分支有什么不同-d <branchname>和git分支-D <branchname>
- 29. GIT中三种不同环境的三个不同分支
- 30. git pull和git push的不同默认远程(跟踪分支)
在您获得本地存储库中的更改后,您想要执行什么操作? – siegi
您不会*覆盖* master,您将在主分支中创建新的合并提交(如果合并不是快进)。 – Gauthier