V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
BlackSnow
V2EX  ›  git

git 合并文件的冲突理解

  •  
  •   BlackSnow · 29 天前 · 1881 次点击

    请教一下 git 冲突的原理

    我的操作

    1. github 上建了一个分支

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

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

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


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

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

    8 条回复    2024-10-11 09:56:00 +08:00
    xausky
        1
    xausky  
       29 天前   ❤️ 4
    你远程建了一个非空仓库,本地又 init 了一个,那就是相当于毫无关系的两个仓库要推一起肯定是无法合并,只能覆盖。git 的合并要基于当前提交往上找要有共同的祖先提交,这两个仓库毫无关系当然找不到了。
    securityCoding
        2
    securityCoding  
       29 天前
    提 mr 之前先 pull 一下远程 mr 分支解决好冲突
    liangdi
        3
    liangdi  
       29 天前   ❤️ 1
    楼主是 git 新手?可以先看看 『猴子都能懂的 git 入门』 或者 『 Pro Git 』, 然后参考一些 gitflow 实践。
    如果是协作开发 `git push -f` 基本上都是要配置成禁用的。
    oneisall8955
        4
    oneisall8955  
       29 天前
    既然你在远端已经创建了分支,为什么你本地的不 fetch 后 checkout 出来?本地为什么还需要 init 呢?
    xuanbg
        5
    xuanbg  
       28 天前
    我以为的冲突:同一个文件,你改了提交了,我没有拉到最新的,也改了提交了,push 的时候提示要 pull ,然后冲突了需要合并。
    OP 你说冲突:远程建了一个仓库,我不管我不管,我就不从远程 clone ,非本地也建一个仓库,然后 push 到远程无果。。。
    LindsayZhou
        6
    LindsayZhou  
       28 天前
    @liangdi #3
    也没有完全禁用?
    我在我自己的分支还是要用的,squash 或者 amend 之后我都是 push -f 的,应该没错吧。
    liangdi
        7
    liangdi  
       28 天前 via Android
    @LindsayZhou 也不是说禁用,一般的实践就是 分支保护,这样是没法直接 push ,要通过 pr 的方式来实现,这样就可以走 code review 了
    clino
        8
    clino  
       28 天前
    你要切成用远端的,那就 git fetch 远端的以后,再直接 reset 成远端的版本,当然 git gc 一下原来本地 init 的那些版本就会没了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2578 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:31 · PVG 23:31 · LAX 07:31 · JFK 10:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.