使用Git和Github Desktop操作Github仓库
版权申明:本文为原创文章,转载请注明原文出处
原文链接:http://blog.pp6f.com/2022/02/14/Github/Github_git_GithubDesktop/
本文介绍 如何通过
git和Github Desktop来操作Github仓库。遇到的问题 和 如何解决!
索引
前言
- Git 是一个开源的分布式版本控制系统。菜鸟教程 Github的git文档
- GitHub Desktop 是Github官方提供的一个git工具 很好用。官方下载 官方文档 官方Github仓库
- Github 用来存放代码的仓库,支持git版本控制。菜鸟教程 官方文档
- 本文使用
Windows操作系统。
简要
- 简单的步骤
- 1.创建
ssh使用的密钥 - 2.配置
公钥到Github - 3.配置Git的签名 用户和邮箱
- 4.Git连接Github仓库 与其同步
- 5.修改本地代码
- 6.push推送到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为例。
下载 - 安装 - 运行! 我说的简单 装起来也一样简单!

虽然界面是英文的,但是官方还提供了中文文档还是很方便的。如果一定要中文界面,也可以去网上找一找有汉化包。
根据官方提供的文档,使用起来基本没什么难度。
创建,添加和克隆仓库 提交,推送和拉去 文档都有介绍,而且非常详细,我这里就不再复述了。
配置Git和Github
- 连接方式分
ssh和https但由于Github不在支持密码登录 一样需要使用token登录 而且每次输入密码也是够烦的 所以这里就不介绍https连接了 以下使用ssh方式连接git与Github连接时,使用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账号设置里保存公钥
打开 https://github.com/ 单击右上角头像 然后点击
Settings(设置)
点击左侧边栏的
SSH and GPG keys点击
New SSH key新建SSH密钥
在
Title(标题)中,填写自定义标题
在key中填写id_rsa.pub中的公钥
点击
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拉取到本地文件夹
在本地项目文件夹打开Git bash
初始化
$ git init添加远程仓库url
替换git@github.com:xxx/xxx.git为你的仓库ssh链接$ git remote add origin git@github.com:xxx/xxx.gitpull拉取Github上面的代码$ git pull origin main
- ok! 现在已经和远程仓库同步 可以使用了!
clone克隆Github仓库代码到本地
在你想要克隆后存放项目文件夹 打开Git bash
clone克隆Github远程仓库代码
如果不填<文件夹相对路径> 会直接克隆到当前目录$ git clone origin git@github.com:xxx/xxx.git <文件夹相对路径>
- ok! 可以使用了
push推送到Github仓库
- 新建 增加 删除 修改代码后 推送到Github
暂存修改 add
.暂存所有改动的文件<filename>暂存指定文件名*.a暂存后缀为.a的所有文件$ git add .提交暂存 commit
-m "message"message自定义消息名$ git commit -m "message"推送 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设置远程仓库的url为ssh连接$ 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/

