1 问题描述
- push代码后,又提示merge,直接mege,发现远程分支上多了一条commit记录“Merge remote-tracking branch ‘upstream/dev’ into dev”,
- 查看后,不是自己的代码,吓我一跳, 于是立刻使用新学会的引以为豪revert命令,git revert [commitId] -m 1
- 那些不是自己的代码全部撤回了, 长吁一口气
- 十分钟后,同事过来了: 你怎么把我的代码给给删除了
瞬间慌了
2 原因描述
- git fetch upstream
- git commit 本地改动
- git push
- 提示merge
- fetch 命令后,本地的upstream/dev有更新了
- 但是我没有rebase, 改了代码后,就push了
这个时候,git认为你本地的dev分支需要合并upstream/dev, 于是问你要不要merge - 同意merge后,相当于又push了一次,把你的merge记录提交上去了, 这条merge记录就是 :“Merge remote-tracking branch ‘upstream/dev’ into dev”
- 虽然多了一条了merge记录,但本质并不更改代码,只是一些合并的记录工作(它记录了更改分支的变动,但本质不改代码, 这里是github的commit记录给了我误导,我以为是提交了代码)
- 于是我使用了引以为豪的revert 命令, 把同事的代码给revert了
3 解决方式
- revert后,对这条revert再次revert
- 代码就回来了
4 反思
- git fetch 后, rebase一下当前分支,然后再提交代码
- 每次都git fetch, git rebase,感觉很麻烦
- 这样,写代码前, git fetch ,git rebase, git commit ,git push, create pr, 如果有冲突, 直接使用idea的图形界面 git->pull, 比较省事
- 谨记 git fetch后,记得git rebase
|