事情的经过是这样的:
- git pull拉代码的时候,报错,提示.git/index.lock文件已存在
于是,我把.git/index.lock文件删了。
我忘记截图放哪里了。其实error下面还有说,一般是因为另一个git操作在进行。当时好像是commit操作没执行完吧。 所以,其实只要等一下再重新执行一下就可以了。
- 结果发现,project里面的所有文件都变成了红色,也即被删除的状态:
我觉得,这都不是我改的呀,是删掉.git/index.lock造成的吧。 于是,我就ctrl+z撤销了原来的操作 3. 结果发现,project里面所有的文件都变成了绿色,也即新增的状态 (我本来想重现的,可是撤销之后,发现恢复了正常。不知道怎么回事儿…但是不影响要讲的东西) 这些文件得处理了,不然还是不能拉分支 我觉得这文件跟远程分支上一样啊,我得提交了(如图"hh"那次提交)。而且,反正最后是两个分支merge,只有不同会被merge到目标分支上,所以没关系。 4. 于是,我提交了全部这些文件。然后push了远程分支,然后创建了mr,检查了不同的文件的确只有我想提交的 于是,我就merge了。 5. 结果,我发现所有的文件,利用“annotate with git blame”查看每一行的最新提交人,都是我; 而且,检查每个文件的git历史,都多了两次提交,一次全删,一次全增: 所以,怎样把这次的历史记录去掉呢?不然所有文件的最后提交人全变成了我,很难找到每行代码的实际开发人。
尝试一
git在merged的mr里面有revert按钮。 尝试了一下,只是把我本来想提交的那些文件的修改撤销了,对这两个节点没有影响。
尝试二
在网上搜怎样能清楚git节点。看到这篇文章清除Github提交历史记录 主要就是两步:
- 使用"git reset 版本号 --hard"操作,将历史记录重置到之前的版本。
- git push origin 分支 --force,push到远程分支上,覆盖远程分支
这个方法是可行的,就是通过这个方法删掉了我想删掉的历史。
说一下注意事项
要push的分支branchName是protectd branch: 如果想push,要把这里的设置改掉。
小结
- 没看清楚git pull的error和提示信息,贸然把.git/index.lock文件给删了
- branch1 merge到branch2的时候,不光需要看不同的文件,也即代码。它们的版本库也会进行合并。
- git上对不同类型的分支的权限是可以设置的
|