完全卸载
程序卸载
控制面板 -> 卸载程序 -> 找到 git -> 右键卸载
卸载过程中做的2件事。①、删除git程序所在文件夹(C:\Program Files\git) ②、从 path 环境变量中删除 git的环境变量
删除 .ssh 文件夹
.ssh 文件夹所在目录 C:\Users\liangcy.ssh ,该目录用于存放用户的 SSH 秘钥
清空 git 中缓存的用户名密码
git config --global credential.helper wincred
git credential-manager uninstall
tips: 这种情况一般用在别人离职了,接收别人的电脑,上面的git已经配置好了用户名密码,我们如果还有上个离职人的用户名密码的话可能无法正常 push 代码
下载与安装、配置
下载
下载地址:https://git-scm.com/downloads
版本:Git-Setup_v2.16.0.2.exe
安装:默认安装即可
查看git版本
git --version
配置
设置用户信息
打开shell窗口: 桌面右键 -> git bash
$ git config --global user.name "liangcy001"
$ git config --global user.email "2455398205@qq.com"
设置提交代码时的用户信息
查看当前配置
$ git config --list
git快速入门
创建版本库
创建 git-learn 文件夹,进入 git-learn 文件夹中,执行如下命令:
git init
tips: 创建文件夹所在的路径不要包含中文
添加到暂存区
在 git-learn 文件夹中创建 readme.txt 文件,并将其添加到暂存区中,命令如下:
cd git-learn
touch readme.txt
git add readme.txt
tips 可以使用 git add . 一次性将当前目录下的所有文件添加到暂存区中
提交到版本库
使用如下命令,将暂存区中的内容一次性提交到 本地版本库 中
$ git commit -m "add readme.txt file"
tips: 可以使用 git commit -am “提交说明” 直接将工作区的内容提交到版本库
查看版本库状态
使用如下命令,查看当前版本库状态
$ git status
当我们在版本库中创建新的文件时,使用 git status 命令,git会告诉我们有文件未跟踪的文件(Untracked files),建议我们使用 git add 将其添加到版本库(暂存区)
当使用 git add 命令将其添加到暂存区中,我们再次使用 git status 命令查看版本库状态
当使用 git commit 命令将其提交到版本库中,我们使用 git status 命令查看当前版本库状态
当版本库中的文件被修改时,使用 git status 命令查看,git会建议我们先将其添加到暂存区然后commit到版本库 或者 checkout 撤销修改
撤销文件修改
tips: 回滚操作后面单独讲解
差异比较
工作区与暂存区
$ git diff [fileName] # 如果不指定文件,那就是整个工作区与暂存区做差异比较
暂存区与版本库
$ git diff --cached [fileName] # 如果不指定文件,那就是整个暂存区与版本库做差异比较
工作区与版本库
$ git diff HEAD [fileName] # 如果不指定文件,那就是整个工作区与版本库做差异比较
撤销操作
当我们进行误操作时,我们希望使用版本库中的内容同步(覆盖)到暂存区和工作区中,怎么做?
暂存区同步到工作区
$ git checkout
版本库同步到工作区和暂存区
$ git checkout HEAD
总结
日志与版本回退
查看日志
使用 git log 命令查看提交日志记录,只是包含每次 commit 的记录,不包含版本回退记录
$ git log
使用 git reflog 命令查看所有分支提交日志记录,不仅包含 commit 记录还包含版本回退记录
$ git reflog
tips: 上图中的 b414d78、e12e47b 和 80cde02 可以理解为每次提交生成的版本号(ID),后面我们需要这个来实现版本回退
版本回退
回退到当前版本的上一个版本
$ git reset --hard HEAD^
回退到任意版本,这里需要使用 git log 或 git reflog 来查看所有的版本号
$ git reset --hard b414d78 # b414d78 为版本号id
分支
查看分支
默认情况下,当前只有一个分支(master)
$ git branch
tips: git branch 命令不仅能查看当前仓库中有哪些分支,还能看到我们位于哪个分支上
创建分支
创建 dev 分支
$ git branch dev
切换分支
从 master 分支切换到 dev 分支
$ git checkout dev
创建并切换分支
创建 test 分支,并切换到 test 分支
$ git checkout -b test #相当于 git branch test 、 git checkout test 两步操作
删除分支
$ 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)
$ git merge test
冲突
对同个文件同个地方但是内容不同,在分支合并过程中就会引发冲突。
分支合并报错:
编辑冲突文件,然后重写提交到版本库即可(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 网址 [本地目录名]git clone https://gitee.com/liang_chang_yuan/git-learn03.git # 以 HTTPS协议方式下载
git clone git@gitee.com:liang_chang_yuan/git-learn03.git # 以 SSH 协议方式下载
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协议推送方式可以让我们每次 推送或拉取代码无需填写用户和密码,但也是有两个前提条件的!!
- 必须是仓库的拥有者
- 配置和添加好 SSH key
生成 SSH 公钥
打开 git bash ,输入如下命令生成 SSH keyssh-keygen -t rsa -C "xxxxx@xxxxx.com"
查看SSH公钥内容
cat ~/.ssh/id_rsa.pub
将SSH公钥内容添加到 gitee
复制生成后的 ssh key,通过仓库主页「管理」->「部署公钥管理」->「添加部署公钥」,添加生成的 public key 添加到仓库中。确认SSH公钥是否添加成功
首次使用需要确认并添加主机到本机SSH可信列表,需要在终端(Terminal)中输入ssh -T git@gitee.com
测试
我们以 SSH 协议方式下载
然后做修改,本地提交,最后 git pushgit clone git@gitee.com:liang_chang_yuan/git-learn03.git
tips: 此时我们发现往 gitee上 push不再需要填写用户名和密码
将本地仓库上传到Gitee
例如,我们有个本地仓库 git-learn04, 需要将本地仓库的内容上传到 Gitee 中。具体步骤
- 登录 Gitee,新建仓库名为 git-learn04。新建仓库完成后会得到类似于 git@gitee.com:liang_chang_yuan/git-learn04.git 的网址
- 本地库提交 (git commit )
添加远程主机
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为默认主机
git push -u origin master
补充: 可以使用 git remote -v 查看当前所有的远程主机和别名
Git配置多个SSH-Key
背景
当有多个git账号时,比如:
a. 一个gitee,用于公司内部的工作开发;b. 一个github,用于自己进行一些开发活动;
解决方法
- 生成一个公司用的SSH-Key
ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa
- 生成一个github用的SSH-Key
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
- 在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
- 用ssh命令分别测试
这里以gitee为例,成功的话会返回下图内容$ ssh -T git@gitee.com
$ ssh -T git@github.com
Git与IDEA整合使用
配置 IDEA 集成 Git
打开 IDEA -> 点击 File -> 点击Settingstips: 可以使用快捷键 Ctrl + Alt + s