V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Richard14
V2EX  ›  问与答

Git 将 A 分支的内容修改后提交到 B 分支应该如何操作?

  •  
  •   Richard14 · 2021-12-09 17:43:17 +08:00 · 1417 次点击
    这是一个创建于 1109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    A 和 B 分支在远程仓库上都已经存在了。

    现在想做的操作是,每次 A 更新后,首先完全同步 A 的更新后的文件,然后做出一些类似 CI 的修改,最后将所有更新后的内容推到 B 分支(而 A 分支保持不变)

    应该怎么操作?

    目前的想法是

    1. git checkout main
    2. git fetch --all
    3. git reset --hard origin/main
    4. git pull                      # 到这里为止获取最新的 main
    5. 修改
    6. git checkout dev
    7. git merge main
    8. git commit
    9. git push dev
    

    不过有个疑问是第 6 步 checkout 的时候,我刚刚修改的文件不就没了么

    7 条回复    2021-12-10 08:04:58 +08:00
    Akiya
        1
    Akiya  
       2021-12-09 17:53:31 +08:00
    ```
    git checkout branchA
    修改
    git commit
    git checkout branchB
    git merge branchA
    ```
    fdppzrl
        2
    fdppzrl  
       2021-12-09 17:54:20 +08:00 via Android
    git stash
    GuuJiang
        3
    GuuJiang  
       2021-12-09 17:56:57 +08:00
    1. git checkout B
    2. git checkout A .
    3. 修改
    4. git commit
    5. git push

    关键是第二步中的第二个参数“.”,不能漏,表示把 A 分支的文件检出到当前工作空间
    Shawlaw
        4
    Shawlaw  
       2021-12-09 20:36:47 +08:00 via iPhone
    git checkout branchB
    git merge branchA --no-ff
    修改
    git add .
    git commit

    如果要把流程自动化,可以试试在远端仓库启用 githook

    这样的 git 分支历史也会比较清晰。
    FAQ999
        5
    FAQ999  
       2021-12-09 21:13:55 +08:00   ❤️ 1
    cherry-pick ?
    hdfg159
        6
    hdfg159  
       2021-12-09 21:16:49 +08:00 via Android
    5 楼正解
    QingStone
        7
    QingStone  
       2021-12-10 08:04:58 +08:00 via iPhone
    5 楼正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.