- 下载安装Git
1. 从Git官网进行下载
打开网址:Git - Downloading Package
选择32或者64位的对应版本进行安装
2. 安装Git插件
就安装默认的设置一路Next,以下都是默认设置,不需做任何改动
安装完毕后,进入cmd命令,输入git –version进行验证
出现了版本信息后,则说明git已经成功在您的电脑上安装成功了,同时右键桌面会出现Git GUI和Bash的菜单
- 在Github上创建仓库(Repository)
1. 进入Github网站
打开网站:https://github.com/
2. 登录或注册Github
注册过程不多介绍,没有Github账号的可以在https://github.com/join?source=header-home
上进行注册
已有账号,登录后,出现主页界面如下:
3. 创建仓库
先在首页右上角头像点击,再点击弹出下拉列表框的”Your profile”
进入了个人首页后,点击”Repositories”标签,再点击绿色的”New”按钮,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/33b0e21e2891a12edd4737283d3d3b04.png)
此时进入了创建仓库页面,在”Repository Name”的输入框内输入你想命名的仓库名,我这边暂时命名为”MyTest”, 确定了仓库的名字后,则可以点击下方绿色的”Create Repository”按钮,以完成创建。
图片中的”Public”为公共仓库,所有来访者都可以查看您写的代码,是免费的。
”Pravite”为私有仓库,只有您自己可以查看代码,需要收费
看到下列界面,则说明你已经成功的创建了第一个仓库,接下去我们会在自己电脑本地,对该仓库进行些操作
![](https://i-blog.csdnimg.cn/blog_migrate/0e7f58d4b07516eb3a12722ef26ca7d3.png)
- 对仓库(Repository)进行操作
1. 克隆仓库到本地
打开刚刚创建第一个仓库的界面,复制仓库的URL地址,下图红框可直接复制,如下图所示:
在本地电脑利用git clone的命令,去下载该仓库。在cmd命令行中输入git clone “https://github.com/John0731/MyTest.git” 如下图所示。
2. 提交第一个代码文件
a) 把Python脚本文件放入该仓库文件夹内,打开命令提示符,输入git status,查看当前仓库变更状态
![](https://i-blog.csdnimg.cn/blog_migrate/9d25e6a6837ed691eebb2fd758c21291.png)
b) 如上图所示,看到这个Python脚本文件是未暂存的状态,那么现在需要通过命令git add FileOperation.py 去将这单个文件加入暂存队列,在用git status命令查看如下:
c) 现在该文件被加入了暂存队列,显示为绿色,接下来我们将它上传到我们的仓库里
首先,利用git commit –m “内容” 命令填写注释,以表示上传这个文件的目的是什么。
在命令行中输入git commit –m “Upload my first file to project” 以表示这是上传的第一个文件,中英文即可,但尽可能还是用英语表达
随后用git push命令,需要输入Github的用户名和密码,随后提交到服务器,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/314392139e1c3a6b1920c8a9e93e7968.png)
d) 回到Github网页上查看文件是否被提交成功
如下图所示,Python文件已经成功的被提交到仓库中了
3. 更改第一个代码文件
进行仓库所在的文件夹,利用命令git pull来检查当前仓库是不是最新的
![](https://i-blog.csdnimg.cn/blog_migrate/24e1d77525311f745e1716651dad7c02.png)
出现”Already up-to-date”则说明当前仓库的代码都是最新的,不需要同步
再利用命令git status检查当前仓库内是否有文件被更改
出现”nothing tocommit”的信息,则说明该仓库内暂时没有文件被更改
现在将刚刚提交的Python脚本文件进行更改,具体过程不详述了,更改完后,再输入git status,会发现如下所示的变更信息:
![](https://i-blog.csdnimg.cn/blog_migrate/3605180d06fc7a269bc4faed92c40e6d.png)
此时出现了该文件被修改的信息,带有”modified”的标签
随后提交: git add FileOperation.py , git commit -m "Update my file" ,git push
如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/0faf7b600ba7d673e3012bc4a8b2bb2b.png)
到Github上查看变更情况:
点击该文件,查看差异:
![](https://i-blog.csdnimg.cn/blog_migrate/dee051bd1ea8934dd11877e4575552b2.png)
4. 重命名第一个代码文件
将Python脚本文件从” FileOperation.py”重命名为” Test.py”,注意一定要带扩展名!
利用命令: git mv -f 原文件名新文件名
改变此文件用命令:git mv -fFileOperation.py Test.py
![](https://i-blog.csdnimg.cn/blog_migrate/900fc2b0cf4b2016ffe1f0f639ae2a75.png)
此时在本地,文件名被改为了”Test.py”
利用git status 查看文件变更状态:
![](https://i-blog.csdnimg.cn/blog_migrate/c3f9173510dffa5f5be45de9e039e6a5.png)
该文件显示被重命名,被标记为”renamed”标签
提交该文件用以下命令: git add Test.py , git commit -m "Rename filefrom FileOperation.py to Test.py", git push 如下图:
Github上查看变更情况:
5. 删除第一个代码文件
直接在仓库内删除该文件,再输入git status命令查看文件变更状态:
![](https://i-blog.csdnimg.cn/blog_migrate/6b18779b24674056d47f10ea7463e5e8.png)
此时显示文件被删除,并被标记为”deleted”,随后提交该更改
提交命令: git commit -a -m "Delete file Test.py" ,git push
![](https://i-blog.csdnimg.cn/blog_migrate/635bb17de41b00d23c9ed9e65bf5b813.png)
Github上查看变更情况:
![](https://i-blog.csdnimg.cn/blog_migrate/4718537d4e1cc1f41bd2eab269b77a87.png)
此时该仓库又重新变为了空仓库
6. 将指定文件或者文件夹不上传到Github
现在本地仓库内添加若干个txt文件和一个Test文件夹,并用git status命令查看仓库文件变更情况:
此时显示在该仓库内有若干个txt文件和Test文件夹等待被提交
注意:文件夹为空是不会被显示
但这个时候不想提交txt文件和该文件夹并永久生效,则需要添加一个名为”.gitignore”的文件,并输入下列信息:
*.txt 所有txt文件
/Test/ Test文件夹
再利用git status命令查看文件更改状态,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/fefab59cab72f79ce218fd25da625397.png)
此时所有的txt文件和Test文件夹不被列为暂存队列,只留下.gitignore文件,需要被提交,只要提交了该文件,则会生效。
生效范围仅为单个文件夹内,不是所有仓库内都生效
7. 同步代码
在另一台机器上,我新创建了一个更改提交,在空仓库内提交了一个Python文件,在Github上如下图显示,那么在同步代码的时候,也会遇到两种情况![](https://i-blog.csdnimg.cn/blog_migrate/ad72d3733085abeead4d74690d5807ec.png)
a) 不先同步代码的情况下,尝试提交更改
通过上述命令,准备提交一个新文件进入仓库,但在最终提交的时候报错,最大的原因就是因为没有同步代码,造成提交失败的错误
b) 先同步代码,后续在做更改提交
把上述Hello.py的文件给删除,先进行同步代码,利用命令git pull进行操作
![](https://i-blog.csdnimg.cn/blog_migrate/d8d8f21bd332659d8c65fdbd95010c22.png)
此时我们看到,文件已经从仓库同步下来,之后再尝试刚刚想要添加的Hello.py,就能够被成功提交的仓库中了
![](https://i-blog.csdnimg.cn/blog_migrate/3058bb9014cc6960576b41208e1fa574.png)
进入Github再查看,同步代码过后,再次提交其他文件,确实是被提交到仓库了
![](https://i-blog.csdnimg.cn/blog_migrate/94a5922aa0517dd7826199a59a170969.png)
所以记得在每次要提交代码前,一定记得要用命令git pull去同步代码!
8. 批量增加代码文件
现在在MyTest所在的仓库文件夹内,复制多个Python文件,用git status命令进行查看文件变更状态
![](https://i-blog.csdnimg.cn/blog_migrate/e4fe57674da7333cd4f9f556d941e6d5.png)
为了不一个个添加省去时间,可以用命令git add . 或者git add –A 进行批量的提交,如下显示
此时批量文件被添加的暂存队列,该方法同样适用于批量被修改和删除的情况,随后提交这些批量文件到Github
![](https://i-blog.csdnimg.cn/blog_migrate/d0f819359e829caf37f410fd0410fa1a.png)
进Github查看这些批量添加的情况
![](https://i-blog.csdnimg.cn/blog_migrate/d84dee31f1ecdc52472409e9b8416aa2.png)
现在看到这些Python文件被批量的添加到了Github仓库中了
9. 创建本地分支
进入仓库,在命令提示符中输入命令git branchdev,以创建本地分支dev
输入命令,git checkout dev,切换到本地分支dev
输入命令,git branch ,查看当前仓库下有多少分支,带*号的为当前所处的分支
现在在dev分支上,创建一个txt文件名为Test.txt,内容为”Createfile on dev branch”,随后提交
![](https://i-blog.csdnimg.cn/blog_migrate/53343cadd4862ba01a9f930adde7fd74.png)
10. 合并本地分支
基于上一节内容,输入命令git checkout master切换回主分支master
输入命令,git branch ,查看当前仓库下有多少分支,带*号的为当前所处的分支,目前为主分支
输入命令,git merge dev,将dev分支上的内容合并到当前分支(主分支)
随后将其内容上传到仓库
![](https://i-blog.csdnimg.cn/blog_migrate/682c217abc78170444c7a2565e6c8628.png)
在Github上查看刚刚提交的内容,注释内容为之前在本地分支注明的内容:
![](https://i-blog.csdnimg.cn/blog_migrate/32c15df164cd0e30ee521dee476ecbc3.png)
11. 删除本地分支
在上一节合并完了本地分支的内容后,那么现在进行删除分支的操作
先通过命令git branch ,查看当前仓库下有多少分支,带*号的为当前所处的分支,当前为主分支
![](https://i-blog.csdnimg.cn/blog_migrate/5afb9670970d572742fa34f55f7c3681.png)
利用命令git branch –d dev ,去删除本地分支dev,删除后显示成功的信息
![](https://i-blog.csdnimg.cn/blog_migrate/751e24317d11462c16329e2353cb0a2e.png)
12. 冲突解决
在上述第9节的仓库中,利用git checkout –btest , 直接创建并进入本地分支test,将之前已经创建的txt文件Test.txt的内容进行更改,将内容改为”Editfile on local branch”,随后在test分支上进行提交
![](https://i-blog.csdnimg.cn/blog_migrate/f5fc007cbdbca1d308befc5703a74831.png)
随后利用命令git checkout master,切换回主分支master
先通过命令git branch ,查看当前仓库下有多少分支,当前回到了主分支
![](https://i-blog.csdnimg.cn/blog_migrate/613b585781b37c763c6d3b011169a466.png)
此时主分支上的Test.txt的内容还是为之前的”Create file ondev branch”
现在在主分支上将txt文件Test.txt的内容进行更改,将内容改为”Editfile on master branch”,随后在master分支上进行提交
![](https://i-blog.csdnimg.cn/blog_migrate/53980e93258d2e268cbd529c308ab6f9.png)
输入命令,git merge test,将test分支上的内容合并到当前分支(主分支),随后出现冲突报错
![](https://i-blog.csdnimg.cn/blog_migrate/b45554307631d8051aff7e2e4b0fb574.png)
找到该文件打开,查看出错内容
HEAD的内容为在主分支上更改未上传的”Edit file onmaster branch”
Test的内容为在本地test分支上更改未上传的”Edit file on localbranch”
![](https://i-blog.csdnimg.cn/blog_migrate/332c4dd7f0c46b2c10b9217a697eb979.png)
因为在本地分支上先进行更改的,所以这里需要手动处理,将Test.txt的内容删除Head的内容,只保留test分支上的内容,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/f1e37e7ee31dc836acb490c1950460e5.png)
随后上传提交此次操作:
![](https://i-blog.csdnimg.cn/blog_migrate/477d27c0f5ebccddcc40f7f9b9a98e2d.png)
在Github上查看此处提交操作内容:
此处操作经过了:本地分支更改、主分支更改、最后在主分支上通过手动解决冲突,回滚到本地分支更改的内容,最终解决了冲突。
![](https://i-blog.csdnimg.cn/blog_migrate/b25778ce96a8c487c44fe4b22b12a947.png)
13. 版本回退
版本回退是一个比较重要的功能,可以恢复到文件的之前的特地版本中
接下来在仓库里,新建一个txt文件,分别做三个版本的提交
提交文件内容分别为:
第一次 --- This is the 1st version of file
第二次 --- This is the 2nd version of file
第三次 --- This is the 3rd version of file
利用命令git log查看最近到最远的提交日志,而可以看到下图中显示的最近三个提交,而这三次提交正好是我对文件修改的三次操作产生的三个版本
按q键退出编辑模式
![](https://i-blog.csdnimg.cn/blog_migrate/f65e84974d54c95f4288cff89cb5bdc9.png)
为了简化输出信息,可以利用命令:git log--pretty=oneline 进行查看,会出现列表提交信息显示,下图中的前三条则是之前提交的三次操作。左侧黄色的数字和字母组成的序列,则为commit id,按q键退出编辑模式
现在由第三个版本回退到第二个版本:
输入命令:git reset --hard HEAD^ ,再后来弹出来的More?中再次输入^ ,这样文件就回退到了第二个版本,如下图显示
![](https://i-blog.csdnimg.cn/blog_migrate/97fd0909f8c51041b3cdd954d0a30913.png)
HEAD表示当前最新版本,^表示之前上一个版本,^^表示之前再上一个版本,如果是之前100个版本,则可以输入HEAD~100
根据命令git log --pretty=oneline显示的提交列表,找到第一个版本的commit id为5639bb4,只要取前7位即可,git会自动根据id号退回
![](https://i-blog.csdnimg.cn/blog_migrate/6547dae6da18757988b0404d0b5fd8bd.png)
现在找到了commit id为5639bb4,现在利用命令: git reset --hard 5639bb4 成功回退到第一个版本,如下图显示
![](https://i-blog.csdnimg.cn/blog_migrate/76801f1c0c12682518b91e39b5dbd2ef.png)
现在txt文件版本已经回退到了最初版本,那么现在又想前进到最新的第三版本,该怎么做?
先输入命令:git reflog ,该命令用来记录你的每一次命令,排序是从最近到最远
![](https://i-blog.csdnimg.cn/blog_migrate/8bb9752f57f9b529fc4fdc9336ba6679.png)
如上图所示,黄色框的两个commit id是刚刚做了两次回退操作后生成的,而蓝色框则是最后一次提交的第三版本,也是txt最新版本,是需要的,记录其commit id号62a7c73.
现在利用命令: git reset --hard 62a7c73 成功前往到了最新版本,如下图显示
![](https://i-blog.csdnimg.cn/blog_migrate/f65fa04701fc05819dc50f0c194c7910.png)
14. 在Github上查看仓库的有用信息
a) 查看提交数量
点击”commits”标签
![](https://i-blog.csdnimg.cn/blog_migrate/962f2f6f5292d0c90f8144e62f0332c2.png)
上图列表中显示所有提交的记录,随便选择一条记录点击查看
![](https://i-blog.csdnimg.cn/blog_migrate/b9ab9a04e6a7faca9d6510c49d6ad9c9.png)
b) 查看分支数量
![](https://i-blog.csdnimg.cn/blog_migrate/b65fd0413392c9588444b0691a9bd5bd.png)
默认的是master主分支,可以创建本地分支进行同步开发和合并
![](https://i-blog.csdnimg.cn/blog_migrate/06b47632c3de3ce40938e28cefe2d32a.png)
c) 发布产品
![](https://i-blog.csdnimg.cn/blog_migrate/d73354e5d9dd16dda3a9451ed2e18bd4.png)
在release标签下,可以通过”Create a new release”去发布产品
![](https://i-blog.csdnimg.cn/blog_migrate/83f734b7b78f56f151d5e3daa1454858.png)
d) 查看贡献的信息
![](https://i-blog.csdnimg.cn/blog_migrate/a7bf2b38c45f52b00b56d6dd35c09c0c.png)
在下图可以看到有多少人在此仓库中进行了提交的统计信息
![](https://i-blog.csdnimg.cn/blog_migrate/96c6f39b789141d2b80c57f6d17d0968.png)
e) 提交Bug和其他问题反馈
找到”Issues”标签卡,点击”New issue”按钮
![](https://i-blog.csdnimg.cn/blog_migrate/749be59007b4417c54c523c1c9eba944.png)
在下图显示的表格内填写问题描述,最后点击”Submit new issues”进行问题反馈
![](https://i-blog.csdnimg.cn/blog_migrate/d6942ca438e9d1510069fb445b339f5f.png)
f) 邀请其他人一起开发仓库
点击”Settings”标签卡,选择左侧”Collaborators”,在下方文本输入框内,输入其他人的github的id,随后点击”Add collaborator”按钮,在邀请人员经过邮件链接点击同意后,即可进行共同开发
![](https://i-blog.csdnimg.cn/blog_migrate/2f9eeb15e3c149285a0cd1e6b7f53b21.png)
15. 设置全局变量的账号和邮箱
在命令提示行内分别输入$
git config --global user.name"您的Github用户名"
git config --global user.email"您的Github邮箱"
16. 重命名仓库
点击”Settings”标签卡,选择左侧”Options”,在右侧文本输入框内,输入新的仓库名,最后点击”Rename”按钮
回到个人首页,仓库名已经被重命名为”NewTest”
![](https://i-blog.csdnimg.cn/blog_migrate/494217ee28952a06e5ffc2096a550bdc.png)
17. 删除仓库
点击”Settings”标签卡,选择左侧”Options”
![](https://i-blog.csdnimg.cn/blog_migrate/e04827e5b67c793ecaefc0a7312d7f28.png)
一直拖到底,发现”Danger Zone”并点击”Delete this repository”
![](https://i-blog.csdnimg.cn/blog_migrate/3ec8079f74d23f55a25330cdba6b6f22.png)
需要输入仓库名以确认
![](https://i-blog.csdnimg.cn/blog_migrate/cba72141cc2342a3fdda8150406356fa.png)
出现下列信息,则表示仓库删除成功
![](https://i-blog.csdnimg.cn/blog_migrate/1ffbf9ead04b0b0e1f1f4ae72906ba00.png)
18. 调整推送上传文件的大小
git config --global http.postBuffer 524288000 (500M)
19. 显示中文编码文件名
git config --global core.quotepath false
因项目主分支master不允许修改时,或者非此项目中的开发人员,想贡献代码,通过Pull Request方式来实现
a) 首先Fork想要提交代码的仓库到你个人的仓库下
b) 随后在Fork后的仓库,进行代码的更改,并且commit和push
c) 在Pull request标签栏中对修改的代码进行合并请求的操作
进入Pull request标签栏,点击”New pull request”按钮
此刻会看到”Comparing Changes”页面,会提示是从你本地的分支准备合并到项目主分支上,”Able to merge”表示未发现冲突信息可以合并,且显示你所更改代码的commits,数量不限。确认无误后,点击”Create pull request”按钮
d) 创建pull request请求
在点击上一步的” Create pull request”后,会出现合并分支从本地到远程主项目,填写的标题内容和评论。填完后,点击下方按钮” Create pull request”
e) 成功提交合并代码请求,等待主项目的拥有者合并操作
21. 令牌Token的创建
背景:Github在大约2021年8月13日后,将之前通过用户名和密码来完成提交的方式彻底废弃,原因是不够安全。而Github更希望用户通过使用令牌Token来实现提交,已保证安全
a) 登陆Github,并在右上角点击你的头像,在下拉菜单中点击"Settings"
b) 进入设置页面后,在左侧选项的下方找到"Developer settings",并点击
c) 进入"Developer settings"页面后,点击左侧"Personal access tokens"按钮,并进入
d) 点击右侧按钮"Generate new token",随后进入Github验证页面,输入密码后,进行令牌Token的创建
e) 进入"New personal access token"页面进行新令牌Token的创建,页面中Note栏是为Token取的名字;Expiration为过期日期;Select scopes为对仓库进行操作的权限
f) 根据对仓库操作,选择需要的权限,在这里作为演示,仅选择"repo"下的基本操作权限,勾选完毕后,点击最下方的"Generate token"按钮,来完成创建令牌Token的操作
g) 此时在页面上显示创建Token成功,token为"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"(而这里为了演示,会在之后删除这个Token)
还需注意的是,创建完Token后一定要复制Token,否则刷新页面后,这个token号就不会被显示了
h) 刷新页面后就能在当前的"Personal access tokens"页面中看到刚刚创建的Token了,至此令牌Token就创建完毕了
22. 令牌Token的使用
在上一节中已经创建了一个令牌token,为"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",现在就来使用它
a) 方法1:用刚刚生成的token登录,把上面生成的token粘贴到输入密码的地方
,然后成功提交
b) 方法2:把token直接添加远程仓库链接中,这样就可以避免同一个仓库每次提交代码都要输入token了
进入本地对应仓库,这个很重要!否则如果当前仓库连接的是别的仓库,那么会在同步代码的时候,会将别的仓库的内容也同步到当前仓库,会造成混乱,所以一定要注意!
在仓库内输入以下命令:
git remote set-url origin https://[token]@github.com/[你的用户名]/[你的仓库].git/
具体说明:
[token]即为刚刚生成的Token:"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"
[你的用户名]是你在Github上的用户名
[你的仓库]是你在Github上创建的仓库名
示例:git remote set-url origin https://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@github.com/Eason0731/MyPython.git/