Github(非Git)远程推送合并冲突解决及相关操作疑问
Git/GitHub 入门常见问题解答
问题1:多人同分支修改同文件后推送,会冲突还是覆盖?
- 第一个推送的开发者能直接成功,远程分支会更新成他的版本。
- 剩下4个开发者推送时会被拒绝,Git会提示本地分支落后于远程,必须先拉取远程的最新代码。
- 拉取时因为本地和远程的同文件有不同修改,会直接触发合并冲突,需要手动解决冲突、提交后才能再次推送。
- 不存在“最后推送的版本直接覆盖”的情况,Git会强制要求你先同步远程变更,避免无意识的覆盖。
问题2:开放任意分支推送权限会有问题吗?
- 绝对会出问题:
- 新手可能误推本地测试代码到稳定分支(比如
main),直接破坏线上可用的代码。 - 多人同时推送时,很容易出现未解决的冲突导致分支混乱,甚至丢失他人的提交记录。
- 恶意操作(或误操作)可能直接删除分支、覆盖关键历史提交。
- 新手可能误推本地测试代码到稳定分支(比如
- 正规团队都会给关键分支设置保护规则,比如限制只有指定人员能推送、要求必须通过PR审核才能合并,禁止直接推送。
问题3:用git restore [commit hash]后,能回到后续的提交吗?
- 可以的,因为
git restore只是恢复文件到指定提交的状态,不会删除本地的提交历史。 - 你可以用
git log查看所有提交记录,找到后续提交的哈希值,然后用git checkout [后续提交hash]或者git switch -c 临时分支 [后续提交hash]回到那个状态。 - 注意:如果是用
git reset --hard [commit hash]才会丢弃后续提交,git restore不会改动提交历史,只是修改工作区/暂存区的文件内容。
内容的提问来源于stack exchange,提问作者Yogie
相关产品推荐
相关产品推荐

