问题
1. 无法提交(commit)
有时候我们会遇到使用vscode提交代码失败的问题。vscode会弹出提示窗,提示提交失败,因为某个文件已经存在,内容待补。解决的办法很简单,直接删除该文件即可
rm ./.git/index.lock
2. 代码回滚
曾经出现过有开发人员不小心提交了错误的代码,删除了很多代码文件,而在此之后又有多人进行过代码提交,这个时候想要将代码回滚到某个时候,怎么办呢,放心,git提供了非常强大的代码版本管理功能。为了说明这个问题,我使用一个示例来
-
假设我们有两个开发人员,A和B,A和B同时克隆代码到本地
git clone git@gitee.com:taoqf/test.git
-
A先进行了一次提交
echo test >> test.txt git add ./test.txt git commit -m 'add test file' git push
-
B这个时候拉了一下代码,并删除了刚才A添加的文件
git pull rm ./test.txt git -am 'delete file by mistake' git push
-
A又做了多次提交,我们拿一次提交来说明问题
git pull echo abc > ./abc.txt git add ./abc.txt git commit -am 'add another file' git push
-
好了,现在A突然发现,以前的某一次提交的文件test.txt被人删掉了,我们现在要找到是谁的哪一次提交误操作了文件。我们可以使用一些工具来帮助我们(windows操作系统的略过此节,自己百度找一个或是用git的gui工具)。如果你没有安装,可以使用以下命令安装(Linux):
sudo apt install git-cola
安装后,可以使用命令
git dag
打开一个窗口,左侧会有历史提交记录,这里可以看到历次的提交,自己的和别人的(这就是为什么要让你们进行git用户名设置为自己姓名的原因),找到后,鼠标选中该项,
Ctrl+C
复制。然后回到命令行(或者新打开一个命令行皆可),切换到该项目的目录下,执行命令git revert xxx
其中
xxx
是粘贴刚才复制的内容,这个时候会进入一个命令行,不用担心,如果打开的是vi,先进入命令模式(按下:
进入),再输入q
退出即可。如果不是使用的vi(像windows),可能会需要按Ctrl+X
退出。总之退出命令行的编辑器即可。这个时候可以发现,被删除的文件test.txt又回来了。
3. 无法推送(push)
提交代码时,有警告提示,并且提示输入密码:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/feidao/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/feidao/.ssh/id_rsa": bad permissions
vic-git@192.168.40.199's password:
执行以下命令:
chmod 0600 /home/feidao/.ssh/id_rsa