Git下载与安装
软件下载地址:https://git-scm.com/downloads
安装: 傻瓜式安装
Git 本地工作区域
对于任何一个文件,在 Git 内都只有三种区域:工作区,暂存区和本地仓库。
- 工作区:表示新增或修改了某个文件,但还没有提交保存;
- add暂存区:表示把已新增或修改的文件,放在下次提交时要保存的清单中;
- commit本地仓库:文件已经被安全地保存在本地仓库中了。
- push 将本地仓库的改变同步到远程仓库
Git命令
可以在IDEA上打开命令行操作(或者在空白处右键选择Git Bash Here打开Git命令行窗口)
Git基本命令
git init初始化本地库
执行完这个命令后会在当前路径下生成一个.git的文件夹(打开显示隐藏文件夹可以看见)
git status查看工作区暂存区的状态
git add将新建或修改后的文件添加到暂存区
按照上述提示, 在当前路径下创建一个a.txt的文件, 然后再执行上述命令查看暂存区的状态
根据上面可以看到有有一个a.txt文件没有被追踪(即这个a.xtxt不受版本控制),
我们按照提示使用git add将这个文件加入到版本控制中. 然后再执行git status查看状态
查看当前git版本
git --version
对于 Git Version 1.x
git add .:会将当前工作区中当前目录(包括子目录)下的所有新文件和对已有文件的改动提交至暂存区,但不包括被删除的文件。
git add -u:git add –update 的简写形式,它只会监控当前整个工作区中之前已被 add 的文件,即已被跟踪(tracked)的文件,也就是只会将当前整个工作区中被修改和被删除的文件提交至暂存区。而新文件因为未被跟踪(untracked),所以不会被提交至暂存区。
git add -A:git add –all 的简写形式,它会将当前整个工作区中所有的文件改动提交至暂存区,包括新增、修改和被删除的文件,不受当前所在目录限制。
对于 Git Version 2.x
在 Git –version 2.x 中对 git add . 的功能做了改动,git add . 会提交当前工作区中当前目录(包括子目录)下所有的文件改动,不像在 Git –version 1.x 时那样不包括被删除的文件。
Git Version 2.x 中如果想在使用 git add . 时不提交被删除的文件,可以使用 git add –ignore-removal 加上匹配符 .,即 git add –ignore-removal .。
git add –ignore-removal 后的匹配符是可以更换的(但不能缺省),例如 git add –ignore-removal -A 可以实现在 git add -A 时不提交被删除的文件。
有些文章说在 Git –version 2.x 中 git add . 和 git add -A 的功能变得完全相同,这是不对的。因为我们之前提到过,git add . 提交的文件改动受当前所在目录限制,它只会提交当前工作区中当前目录(包括子目录)下的文件改动,而 git add -A 不受当前所在目录的限制,提交的是当前整个工作区中所有的文件改动。
git add * 表示添加当前目录(包括子目录)下的所有文件改动,但不包括文件名以 . 符号开头的文件的改动。这是 Shell 命令,git 只是接收文件列表。而 git add . 的功能与 git add * 基本相同,只是 git add . 会将文件名以 . 符号开头的文件的改动也提交至暂存区。
git rm –cache将文件恢复从暂存区移除,不放到暂存区
git commit -m “提交说明” 将暂存区的内容提交到本地库
git reflog查看历史提交记录
先使用vim编辑器, 编辑两次a.txt.
第一次向里面追加bbb内容并提交
第二次向里面追加ccc内容并提交
然后使用git reflog命令查看提交的历史记录
git reset –hard <局部索引值> 回退到指定的版本
回退到第二次提交时的版本(当前版本HEAD指向的是第三次提交的版本 往后回退)
再回退到第三次提交时的版本(当前版本HEAD指向的是第二次提交的版本 往前回退)
git diff 对比文件差异
将工作区中的文件和暂存区进行比较
命令: git diff <文件名>
举例:向a.txt文件添加了一行ddd内容
(不使用 git add 提交,则对a.txt文件的修改内容存在于工作区,但未提交到暂存区, 暂存区的内容还是abc/bbb/ccc),
使用 git diff a.txt 查看工作区中a.txt和暂存区的a.txt文件之间的不同
将工作区中的文件和本地库历史记录比较
Git操作分支的命令
git branch -v查看分支
git branch 新分支名 创建新的分支
git branch -d 分支名 删除分支
代码托管平台
GitHub和Gitee网上代码托管平台
自己练习学习想要提交代码可以提交到Gitee,因为更快
如果下载GitHub速度太慢,可以将仓库复制到Gitee再从Gitee拉取下载
GitHub常用命令
in限定查找的范围
关键词 in:name或description或readme
比如现在我要查找秒杀项目: seckill in:name
表示我要查项目名字中包含seckill关键字的项目
seckill in: description
表示我要查项目描述中包含seckill关键字的项目
seckill in: readme
表示我要查项目的readme文件中包含seckill关键字的项目
seckill in:name,description,readme
表示我要查项目名字, 项目描述, 项目readme中都包含seckill关键字的项目
按照stars数查找
查找stars大于等于5000的springboot项目
springboot stars:>=5000
按照forks数查找
查找fork数大于500的springcould项目
springcloud forks:>=5000
stars和forks关键字组合使用
查找fork数在100到200之间 并且stars数在80到100之间的springboot项目
springboot forks:100..200 stars:80..100
awesome 关键字
查找被awesome list表单收录的springboot项目
awesome springboot
高亮显示代码(一般用于给别人查看项目的指定位置的时候, 比如这个地方看不懂,请教别人)
高亮显示某一行代码
github项目地址#L代码的行号
https://github.com/looly/hutool/blob/v5-master/hutool-json/src/main/java/cn/hutool/json/JSON.java#L109
高亮显示多行代码
github项目地址#L起始代码行号-L结束代码行号
https://github.com/looly/hutool/blob/v5-master/hutool-json/src/main/java/cn/hutool/json/JSON.java#L109-L114
GitLab自己搭建的代码托管平台
其他待分类
.gitignore不生效的解决方案
当我们将 .gitignore 文件配置好后,却往往不能失效。这是因为 .gitignore 只能忽略那些没有被追踪(track)的文件,
因为 git 存在本地缓存,如果文件已经纳入了版本管理,那么修改 .gitignore 是不能失效的。
那么解决方案就是要将 git 的本地缓存删除,然后重新提交。
git rm -r –cached .
git add .
git commit -m “update .gitignore”