飞道科技

飞道科技文档总汇

问题

1. 无法提交(commit)

有时候我们会遇到使用vscode提交代码失败的问题。vscode会弹出提示窗,提示提交失败,因为某个文件已经存在,内容待补。解决的办法很简单,直接删除该文件即可

rm ./.git/index.lock

2. 代码回滚

曾经出现过有开发人员不小心提交了错误的代码,删除了很多代码文件,而在此之后又有多人进行过代码提交,这个时候想要将代码回滚到某个时候,怎么办呢,放心,git提供了非常强大的代码版本管理功能。为了说明这个问题,我使用一个示例来

  1. 假设我们有两个开发人员,A和B,A和B同时克隆代码到本地

     git clone git@gitee.com:taoqf/test.git
    
  2. A先进行了一次提交

     echo test >> test.txt
     git add ./test.txt
     git commit -m 'add test file'
     git push
    
  3. B这个时候拉了一下代码,并删除了刚才A添加的文件

     git pull
     rm ./test.txt
     git -am 'delete file by mistake'
     git push
    
  4. A又做了多次提交,我们拿一次提交来说明问题

     git pull
     echo abc > ./abc.txt
     git add ./abc.txt
     git commit -am 'add another file'
     git push
    
  5. 好了,现在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