CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)

一、Linux中下载git

  • 进入CentOS
  1. yum命令
    • root用户:yum -y install git
    • 普通用户:sudo yum -y install git
  2. 安装成功后可查看git版本
    • git --version
    • 如下图表示安装成功:在这里插入图片描述

二、配置用户名及邮箱

  • 配置用户名:git config --global user.name "用户名"
  • 配置邮箱:git config --global user.email "邮箱"
  • 查看配置信息:git config --global --list
    • 如下图表示配置成功:在这里插入图片描述

三、拉取gitee码云远程库到Linux下

方式一:HTTPS(建议)

  1. 在gitee库上复制https链接
    CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第1张图片

  2. 拉取gitee远程仓库到Linux下:git clone "上面复制的https链接"

    • 输入gitee账户名和密码即可拉取,拉取显示结果:
      • ①若在root用户下拉取gitee远程仓库
        CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第2张图片
      • ②若在普通用户下拉取gitee远程仓库CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第3张图片

方式二:SSH公钥(不建议)

  1. 生成公钥

    • ssh-keygen -t rsa -C "邮箱"
    • 连续按3次回车
      • 如图显示:CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第4张图片
  2. 查看公钥

    • cat ~/.ssh/id_rsa.pub,将显示出的内容复制。
    • 此处不可用vim ~/.ssh/id_rsa.pub的方式查看复制公钥,因为格式会出错,只能复制用cat的方式显示出的公钥。
  3. gitee中添加公钥
    CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第5张图片

  4. 复制gitee远程库的SSH链接
    CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第6张图片

  5. 克隆库

    • 在Linux下进入所要放库的目录下:git clone "上面复制的SSH链接"
对于方式二远程库文件权限的修改
  • 问题背景:使用方式二(SSH公钥)拉取远程库到Linux下时,即使是普通用户,但可能拉取的库会出现权限无法写入且所属用户和所属组是root的情况。也因此在拉取的远程库中操作经常需要sudo,很不方便

    • 可能是如下图显示CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第7张图片
  • 解决(以下都是在普通用户下,root用户就不必sudo):

    • ① 修改仓库文件权限:
      • 将group的r-x修改成rwx
      • $ sudo chmod g+w linux_-daily-test
      • 修改后:在这里插入图片描述
    • ② 修改文件所属用户和组:
      • 只修改所属用户:sudo chown -R 用户名 库名

        • sudo chown -R wjq test:要加上-R选项,表示连同子目录中的所有文件,都更改所有者。否则的话在仓库中使用git命令仍需加sudo,无法做到任意使用git命令
        • 修改后结果如下:在这里插入图片描述
      • 只修改所属组:sudo chown -R :用户名 库名

        • sudo chown -R :wjq test
        • 修改后结果如下:在这里插入图片描述
    • 此时就可以正常,像普通文件一样在仓库文件下创建文件了,也不需要再sudo

四、git操作

  • 前提:cd进入远程库的目录下

1、拉取 – 同步远程仓库

[wjq@VM-8-15-centos test]$ git pull

2、添加到远程库

  • 把当前目录都加进去
[wjq@VM-8-15-centos test]$ git add .
  • 加入特定的文件
[wjq@VM-8-15-centos test]$ git add test.c

3、上传说明

[wjq@VM-8-15-centos test]$ git commit -m "(说明修改的内容)"

4、push

[wjq@VM-8-15-centos test]$ git push
  • 整个过程图示:
    CentOS-7.6 Linux下的git管理操作(代码上传同步至gitee码云)_第8张图片

对于push可能会出现的一些问题

情况1:
  • 在push时有可能会报如下警告:
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
  • 如上警告产生原因:
    • push.default没有设置push.default 默认的值。
    • 在Git 2.0下,从’matching’ 变成了’simple’.
      • 查看git版本的命令如下:
[wjq@VM-8-15-centos linux_-daily-test]$ git --version
git version 1.8.3.1
  • 解决方式:
//Git2.*以前:设置默认行为matching
 git config --global push.default matching  

//Git2.*以后:设置默认行为simple
 git config --global push.default simple  
情况2:
[wjq@VM-8-15-centos test]$ git push
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
  • 可能公钥出现错误了

    • 如:你在配置公钥时复制的公钥是在vim里复制的,就可能导致公钥无效
    • 解决方式:重新且正确地配置一次公钥
      • (见本文前配置部分:SSH公钥配置)
  • 如何查看是否解决:

[wjq@VM-8-15-centos ~]$ ssh -T [email protected] 
Hi 拾贰! You've successfully authenticated, but GITEE.COM does not provide shell access.

五、其他

  • 本文介绍的是Linux下的git操作,若想了解VS下的git相关操作,可参考我另一篇文章:
    • Git的日常操作说明(代码上传同步至gitee码云)
  • 仓库中已有的文件,但Linux上已经删除了,直接继续上传其他的就行
  • git pull相关的一些说明
    • 将原本从linux中向仓库中上传的文件删除后,而Linux上还存在,还使用了git pull,就会导致Linux中的文件删除
    • 而若是Linux上存在的文件,并且从未上传过仓库,此时使用git pull,并不会对Linux上未上传的文件造成影响

祝大家学习愉快 : )

你可能感兴趣的:(Linux学习,git,gitee,linux,centos)