Git和GitHub的使用

Posted 大彤小忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git和GitHub的使用相关的知识,希望对你有一定的参考价值。

1. Git和GitHub简介

  Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

  GitHub是世界上最大的软件远程仓库,是一个面向开源和私有软件项目的托管平台,使用Git做分布式版本控制。

2. Git和SVN的区别

  SVN(Subversion)属于集中式的版本控制系统。集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
  优点:每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。
  缺点:中央服务器的单点故障、容错性差。

  Git属于分布式的版本控制系统。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的Git仓库。

3. GitHub的基本概念和用途

3.1 GitHub的基本概念

  仓库(Repository):用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库。
  收藏(Star):用来收藏项目,方便下次查看。
  复制克隆项目(Fork)
  发起请求(Pull Request)
  关注(Watch):关注项目,当项目更新可以接收到通知。
  事务卡片(Issue)
  GitHub主页: 左侧主要显示用户动态及关注的用户或仓库的动态;右侧显示所有的git库。
  仓库主页: 主要显示项目的信息。
  个人主页: 显示个人信息。

3.2 GitHub的用途

  GitHub大概有三种用途:

  1. 合作开发
      如果有多个人一起开发某项目,把仓库设在GitHub,大家在各自笔记本写代码、修改使用git上传、同步,避免了复制粘贴代码,而且还能实现版本控制,谁修改了什么内容一清二楚,连谁写了多少行改了多少行代码都能统计清楚。摸鱼是不可能的。
  2. 软件仓库
      GitHub提供两种仓库私有仓库和公开仓库。GitHub免费为所有用户提供公开仓库空间,公开仓库向网络公开,所有人都能访问,但只有所有者和授权用户才能修改。私有仓库不对外公开,但要向GitHub付费。
  3. 代码公开
      我们可以在这里找到全世界程序员的劳动成果,上到各种算法实现、下到各种app源码。只要遵循开源协议,都可以copy下来用。

4. Git的工作流程

  1. 从远程仓库中克隆Git资源作为本地仓库;
  2. 从本地仓库中checkout代码然后进行代码修改;
  3. 在提交前先将代码提交到暂存区;
  4. 提交修改到本地仓库,本地仓库中保存修改的各个历史版本;
  5. 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。

5. Git的安装和Github的注册

5.1 Git的安装

  Git的使用需要安装Git和TortoiseGit两个软件。

  Git 2.31.1安装步骤→Git 2.31.1的安装

  TortoiseGit-2.8.0.0安装步骤→TortoiseGit-2.8.0.0的安装

5.2 GitHub的注册

  进入GitHub网页,点击右上角的Sign up,根据步骤完成账号的注册。

6. Git和GitHub的使用

6.1 创建本地仓库

  • step1:新建一个本地仓库文件夹Repository,在本地仓库文件夹下再新建一个空的文件夹test
      
      
  • step2:双击进入test文件夹,鼠标右击,点击Git GUI Here(或者点击下面的Git Bash Here);
      
      
  • step3:如果第2步点击Git GUI Here的话,点击Create New Repository
      
      
      如果第2步点击Git Bash Here的话,在命令框输入git init,直接跳转到第6步;
      
      
  • step4:点击Browse,找到我们新建的空文件夹test,点击Create
      
      
  • step5:出现如下界面,关闭即可;
      
      
  • step6:点击文件资源管理器左上角的文件按钮,点击更改文件和搜索选项,然后点击查看,找到隐藏文件和文件夹,点击显示隐藏的文件、文件夹和驱动器,最后点击确定
      
      
  • step7:可以在test文件夹下看到.git的文件夹,本地仓库创建完毕。
      

6.2 向本地仓库中添加文件

  • step1:在本地仓库的.git文件夹的同一路径下,添加文件;
      
      
  • step2:选中添加的文件,鼠标右击,点击TortoiseGit下的Add...
      
      
  • step3:出现Finished!Success后,添加完成,点击OK
      
      
  • step4:在test文件夹下可以看到刚才新建的文件图标上多了一个蓝色的加号,说明我们将此文件添加到暂存区;
        
  • step5:选中带有蓝色加号的文件,鼠标右击,点击Git Commit -> "master"...
      
      
  • step6:在Message栏填写信息,点击Commit
      
      
  • step7:出现Success,点击Close
      
      
  • step8:在test文件夹下可以看到新建的文件图标上蓝色加号变为绿色的对号,说明我们已将此文件提交到本地仓库;
      

6.3 修改本地仓库中的文件内容并提交

  • step1:将本地仓库中的hello.txt文件内容进行修改,会发现文件图标上的绿色对号变为红色的叹号
      
      
  • step2:选中带有红色叹号的文件,鼠标右击,点击Git Commit -> "master"...
      
      
  • step3:在Message栏填写信息,点击Commit
      
      
  • step4:出现Success,点击Close
      
      
  • step5:在本地仓库中可以看到hello.txt文件图标上的红色叹号变为绿色的对号,双击打开文件看到内容已修改成功,说明我们已将此文件内容成功修改并提交到本地仓库;
      
      
  • step6:选中带有绿色对号的文件,鼠标右击,点击TortoiseGit下的Show log
      
      
  • step7:可以看到hello.txt文件目前共有两个版本;
      
      
  • step8:如果想看hello.txt文件的两个版本有什么变化,选中两个记录,鼠标右击,点击Compare revisions
      
      
  • step9:可以看到两个版本之间的差异。
      

6.4 删除本地仓库中的文件

  • step1:按Delete键将本地仓库中的文件删除,在test文件夹下看不到hello.txt文件,鼠标右击,点击TortoiseGit下的Repo-browser
      
      
  • step2:在版本库浏览器中可以看到hello.txt文件依旧存在,说明仓库中的文件并没有真正被删除,我们可以将文件还原回来;
      
      
  • step3:在test文件夹下,鼠标右击,点击TortoiseGit下的Revert...
      
      
  • step4:选中要恢复的文件,点击OK,出现Finish!Success,点击OK
      
      
  • step5:在test文件夹下,可以看到hello.txt文件又出现了;
      
      
  • step6:想要彻底删除hello.txt文件,按Delete键删除本地仓库中的文件后,鼠标右击,点击Git Commit -> "master"...
      
      
  • step7:在Message栏填写信息,点击Commit,出现Success,点击Close
      
      
  • step8:再次查看版本库浏览器(鼠标右击,点击TortoiseGit下的Repo-browser),可以看到hello.txt文件不存在了,说明仓库中的文件被真正删除;
      
      
  • step9:还有一种删除并保留本地副本的删除方式,再次新建一个hello.txt文件并添加到本地仓库,鼠标右击,点击TortoiseGit下的Delete(keep local)
      
      
  • step10:点击Remove,然后点击确定
      
      
  • step11:发现hello.txt文件图标上绿色对号变为红色的叉号,鼠标右击,点击Git Commit -> "master"...
      
      
  • step12:在Message栏填写信息,点击Commit,出现Success后,点击Close
      
      
  • step13:回到test文件夹下,发现hello.txt文件图标上的红色叉号不见了,查看版本库浏览器(鼠标右击,点击TortoiseGit下的Repo-browser),可以看到hello.txt文件不存在了,说明仓库中的文件被真正删除,但本地副本还存在。
      

6.5 将工程添加到本地仓库

  • step1:将之前实现的机房预约系统工程复制到本地仓库的.git文件夹的同一路径下;
      
      
  • step2:选中此文件夹,鼠标右击,点击TortoiseGit下的Add...,然后点击OK,出现Finished! Success后,点击OK,可以看到文件夹的图标上出现了红色的叹号,表示已将文件夹放到暂存区;
      
      
  • step3:将工程文件添加到本地仓库前,可以对工程文件夹中的某些文件进行忽略操作,不将它们提交到本地仓库中。双击打开机房预约系统文件夹,选中要忽略的文件,鼠标右击,点击TortoiseGit下的Delete and add to ignore list下的admin.txt
      
      
  • step4:选择Ignore item(s) recursively.gitignore in the containing directories of the items,点击OK,然后点击,再点击确定
      
      
  • step5:可以看到admin.txt文件图标下面的蓝色加号没有了,并多了一个.gitignore文件; .gitignore 文件需要添加到暂存区(选中此文件,鼠标右击,点击TortoiseGit下的Add...,出现Finished!Success后,然后点击OK);
      
      
  • step6:将test路径中的机房预约系统文件夹提交到本地仓库(选中此文件夹,鼠标右击,点击Git Commit -> "master"...,在Message栏填写信息,点击Commit,出现Success后,点击Close),发现机房预约系统文件夹图标下的红色叹号变为绿色的对号,查看版本库浏览器(鼠标右击,点击TortoiseGit下的Repo-browser),出现了机房预约系统文件夹,说明我们已将此工程提交到本地仓库。
      

6.6 创建远程仓库

  • step1:账号注册完成后,进行登录,进入Github网页的个人主页,点击左上方的加号+下的New repository按钮新建仓库;
      
      
  • step2:在跳转到的新页面中输入项目名称Repository name(必填)及描述Description(可选),点击下方的Create repository按钮确认创建,即可创建一个新的远程仓库;
      
      
  • step3:创建好远程仓库后,会出现如下界面。
      

6.7 将本地仓库推送到远程仓库

6.7.1 使用SSH方式

  • step1:创建好远程仓库test后,在如下界面点击SSH
      
      
  • step2:在本地仓库的test文件夹下,鼠标右击,点击Git Bash Here,在命令行输入ssh-keygen -t rsa,然后一直回车,会生成密钥对;
      
      
  • step3:在C:\\Users\\Administrator\\.ssh路径下,可以看到两个文件,其中id_rsa是私钥,id_rsa.pub是公钥;
      
      
  • step4:使用EditPlus文字编辑器打开id_rsa.pub文件,复制里面所有内容;
      
      
  • step5:切换到刚开创建好远程仓库后得到的Github页面上,点击自己头像下面的Settings
      
      
  • step6:点击SSH and GPG keys,然后点击New SSH key,在下一个界面中,在Title栏输入title,在Key栏粘贴刚才复制的公钥,点击Add SSH key
      
      
  • step7:出现如下界面,说明我们已将公钥配置好;
      
      
  • step8:回到本地仓库的test文件夹下,鼠标右击,点击Git Bash Here,在命令行输入git remote add origin+从新建好的远程仓库页面复制的SSH路径,然后一直回车,使本地仓库与远程仓库建立联系;再输入git push -u origin master,然后回车,输入yes,回车,将本地仓库推送到远程;
      
      
  • step9:刷新Github页面,可以看到本地仓库中的机房预约系统已经推送到远程仓库test中;
      
      
  • step10:除了使用命令行外,还可以使用图形用户界面进行推送。在本地仓库的test文件夹下,鼠标右击,点击Git Sync...,然后点击Manage,双击origin,发现远程仓库testRemoteURL已存在,点击Remove进行删除,然后依次点击确定Close,将我们之前用命令行建立的与远程的连接删除;
      
      
  • step11:在Github页面重新新建一个远程仓库test2,复制SSH路径,在本地仓库的test文件夹下,鼠标右击,点击Git Sync...,然后点击Manage,在左侧菜单栏选择Git下的Remote,依次填写Remote(填写origin)和URL(填写SSH路径)栏的内容;在填写Putty Key之前,先要确保左侧菜单栏Network中的SSH clientC:\\Program Files\\Git\\usr\\bin\\ssh.exe,然后在Git下的Remote中填写Putty Key,点其后面的三个点...,选择C:\\Users\\Administrator\\.ssh\\id_rsa(选择id_rsa文件时,需要将文件类型设为All Files(*.*)),点击Add New/Save,会在Remote栏内出现origin,然后点击确定,本地仓库就和远程仓库建立联系;
      
      
  • step12:建立联系后,在如下界面点击Push,然后点击,出现Success后,点击Close,就把我们的本地仓库成功推送到远程仓库;
      
      
  • step13:刷新Github页面,可以看到本地仓库中的机房预约系统已经推送到远程仓库test2中。
      

6.7.2 使用HTTPS方式

  • step1:在Github网页新建一个远程仓库test3,在如下界面,点击HTTPS,复制后面框中的内容;
      
      
  • step2:在本地仓库的test文件夹下,鼠标右击,点击Git Sync...,然后点击Manage,在左侧菜单栏选择Git下的Remote,依次填写Remote(填写origin1)和URL(填写复制的HTTPS路径)栏的内容,点击Add New/Save,再点击,会在Remote栏内出现origin1,然后点击确定,本地仓库就和远程仓库建立联系;
      
      
  • step3:建立联系后,在如下界面的Remote URL栏选择origin1,然后点击Push,出现Success后,点击Close,就把我们的本地仓库成功推送到远程仓库;
      
      
  • step4:刷新Github页面,可以看到本地仓库中的机房预约系统已经推送到远程仓库test3中。
      

6.8 克隆远程仓库到本地

  • step1:新建一个文件夹Clone-test作为克隆远程仓库到本地的存放路径;
      

6.8.1 使用SSH方式

  • step1:在Github页面打开要克隆的远程仓库test,点击右上角的Code下的SSH,复制路径;
      
      
  • step2:在Clone-test文件夹中,鼠标右击,点击Git Bash Here,在命令行输入git clone+复制的SSH路径,然后回车,可以在Clone-test文件夹下看到远程仓库test文件夹的出现,说明已克隆成功。
      

6.8.2 使用HTTPS方式

  • step1:除了使用命令行外,还可以使用图像用户界面进行克隆。在Github页面重新打开一个要克隆的远程仓库test2,点击右上角的Code下的HTTPS,复制路径;
      
      
  • step2:在Clone-test文件夹中,鼠标右击,点击Git Clone...,在跳出的界面的URL栏中粘贴刚复制的远程仓库test2HTTPS路径,点击OK,出现Success后,点击Close
      
      
  • step3:可以在Clone-test文件夹下看到远程仓库test2文件夹的出现,说明已克隆成功。
      

以上是关于Git和GitHub的使用的主要内容,如果未能解决你的问题,请参考以下文章

工具 --- Git使用

使用git 提交代码到github

git原程仓库学习

Git简单学习

通过Git向Github提交代码(Windows系统)

刘凯:GIT操作与学习心得