请教一下 git 冲突的原理
我的操作
github 上建了一个分支
在修改好文件后,当前目录 init 了一个仓库
gitub push 之后,报出存在冲突,提示要远程的分支已经有文件( readme
做了很多尝试,包括合并了冲突到 git pull 至 update branch 无果 最后 git push -f
同事说标准化操作必须是,要本地建文件或者空文件先 clone 或者 pull
这是 git 固定的工作流,还是说是有 SHA-1 的对应关系在里面。总感觉光这点跟 SVN 的差别不大
1
xausky 33 天前 4
你远程建了一个非空仓库,本地又 init 了一个,那就是相当于毫无关系的两个仓库要推一起肯定是无法合并,只能覆盖。git 的合并要基于当前提交往上找要有共同的祖先提交,这两个仓库毫无关系当然找不到了。
|
2
securityCoding 33 天前
提 mr 之前先 pull 一下远程 mr 分支解决好冲突
|
3
liangdi 33 天前 1
楼主是 git 新手?可以先看看 『猴子都能懂的 git 入门』 或者 『 Pro Git 』, 然后参考一些 gitflow 实践。
如果是协作开发 `git push -f` 基本上都是要配置成禁用的。 |
4
oneisall8955 33 天前
既然你在远端已经创建了分支,为什么你本地的不 fetch 后 checkout 出来?本地为什么还需要 init 呢?
|
5
xuanbg 33 天前
我以为的冲突:同一个文件,你改了提交了,我没有拉到最新的,也改了提交了,push 的时候提示要 pull ,然后冲突了需要合并。
OP 你说冲突:远程建了一个仓库,我不管我不管,我就不从远程 clone ,非本地也建一个仓库,然后 push 到远程无果。。。 |
6
LindsayZhou 33 天前
|
7
liangdi 33 天前 via Android
@LindsayZhou 也不是说禁用,一般的实践就是 分支保护,这样是没法直接 push ,要通过 pr 的方式来实现,这样就可以走 code review 了
|
8
clino 33 天前
你要切成用远端的,那就 git fetch 远端的以后,再直接 reset 成远端的版本,当然 git gc 一下原来本地 init 的那些版本就会没了
|