赞
踩
1. 问题起因?
合并代码冲突,导致部分代码丢失了。决定回滚到昨天下班后最后一个版本。
使用命令
git reset --hard commit_id
git push --hard
2. 接着让同事们拉代码。。。。
发现提示是最新代码但是拉不下来。需要使用下面的代码:我没有进行测试,如果你测试了麻烦给留言哈。。。。
git reset --hard origin/master
我们用的下面的方法:
重新clone整个代码下来。。。。。
3. 回来复盘发现这个问题,上网找到了答案。
猜测你是用的 git reset 回滚。假设回滚前是 N,回滚后变成 N-3,
那么你所有同事都是 N,都比 N-3 要新,所以当然拉不下来。
所以要么大家都 git reset,要么大家都重新拉整个库。
下次建议用 git revert,创建“回滚分支”,这样就能 git pull 了。
git reset和git revert是两种Git命令,用于撤销或回退提交的更改,但它们具有不同的工作原理和效果。
git reset: 这个命令用于将当前分支的HEAD指针和索引重置到指定的提交。使用git reset会丢弃一些或所有未提交的修改,并移动分支指针。
--soft模式:只重置HEAD指针,保留所有修改在工作目录中,将这些修改标记为未暂存状态。
--mixed模式(默认):重置HEAD指针和索引,保留所有修改在工作目录中,将这些修改标记为未暂存状态。
--hard模式:完全重置HEAD指针、索引和工作目录,丢弃所有修改。
git revert: 这个命令用于创建一个新的提交,以撤销指定的提交。使用git revert会保留历史记录,并生成撤销更改所需的新提交。每个提交都会在历史记录中出现,并将更改反转回去。
git revert <commit>: 撤销指定的提交,并创建一个新的提交来恢复更改。
简而言之:
git reset是通过直接修改分支指针和索引来撤销提交,较为强力和危险,可能会丢失未提交的修改历史。
git revert是通过创建新的提交来撤销指定提交,更安全,能够保留完整的修改历史。
根据具体需求和场景,选择适合的命令来回退或撤销Git提交。
解决方案来自:
https://segmentfault.com/q/1010000040661545?bd_source_light=4746641
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。