git合并别人已提交的代码

git管理文件 , 我正在修改代码 , 还没有提交 , 但是有其他人员和我操作一个仓库 , 其他人修改了代码也提交了, 推送了远程仓库 ,我希望把其他人提交的代码合并到我的本地 , 不要影响我后续代码开发完毕再提交 ,我直接pull报错 please commit your changes or stash them before you merge

一、使用 git stash 临时保存修改(推荐)

步骤

  1. 暂存当前修改

    git stash save "work in progress"
    
    • 这会将你未提交的修改保存到一个栈中,并恢复工作区到HEAD状态。
  2. 拉取并合并远程更新

    git pull origin main  # 假设主分支为main
    
  3. 恢复暂存的修改

    git stash pop  # 恢复最近一次stash,并从栈中删除
    
    • 如果有冲突,解决冲突后继续开发。

优点:不影响当前工作,操作简单。
缺点:如果修改较多,恢复后可能需要重新调整代码上下文。

二、使用 git stash push -m "message"(更清晰的暂存)

如果你使用Git 2.13+,可以使用更明确的语法:

git stash push -m "work in progress"  # 暂存修改
git pull origin main                 # 拉取更新
git stash pop                        # 恢复修改

三、创建临时分支保存当前工作

步骤

  1. 创建临时分支

    git checkout -b temp-work
    git add .
    git commit -m "temp commit"  # 临时提交当前工作
    
  2. 切换回原分支并拉取更新

    git checkout main  # 切换回主分支
    git pull origin main
    
  3. 合并临时分支的修改

    git checkout temp-work
    git rebase main  # 将temp-work的修改应用到最新的main上
    git checkout main
    git merge temp-work  # 将修改合并回main
    
  4. 删除临时分支

    git branch -d temp-work
    

优点:保留完整的提交历史,适合复杂修改。
缺点:步骤较多,需要理解rebase和merge的区别。

四、强制合并(不推荐,可能导致冲突)

如果你确定本地修改与远程更新不冲突,可以使用:

git pull --rebase
  • --rebase 将你的修改应用到远程更新之后,避免产生合并提交。
  • 风险:如果有冲突,可能需要手动解决较多冲突。

五、解决冲突的通用方法

无论使用哪种方案,合并后可能出现冲突。按以下步骤解决:

  1. 查看冲突文件

    git status  # 列出有冲突的文件
    
  2. 编辑冲突文件

    • 打开冲突文件,手动解决标记为 <<<<<<<=======>>>>>>> 的部分。
  3. 标记冲突已解决

    git add <冲突文件>
    
  4. 继续合并或rebase

    # 如果是git pull --rebase导致的冲突
    git rebase --continue
    
    # 如果是git merge导致的冲突
    git commit
    

总结

  • 推荐方案:使用 git stash 临时保存修改,拉取更新后恢复。
  • 复杂场景:创建临时分支保存工作,避免影响主分支。
  • 冲突处理:手动解决冲突后继续合并流程。

通过以上方法,你可以安全地合并他人提交的代码,同时保留自己的修改进度,确保后续开发不受影响。

你可能感兴趣的:(git)