完全卸载

程序卸载

控制面板 -> 卸载程序 -> 找到 git -> 右键卸载

卸载过程中做的2件事。①、删除git程序所在文件夹(C:\Program Files\git) ②、从 path 环境变量中删除 git的环境变量

删除 .ssh 文件夹

.ssh 文件夹所在目录 C:\Users\liangcy.ssh ,该目录用于存放用户的 SSH 秘钥

清空 git 中缓存的用户名密码

  1. git config --global credential.helper wincred
  2. git credential-manager uninstall

tips: 这种情况一般用在别人离职了,接收别人的电脑,上面的git已经配置好了用户名密码,我们如果还有上个离职人的用户名密码的话可能无法正常 push 代码

下载与安装、配置

下载

下载地址:https://git-scm.com/downloads
版本:Git-Setup_v2.16.0.2.exe
安装:默认安装即可
查看git版本

  1. git --version

配置

设置用户信息

打开shell窗口: 桌面右键 -> git bash

  1. $ git config --global user.name "liangcy001"
  2. $ git config --global user.email "2455398205@qq.com"

设置提交代码时的用户信息

查看当前配置

  1. $ git config --list

git快速入门

创建版本库

创建 git-learn 文件夹,进入 git-learn 文件夹中,执行如下命令:

  1. git init

tips: 创建文件夹所在的路径不要包含中文

添加到暂存区

在 git-learn 文件夹中创建 readme.txt 文件,并将其添加到暂存区中,命令如下:

  1. cd git-learn
  2. touch readme.txt
  3. git add readme.txt

tips 可以使用 git add . 一次性将当前目录下的所有文件添加到暂存区中

提交到版本库

使用如下命令,将暂存区中的内容一次性提交到 本地版本库

  1. $ git commit -m "add readme.txt file"

tips: 可以使用 git commit -am “提交说明” 直接将工作区的内容提交到版本库

查看版本库状态

使用如下命令,查看当前版本库状态

  1. $ git status

当我们在版本库中创建新的文件时,使用 git status 命令,git会告诉我们有文件未跟踪的文件(Untracked files),建议我们使用 git add 将其添加到版本库(暂存区)
Git 教程 - 图1
当使用 git add 命令将其添加到暂存区中,我们再次使用 git status 命令查看版本库状态
Git 教程 - 图2
当使用 git commit 命令将其提交到版本库中,我们使用 git status 命令查看当前版本库状态
Git 教程 - 图3
当版本库中的文件被修改时,使用 git status 命令查看,git会建议我们先将其添加到暂存区然后commit到版本库 或者 checkout 撤销修改
Git 教程 - 图4
撤销文件修改
Git 教程 - 图5

tips: 回滚操作后面单独讲解

差异比较

比较工作区、暂存区和版本库之间的差异

工作区与暂存区

  1. $ git diff [fileName] # 如果不指定文件,那就是整个工作区与暂存区做差异比较

暂存区与版本库

  1. $ git diff --cached [fileName] # 如果不指定文件,那就是整个暂存区与版本库做差异比较

工作区与版本库

  1. $ git diff HEAD [fileName] # 如果不指定文件,那就是整个工作区与版本库做差异比较

撤销操作

当我们进行误操作时,我们希望使用版本库中的内容同步(覆盖)到暂存区和工作区中,怎么做?

暂存区同步到工作区

  1. $ git checkout

版本库同步到工作区和暂存区

  1. $ git checkout HEAD

总结

日志与版本回退

查看日志

使用 git log 命令查看提交日志记录,只是包含每次 commit 的记录,不包含版本回退记录

  1. $ git log

image.png
使用 git reflog 命令查看所有分支提交日志记录,不仅包含 commit 记录还包含版本回退记录

  1. $ git reflog

image.png

tips: 上图中的 b414d78、e12e47b 和 80cde02 可以理解为每次提交生成的版本号(ID),后面我们需要这个来实现版本回退

版本回退

回退到当前版本的上一个版本

  1. $ git reset --hard HEAD^

回退到任意版本,这里需要使用 git loggit reflog 来查看所有的版本号

  1. $ git reset --hard b414d78 # b414d78 为版本号id

分支

查看分支

默认情况下,当前只有一个分支(master)

  1. $ git branch

tips: git branch 命令不仅能查看当前仓库中有哪些分支,还能看到我们位于哪个分支上

创建分支

创建 dev 分支

  1. $ git branch dev

切换分支

从 master 分支切换到 dev 分支

  1. $ git checkout dev

创建并切换分支

创建 test 分支,并切换到 test 分支

  1. $ git checkout -b test #相当于 git branch test 、 git checkout test 两步操作

删除分支

  1. $ git branch -d test # test 为要删除的分支名

合并分支

将指定分支内容合并到当前分支。
举例:将 test 分支 合并到 master 分支中。
1、切换到 test 分支(git checkout test)
2、修改文件(如在 1.txt 文件中添加一句 log.info(“test”); )
3、将修改的内容保存并提交到 test 分支中( git commit -am “add log.(test)” )
4、切换回 master 分支(git checkout master)
5、分支合并(git merge test)

  1. $ git merge test

冲突

对同个文件同个地方但是内容不同,在分支合并过程中就会引发冲突。
分支合并报错:
image.png
编辑冲突文件,然后重写提交到版本库即可(git commit -am “解决冲突”)

PS: 本地库与远程库的冲突后面再讲

分支创建与合并小案例

在工作中线上的分支为 master 主分支,我们需要开发某个功能模块时,需要创建开发模块的分支一般都是取 “feature/功能模块名” 为分支名称。如果在我们开发功能模块的过程中,线上出现了紧急的 BUG 需要修复,那么此时我们需要在 master 分支上创建一个专门修复这个 BUG的分支(取名一般以 hotfix/ 开头)。修复完BUG后,需要把内容合并到 master 分支上,然后删除刚才为了修复 BUG而创建出来的分支。待到功能模块开发完后,将功能模块分支的内容合并到 master 分支中
案例参考:
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

码云Gitee

介绍

官网地址:https://gitee.com/
Gitee 是开源中国社区2013年推出的基于 Git 的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。
主要功能:

  • 代码托管
  • 代码在线查看
  • 历史版本查看
  • Fork
  • Pull
  • 代码质量检测 等

    创建第一个仓库

    教程参考:https://gitee.com/help/articles/4120

    下载仓库代码

    打开git shell 命令行窗口,切换到需要放代码的目录,使用 git clone 命令下载代码
    git clone 网址 [本地目录名]
    1. git clone https://gitee.com/liang_chang_yuan/git-learn03.git # 以 HTTPS协议方式下载
    2. git clone git@gitee.com:liang_chang_yuan/git-learn03.git # 以 SSH 协议方式下载
    image.png

    tips: 若是私有仓库,下载代码的时候可能需要提供 Gitee 的账号和密码

代码推送到Gitee

目前 Gitee 支持使用HTTPS协议和ssh 协议进行代码的推送/拉取。两种协议的差别仅在于同一个仓库使用不同协议时的地址不同,以及对应的授权实现不同。

HTTPS 协议推送

1、编写或修改文件
2、添加到暂存区(git add .)
3、添加到本地库 (git commit -m “提交说明”)
4、推送到 Gitee(git push [远程主机别名] [远程地址])

PS: 使用 HTTPS 方式推送,每次都需要输入用户名密码! 如果发现没有输入用户名密码,也能推送成功的话,那就考虑一下是不是git缓存了用户名和密码信息。使用如下两条命令清理 git config —global credential.helper wincred git credential-manager uninstall

SSH 协议推送

SSH协议推送方式可以让我们每次 推送或拉取代码无需填写用户和密码,但也是有两个前提条件的!!

  1. 必须是仓库的拥有者
  2. 配置和添加好 SSH key

    生成 SSH 公钥

    打开 git bash ,输入如下命令生成 SSH key
    1. ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
    image.png

    查看SSH公钥内容

    1. cat ~/.ssh/id_rsa.pub

    将SSH公钥内容添加到 gitee

    复制生成后的 ssh key,通过仓库主页「管理」->「部署公钥管理」->「添加部署公钥」,添加生成的 public key 添加到仓库中。

    确认SSH公钥是否添加成功

    首次使用需要确认并添加主机到本机SSH可信列表,需要在终端(Terminal)中输入
    1. ssh -T git@gitee.com
    image.png

    测试

    我们以 SSH 协议方式下载
    1. git clone git@gitee.com:liang_chang_yuan/git-learn03.git
    然后做修改,本地提交,最后 git push

    tips: 此时我们发现往 gitee上 push不再需要填写用户名和密码

将本地仓库上传到Gitee

例如,我们有个本地仓库 git-learn04, 需要将本地仓库的内容上传到 Gitee 中。具体步骤

  1. 登录 Gitee,新建仓库名为 git-learn04。新建仓库完成后会得到类似于 git@gitee.com:liang_chang_yuan/git-learn04.git 的网址
  2. 本地库提交 (git commit )
  3. 添加远程主机

    1. git remote add origin git@gitee.com:liang_chang_yuan/git-learn04.git

    tips: 如果想要将代码同时推送到 github 和 gitee 上,可以使用 git remote add 命令分别为 github 和 gitee添加主机

    4. 本地的master分支推送到origin主机,同时指定origin为默认主机

    1. git push -u origin master

    补充: 可以使用 git remote -v 查看当前所有的远程主机和别名

Git配置多个SSH-Key

背景

当有多个git账号时,比如:
a. 一个gitee,用于公司内部的工作开发;b. 一个github,用于自己进行一些开发活动;

解决方法

  1. 生成一个公司用的SSH-Key
    1. ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa
    1. 生成一个github用的SSH-Key
      1. ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
    2. 在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
      1. # gitee
      2. Host gitee.com
      3. HostName gitee.com
      4. PreferredAuthentications publickey
      5. IdentityFile ~/.ssh/gitee_id_rsa
      6. # github
      7. Host github.com
      8. HostName github.com
      9. PreferredAuthentications publickey
      10. IdentityFile ~/.ssh/github_id_rsa
    3. 用ssh命令分别测试
      1. $ ssh -T git@gitee.com
      2. $ ssh -T git@github.com
      这里以gitee为例,成功的话会返回下图内容
      Git 教程 - 图12

      Git与IDEA整合使用

      配置 IDEA 集成 Git

      打开 IDEA -> 点击 File -> 点击Settings

      tips: 可以使用快捷键 Ctrl + Alt + s

image.png

配置登录Gitee的账号和密码

image.png

将远程仓库项目下载到 idea中

image.png
image.png