Git&Github完全指南

2020.12.18

  • 1. Git简介
  • 2. Git与SVN区别
  • 3. Git安装
    • 3.1 windows
    • 3.2 Debian/Ubuntu
  • 4. Git配置
    • 4.1 github注册
    • 4.2 配置用户名与邮箱
    • 4.3 生成ssh公私钥
    • 4.4 配置ssh公钥
      • 4.4.1 复制ssh公钥
      • 4.4.2 在GitHub配置ssh公钥
  • 5. Git操作
    • 5.1 创建版本库
    • 5.2 添加 / 删除文件
    • 5.3 查看状态
    • 5.4 提交文件
    • 5.5 比较文件
    • 5.6 回退版本
    • 5.7 提交日志
  • 6. 远程操作
    • 6.1 Github创建Git仓库
    • 6.2 本地仓库与Github远程仓库关联
    • 6.3 文件推送
    • 6.4 SSH警告
    • 6.5 从远程库克隆
  • 7. 分支管理
    • 7.1 创建分支
    • 7.2 合并分支
    • 7.3 删除分支

1. Git简介

Git是目前世界上最先进的分布式版本控制系统。
Git&Github完全指南_第1张图片

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(本地仓库)
  • Remote:远程仓库

2. Git与SVN区别

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。
  • Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

3. Git安装

3.1 windows

官网:https://git-scm.com/downloads
Git&Github完全指南_第2张图片

Git&Github完全指南_第3张图片
Git&Github完全指南_第4张图片
Git&Github完全指南_第5张图片
       最后两项建议选择:TrueType字体让命令行中的文字更加清晰,每天检查更新保证你可以一直运行Git的最新版本。

  • Use a TrueType font in all console windows 在所有控制台窗口中使用TrueType字体
  • Check daily for Git for Windows updates 每天检查Git是否有Windows更新

Git&Github完全指南_第6张图片
Git&Github完全指南_第7张图片Git&Github完全指南_第8张图片
Git&Github完全指南_第9张图片
       如果需要对Unix环境进行操作需要选择第三项,这样就可以在Windows命令行中直接使用这些命令。
Git&Github完全指南_第10张图片

  • Use the OpenSSL library:使用OpenSSL库,服务器证书将通过ca-bundle.crt文件验证。
  • Use the native Windows Secure Channel library:使用本地Windows安全通道库,可以和企业环境更好的集成,便于和企业域中的证书认证方式一起工作。

Git&Github完全指南_第11张图片
Git&Github完全指南_第12张图片
Git将使用Windows的默认控制台窗口(“cmd.exe”)
Git&Github完全指南_第13张图片
Git&Github完全指南_第14张图片
Git&Github完全指南_第15张图片
Git&Github完全指南_第16张图片
Git&Github完全指南_第17张图片
Git&Github完全指南_第18张图片
安装成功测试:
(1)桌面鼠标右键出现:Git Gui HereGit Bash Here
Git&Github完全指南_第19张图片
(2)win键+r键+输入cmd打开windows控制台,输入git --version,出现:
Git&Github完全指南_第20张图片
Git&Github完全指南_第21张图片
测试成功则表明Git安装成功。

3.2 Debian/Ubuntu

For the latest stable version for your release of Debian/Ubuntu

sudo apt-get install git

For Ubuntu, this PPA provides the latest stable upstream Git version

sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

4. Git配置

4.1 github注册

git安装好之后去github上注册一个账号

4.2 配置用户名与邮箱

配置用户名,将username替换成github用户名:

git config --global user.name "username"

配置邮箱,将[email protected]替换成github中保留的邮箱:

git config --global user.email "[email protected]" 

查看配置是否成功:

git config --global --list

在这里插入图片描述
也可以直接编辑Git配置文件:

git config -e --global

Git&Github完全指南_第22张图片
清除gui.recentrepo

git config --global --unset-all gui.recentrepo

4.3 生成ssh公私钥

ssh-keygen -t rsa -C "[email protected]"

[email protected]替换成Github中保留的邮箱。执行代码(三次回车)。
Git&Github完全指南_第23张图片
ssh保存公钥的文件所在路径:C:\Users\HN-DONG\.ssh\id_rsa.pub
在这里插入图片描述

4.4 配置ssh公钥

4.4.1 复制ssh公钥

桌面右键 -> Git Bash Here -> cd ~/.ssh
Git&Github完全指南_第24张图片
cat id_rsa.pub输出公钥,复制公钥
Git&Github完全指南_第25张图片

4.4.2 在GitHub配置ssh公钥

  1. 登陆GitHub,打开Settings
    Git&Github完全指南_第26张图片
  2. SSH and GPG keys
    Git&Github完全指南_第27张图片
  3. New SSH key
    Git&Github完全指南_第28张图片
  4. 创建SSH KeyTitle内容随意,将id_rsa.pub中的公钥复制到Key文本框,Add SSH Key
    Git&Github完全指南_第29张图片
  5. Confirm password 确认密码
    Git&Github完全指南_第30张图片
  6. 成功
    Git&Github完全指南_第31张图片

5. Git操作

5.1 创建版本库

版本库(repository)又名仓库,即本地仓库,可以看做一个目录,这个目录里的所有文件都由Git进行管理,目录中每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  1. 创建空目录
    Git&Github完全指南_第32张图片
  2. 通过git init命令来初始化一个Git仓库
    Git使用git init命令来初始化一个Git仓库,在执行完成git init命令后,Git仓库会生成一个.git目录(默认隐藏),这个目录是Git用来跟踪管理版本的。有两种初始化的方式。
        1)在目录中初始化git init
            Git&Github完全指南_第33张图片
            Git&Github完全指南_第34张图片
        2) 指定要初始化的目录
            git init new-repository

5.2 添加 / 删除文件

使用git add命令将需要加入版本控制的文件添加到暂存区。

git add . #添加目录中所有的文件到暂存区
git add [dir] #添加指定目录的文件到暂存区
git add *.txt #使用通配符,添加后缀为txt的文件
git add [file1] [file2] ... #添加指定的一个或多个文件到暂存区
git rm [file1] [file2] ... #删除工作区文件,并且将这次删除放入暂存区
git rm -f [file1] [file2] ... #如果工作区文件在删除之前修改过并且已经放到暂存区的话,必须要用强制删除选项 -f
git rm --cached [file] #停止追踪指定文件,从暂存区中删除文件,但该文件会保留在工作区
git mv [file-original] [file-renamed] #移动或重命名一个文件、目录、软连接,并且将这个变化放入暂存区

在这里插入图片描述
Git&Github完全指南_第35张图片

5.3 查看状态

git status命令用于查看在你上次提交之后是否有对文件进行再次修改。
Git&Github完全指南_第36张图片
git ls-files查看已经存放在本地仓库的文件。
在这里插入图片描述

5.4 提交文件

使用git commit命令将添加到暂存区的文件提交到版本库。

git commit -m [注释可选] #提交暂存区的所有文件到版本库
git commit [file1] [file2] -m [注释可选] #提交暂存区的指定文件到仓库区
git commit -a -m [注释可选] #提交工作区自上次commit之后的变化,直接到仓库区,不需要执行git add命令
git commit -v #提交时显示所有diff信息
git commit --amend -m [message] #使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息

在这里插入图片描述

5.5 比较文件

git diff命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
文件添加一行:hello world
Git&Github完全指南_第37张图片

git diff [file] #查看暂存区与工作区之间的差异
git diff --cached [file] #或 git diff --staged [file],显示暂存区与上一次提交(commit)之间的差异
git diff HEAD #查看已缓存的与未缓存的所有改动
git diff [first branch] [second branch] #查看两个分支之间的差异

Git&Github完全指南_第38张图片

5.6 回退版本

git reset 命令用于回退版本,格式如下:

git reset [--soft | --mixed | --hard | --keep] [HEAD]

默认使用--mixed ,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件保持不变。
--soft用于回退到某个版本。
--hard用于重置暂存区与工作区,与上一次commit保持一致。
--keep用于重置当前HEAD为指定commit,但保持暂存区和工作区不变
HEAD说明:

HEAD 表示当前版本 #HEAD~0 表示当前版本
HEAD^ 上一个版本 #HEAD~1 上一个版本
HEAD^^ 上上一个版本 #HEAD^2 上上一个版本
以此类推...

5.7 提交日志

git log #显示当前分支的版本历史
git log --stat #显示commit历史,以及每次commit发生变更的文件
git log -S [keyword] #根据关键词搜索提交历史

6. 远程操作

现在的情景是:我们在本地创建了一个Git仓库(Repository)后,又想在Github创建一个Git远程仓库,即公网服务器上的仓库,并且希望这两个仓库进行远程同步,这样Github的仓库既可以作为备份,又可以其他人通过该仓库来协作。

6.1 Github创建Git仓库

  1. 登录Github,然后在右上角找到“New repository”,创建一个新的仓库。
    Git&Github完全指南_第39张图片
  2. Repository name”填写要创建的Git仓库名称,其他默认,点击Create repository创建仓库。
    Git&Github完全指南_第40张图片
    Git&Github完全指南_第41张图片

6.2 本地仓库与Github远程仓库关联

在本地仓库中运行指令:

git remote add origin [email protected]:Fintan-workspace/Test.git #Fintan-workspace/Test.git要替换成与本地仓库相关联的Github远程仓库,远程仓库命名为origin,这是Git默认的叫法,可以更改。
git remote -v #显示所有远程仓库
git remote show https://github.com/Fintan-workspace/Test #显示远程仓库的信息

Git&Github完全指南_第42张图片
Git&Github完全指南_第43张图片

6.3 文件推送

git push命令用于将本地的分支版本上传到远程仓库,指令如下:

git push <远程主机名> <本地分支名>:<远程分支名> #如果本地分支名与远程分支名相同,则可以写作:git push <远程主机名> <本地分支名>
git push --force <远程主机名> <本地分支名> #如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
git push <远程主机名>--delete <远程分支名> #删除主机的分支可以使用 --delete 参数

由于远程仓库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程仓库中新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git push -u origin master

Git&Github完全指南_第44张图片
Git&Github完全指南_第45张图片

6.4 SSH警告

当你第一次使用Gitclone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHubKey的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHubKey添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

6.5 从远程库克隆

  1. 我们需要克隆一个已经存在的仓库:
    Git&Github完全指南_第46张图片
  2. 我们要找到并复制其HTTPSSSH地址:
    Git&Github完全指南_第47张图片
    Git&Github完全指南_第48张图片
  3. 使用命令git clone克隆到本地仓库:
#本地目录可选,不设置默认为命令行对应的路径
git clone https://github.com/chaozh/awesome-blockchain-cn.git [本地目录]
git clone [email protected]:chaozh/awesome-blockchain-cn.git [本地目录]

在这里插入图片描述

7. 分支管理

       分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
       现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

7.1 创建分支

git branch #查看分支,当前分支前会标一个 *
git branch new_branch #新建分支 new_branch
git checkout new_branch #切换到 new_branch 分支
git checkout -b new_branch #git checkout命令加上-b参数表示创建并切换

在这里插入图片描述
在不同分支中修改文件:
Git&Github完全指南_第49张图片

7.2 合并分支

git merge new_branch#git merge 指令用于将 branch 分支与当前分支合并

Git&Github完全指南_第50张图片

7.3 删除分支

git branch -d new_branch #git branch -d 指令删除 branch 分支

在这里插入图片描述

参考:1. Git使用教程,最详细,最傻瓜,最浅显,真正手把手教
           2. 常用 Git 命令清单
           3. Git远程仓库与分支管理
           4. 廖雪峰老师的Git教程

你可能感兴趣的:(git与github,github,git)