最近项目中碰到的问题:
- 问题1: git pull 默认行为导致经常需要解决冲突
两个人协作一个分支 XXX
- A 提交 commmit 到 XXX,
- B git pull XXX, (B 的 pull 的默认行为是 merge)
- A 提交 commmit 到 XXX (使用 git ps -f 了),
- B git pull XXX (此时产生冲突,解决后 git ps XXX)
- A rebase master 时产生冲突,需多次解决
**解决方案 **
- 更新 master 分支到本地 master 分支
- XXX 分支 merge master 分支
- git diff commitId~~(获取 master 最新 commitid)~~ Head
(当前分支的 HEAD)> diff.patch (生成 diff 的 patch 文件) - 从 Master 开出新分支 XXX_New
- 将 diff.patch 应用到 XXX_New
git apply diff.patch
- 将新的 patch 修改 提交
git add .
git ci -m '修改信息'
git ps
后续解决
- B 需要将 pull 的默认行为设置成 rebase
git config --global --add pull.rebase true
查看相关配置
查看仓库级的config:`git config --local -l`
查看全局级的config:`git config --global -l`
查看系统级的config:`git config --system -l`
- 或者 B 在拉取 XXX 相关数据可如下操作
git fetch origin XXX
git rebase -i XXX
- 问题2 : XXX rebase master 分支后导致代码丢失
- 场景复现:
- B 拉了 XXX 分支 代码
- A 提交了 XXX 分支 最新修改代码
- B 未拉取 A 最新代码,并rebase master 代码后 git ps -f (强制提交了)
- 发现 A 提交的代码丢失 后续解决
- 多人协作场景需先 git pull 后 再做 rebase 相关操作。