git 合并文件的冲突理解

72 天前
 BlackSnow

请教一下 git 冲突的原理

我的操作

  1. github 上建了一个分支

  2. 在修改好文件后,当前目录 init 了一个仓库

  3. gitub push 之后,报出存在冲突,提示要远程的分支已经有文件( readme

  4. 做了很多尝试,包括合并了冲突到 git pull 至 update branch 无果 最后 git push -f


同事说标准化操作必须是,要本地建文件或者空文件先 clone 或者 pull

这是 git 固定的工作流,还是说是有 SHA-1 的对应关系在里面。总感觉光这点跟 SVN 的差别不大

2111 次点击
所在节点    git
8 条回复
xausky
72 天前
你远程建了一个非空仓库,本地又 init 了一个,那就是相当于毫无关系的两个仓库要推一起肯定是无法合并,只能覆盖。git 的合并要基于当前提交往上找要有共同的祖先提交,这两个仓库毫无关系当然找不到了。
securityCoding
72 天前
提 mr 之前先 pull 一下远程 mr 分支解决好冲突
liangdi
72 天前
楼主是 git 新手?可以先看看 『猴子都能懂的 git 入门』 或者 『 Pro Git 』, 然后参考一些 gitflow 实践。
如果是协作开发 `git push -f` 基本上都是要配置成禁用的。
oneisall8955
72 天前
既然你在远端已经创建了分支,为什么你本地的不 fetch 后 checkout 出来?本地为什么还需要 init 呢?
xuanbg
72 天前
我以为的冲突:同一个文件,你改了提交了,我没有拉到最新的,也改了提交了,push 的时候提示要 pull ,然后冲突了需要合并。
OP 你说冲突:远程建了一个仓库,我不管我不管,我就不从远程 clone ,非本地也建一个仓库,然后 push 到远程无果。。。
LindsayZhou
72 天前
@liangdi #3
也没有完全禁用?
我在我自己的分支还是要用的,squash 或者 amend 之后我都是 push -f 的,应该没错吧。
liangdi
72 天前
@LindsayZhou 也不是说禁用,一般的实践就是 分支保护,这样是没法直接 push ,要通过 pr 的方式来实现,这样就可以走 code review 了
clino
72 天前
你要切成用远端的,那就 git fetch 远端的以后,再直接 reset 成远端的版本,当然 git gc 一下原来本地 init 的那些版本就会没了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1078988

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX