使用Git和Github Desktop操作Github仓库

版权申明:本文为原创文章,转载请注明原文出处

原文链接:http://blog.pp6f.com/2022/02/14/Github/Github_git_GithubDesktop/

本文介绍 如何通过gitGithub Desktop来操作Github仓库。遇到的问题 和 如何解决!


索引

前言


简要


Git

安装Git

Windows,MacOS,Liunx 都可以根据菜鸟教程Git安装配置 安装非常简单,这里不做阐述了。

git常用命令

首先需要先了解一些基本常用的git命令。
以下仅仅是部分常用命令 更多命令 可以 参考

命令 说明 例子
git init 初始化仓库
git clone 克隆远程仓库到本地 git clone https://github.com/xxx/xxx.git
git add 添加文件到暂存区 git add .
git add filename
git commit 提交暂存区 参考 git commit -m “message”
git status 用于修改了哪些文件。-s 输出简短的结果 git status
git status -s
git checkout 切换分支 git checkout main
git branch 分支操作 git branch #查看分支
git branch {branchname} #创建分支
git branch -D {branchname} #删除分支

git push

将本地的分支版本上传到远程并合并 更多可以 参考
git push <远程主机名> <本地分支名>:<远程分支名>

命令 说明
git push origin main origin:远程主机名 main:本地分支名
git push origin main:main git push origin main等效
git push -u origin main -u 指定origin为默认远程主机名 之后在push的时候后面不需要加任何参数 直接使用 git push
git push –force origin master --force 在远程和本地分支存在差异 可以使用--force强制推送
git push origin –delete master --delete 删除远程主机的分支master

git remote

用于在远程仓库的操作 参考

  • 查看所有远程仓库和连接的方式

      $ git remote -v
      origin  git@github.com:xxx/xxx.git (fetch)
      origin  git@github.com:xxx/xxx.git (push)
    
  • 添加一个远程仓库和连接的url

      $ git remote add origin git@github.com:xxx/xxx.git
    
  • 删除一个远程仓库

      $ git remote rm origin
    
  • 修改一个远程仓库名

      $ git remote rename old_name new_name
    
  • 修改远程仓库的url连接 用于ssh连接还是https连接

      $ git remote set-url origin git@github.com:xxx/xxx.git
    

git config

config配置文件 分当前项目配置文件 和 全局配置文件。
优先级当前项目 大于 全局
当操作配置文件时 加入--global参数表示操作全局config。不加入表示操作当前项目config
配置文件必须存在 如果当前项目和全局都没有配置文件 会出错

  • 添加/修改 签名信息 用户名 邮箱

      $ git config --global user.name "abc"               #修改全局用户名
      $ git config --global user.email test@abc.com       #修改全局邮箱
    
      $ git config user.name "abc"               #修改当前项目用户名
      $ git config user.email test@abc.com       #修改当前项目全局邮箱
    
  • 查看config

      $ git config --list             #当前项目config
      $ git config --global --list    #全局config
    
  • 编辑config

      $ git config -e                 #编辑当前项目config
      $ git config -e --global        #编辑全局config
    

git config –global core.autocrlf

  • 关于回车字符在Windows Linux的不同产生的差异
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #提交时转换为LF,检出时转换为CRLF
    $ git config --global core.autocrlf true
    #提交时转换为LF,检出时不转换
    $ git config --global core.autocrlf input
    #提交检出均不转换
    $ git config --global core.autocrlf false
    #拒绝提交包含混合换行符的文件
    $ git config --global core.safecrlf true
    #允许提交包含混合换行符的文件
    $ git config --global core.safecrlf false
    #提交包含混合换行符的文件时给出警告
    $ git config --global core.safecrlf warn

安装 Github Desktop

对于Github Desktop网友褒贬不一,有的说没用,有的说很需要。这里见仁见智。如果你觉得git已经够用,可以跳过这个章节。就我个人而言,git虽然已经够用,但我不拒绝Github Desktop的便捷。有些需要在git命令行上敲几十个字符完成的工作,可能在Github Desktop上面只需要点击几下鼠标就可以了,所以GUI的遍历是不得不承认!喜欢操作界面的小伙伴,我们继续吧!

进入Github Desktop官方下载页 下载自己需要的版本。这里以Windows为例。

下载 - 安装 - 运行! 我说的简单 装起来也一样简单!

Github Desktop 界面
虽然界面是英文的,但是官方还提供了中文文档还是很方便的。如果一定要中文界面,也可以去网上找一找有汉化包。

根据官方提供的文档,使用起来基本没什么难度。
创建,添加和克隆仓库 提交,推送和拉去 文档都有介绍,而且非常详细,我这里就不再复述了。


配置Git和Github

  • 连接方式分sshhttps但由于Github不在支持密码登录 一样需要使用token登录 而且每次输入密码也是够烦的 所以这里就不介绍https连接了 以下使用ssh方式连接
  • gitGithub连接时,使用ssh方式。原理是 在本地保存私钥公钥保存在Github上面,这样在推送本地代码时git通过私钥进行rsa加密后发送给Github服务器,Github接收后通过公钥解密。以达到安全传输的目的!当然拉取Github上面的代码时也是一样 Github通过公钥进行rsa加密后传输,拉取到本地后,git在通过私钥解密,得到代码数据!如果想了解rsa的加密算法 可以在网上找到很多相关的视频 这里推荐李永乐老师讲的RSA加密算法 很容易理解!
  • 知道了原理 接下来我们需要一个密钥对

生成rsa密钥

  • 首先任意文件夹右键 选择Git bash Here打开Git bash

  • 输入cd ~/.ssh 查看.ssh文件夹是否存在,如果没有.ssh文件夹 则表示这台计算机没有生成过密钥。

      $ cd ~/.ssh
    
  • 在输入ls ~/.ssh查看.ssh文件夹内是否有密钥。通常默认的密钥名id_rsa(私钥),id_rsa.pub(公钥) 也可以是其他名。

      $ ls ~/.ssh
    
  • 创建密钥 输入$ ssh-keygen -t rsa -C "youremail@example.com" 邮箱填写Github上面的账号邮箱。
    如果要生成其他文件名 在后面加参数$ ssh-keygen -t rsa -C "youremail@example.com" -f ~/.ssh/filename
    执行命令 需要输入密码时敲回车 表示留空密码
    这条命令会生成id_rsa(私钥),id_rsa.pub(公钥)。

    Git bash
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $ ssh-keygen -t rsa -C "youremail@example.com"
    Generating public/private rsa key pair.
    Enter passphrase (empty for no passphrase): //这里输入回车
    Enter same passphrase again: //这里输入回车
    Your identification has been saved in /c/Users/xxx/.ssh/id_rsa
    Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:t0Q2AznSFmNe1GqgByJ61Z39Nswuwpu5/jQF12lUTc4 1@1
    The key's randomart image is:
    +---[RSA 3072]----+
    | o..o.+=+o..o+|
    | . . =oS+ o.+.|
    | . . =**o.+ E|
    | .o.=O. |
    | .B.o+.. |
    | o.o. |
    | =+. |
    | +. . |
    | .oo. |
    +----[SHA256]-----+
  • 查看~/.ssh/id_rsa.pub(公钥)中的内容

    1
    2
    $ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQChYJiCpZoue9LEUDa/5kUZRRqfYIELPeDDRaUbZbmVKgh1maIAOeFlKwg9rSgEphTKPGtnF3/+KjryLjdCzYMwvLNvSNBElM/Ho+aRVJKTidwqOA3SXwWKvd9aCmQi3rTq6L+GoI+qjcSjk9iudkpjgi9JxLKoMZ7nRsUuz6HtKT+50yY045ESbWuoPJqCkonY2yFXNDxUqof4P4KIMFu3rQyMfLRMFTlgfhw/WvL1zeKKM81MQmAx70SbpGyGV5l1GM4cD0+hXlZ5JvIzhKgk2N8n5JF0TLouK1RkGckqJRj4Uc+HsRhmFP3sD7hLhldwb3oSJrkDweRX5FNBKSok3yEWBAJYMwk7ipoz4neYx6G5PPh3kGaiODAj39PYiz3OmtZLCU+FXqk8GVZz1j8UQngjOodZTvOyOqrWYD6HTlprmzK9nFI5BXNcXH5fop/YoY6y26Du8gUrCdgZiE29tVU0mlO1iU1SArEHRH+pZQyltQEq42SMj02/9QYWGC8= youremail@example.com

设置Github密钥

Github公钥可以保存在账号设置里,也可以保存在仓库设置里,区别在于保存在账号设置里可以用于所有仓库,保存在仓库设置里只用于某个仓库。这时我的理解并未考证。

Github账号设置里保存公钥

  1. 打开 https://github.com/ 单击右上角头像 然后点击Settings(设置)

  2. 点击左侧边栏的SSH and GPG keys

  3. 点击New SSH key新建SSH密钥

  4. Title(标题)中,填写自定义标题
    key中填写id_rsa.pub中的公钥

  5. 点击Add SSH key(添加 SSH 密钥)

在Github的仓库里设置公钥

  • (进入你的仓库 - Settings - Deploy keys - Add deploy key) 剩下的与上面的步骤4.一样

测试SSH连接

  • 输入以下命令 测试ssh连接

    $ ssh -T git@github.com
    The authenticity of host ‘github.com (52.74.223.119)’ can’t be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 输入 yes
    Warning: Permanently added ‘github.com,52.74.223.119’ (RSA) to the list of known hosts.
    Hi username! You’ve successfully authenticated, but GitHub does not provide shell access. # 成功信息

  • 看到以上信息表示已经成功连接到Github

  • 如果出现其他问题 参考官方文档

  • Github支持下列公钥名

    • id_rsa.pub
    • id_ecdsa.pub
    • id_ed25519.pub

配置用户/邮箱

  • 使用$ git config配置
    user.name 替换你Github用户名
    user.email 替换你Github邮箱

      $ git config --global user.name "yourname"               #修改全局用户名
      $ git config --global user.email yourmail@abc.com       #修改全局邮箱
    

使用Git连接Github

pull拉取到本地文件夹

  1. 在本地项目文件夹打开Git bash

  2. 初始化

     $ git init
    
  3. 添加远程仓库url
    替换git@github.com:xxx/xxx.git为你的仓库ssh链接

     $ git remote add origin git@github.com:xxx/xxx.git
    
  4. pull拉取Github上面的代码

     $ git pull origin main
    
  • ok! 现在已经和远程仓库同步 可以使用了!

clone克隆Github仓库代码到本地

  1. 在你想要克隆后存放项目文件夹 打开Git bash

  2. clone克隆Github远程仓库代码
    如果不填<文件夹相对路径> 会直接克隆到当前目录

     $ git clone origin git@github.com:xxx/xxx.git <文件夹相对路径>
    
  • ok! 可以使用了

push推送到Github仓库

  • 新建 增加 删除 修改代码后 推送到Github
  1. 暂存修改 add
    . 暂存所有改动的文件
    <filename> 暂存指定文件名
    *.a 暂存后缀为.a的所有文件

     $ git add .
    
  2. 提交暂存 commit
    -m "message" message自定义消息名

     $ git commit -m "message"
    
  3. 推送 push
    -u 指定默认的远程仓库名和本地分支名 只需要第一次使用 以后可以直接git push推送
    origin 远程仓库名
    main 本地分支名

     $ git push -u origin main
    
  • 以上3步,基本就是以后最常用的操作。

问题解决

这里只记录遇到的问题 以后遇到随时添加

git切换ssh,https连接方式

  • 使用$ git remote -v命令 查看所有远程仓库和连接的方式

      $ git remote -v
      origin  git@github.com:xxx/xxx.git (fetch)
      origin  git@github.com:xxx/xxx.git (push)
    
  • git@github.com:xxx/xxx.git为ssh连接
    https://github.com/xxx/xxx.git为https连接

  • 如果没有远程仓库 可以使用$ git remote add添加一个

      $ git remote add origin git@github.com:xxx/xxx.git
    
  • 使用$ git remote rm删除一个远程仓库

      $ git remote rm origin
    
  • 使用$ git remote set-url设置远程仓库的urlssh连接

      $ git remote set-url origin git@github.com:xxx/xxx.git
    
  • 使用$ git remote set-url设置远程仓库的url为为https连接

      $ git remote set-url origin https://github.com/xxx/xxx.git
    

Https > push不出现密码框

  • 在使用https连接数 使用push命令 不提示密码框 使用以下命令

      $ git config --system --unset credential.helper
    

Github Desktop使用SSH连接 报错

  • 在使用SSH连接时 会报错Authentication failed. Some common reasons include:

  • 解决方法 去掉下面的勾选

      File - Options - Advanced - SSH - Use system OpenSSH(recommended)
    

git命令remote报错error: No such remote 'origin'

  • 错误时没有远程仓库名

  • 添加一个远程仓库名 可以解决

      $ git remote add origin git@github.com:xxx/xxx.git
    

warning: LF will be replaced by CRLF

  • 主要原因是Windows和Linux在回车字符上的区别造成的
  • 检查提示的文件 回车字符
  • 或 更改config的core.autocrlf配置项
    可以使用 git config –global core.autocrlf 命令

结束

  • 文章在Git,Github,Github Desktop的使用和问题解决上,没有做到完全覆盖,只是对自己使用的总结和记录。
    如果有什么问题,可以在 我的博客 (https://blog.pp6f.com) 中给我留言!

使用Git和Github Desktop操作Github仓库

http://blog.pp6f.com/2022/02/14/Github/Github_git_GithubDesktop/

作者

Bruce

发布于

2022-02-14

更新于

2023-03-10

许可协议

评论