学习Git时记录的一些笔记

1. Git全局配置

2. Git初始化

3. 将需要进行版本管理的文件放入暂存区域

4. 必须为你的修改做一些说明

5. 将暂存区域中的文件提交到Git仓库

6. 查看Git状态

7. 查看历史提交

8. reset 命令回滚选项

移动HEAD的指向,将其指向上一个快照,将HEAD移动后指向的快照回滚到暂存区域

移动HEAD的指向,将其指向上一个快照,相当于撤销最近一次的commit提交

移动HEAD的指向,将其指向上一个快照,将HEAD移动后指向的快照回滚到暂存区域,将暂存区域的文件还原到工作目录

9. diff 比较命令

10. 修改最后一次提交

11. 删除文件

12. 重命名文件

13. 分支

14. 合并分支

15. 删除分支

16. 匿名分支

使用checkout切换,但不加分支名,git会自动创建一个匿名分支。可以用来做实验,切换到主分支后,匿名分支不会保存。

17. 提交到远程仓库

或者提交到远程其他仓库

18. 解决合并冲突

19. 生成ssh秘钥

20. 关联远程仓库

21. 忽略某些文件

首先在git仓库下新建一个.gitignore文件:

然后编辑.gitignore文件

默认会生成一个模板,你可以添加想忽略的某些文件或文件夹,下面是一些常用的的

举个例子:

  1. 如果只想忽略一个文件或者文件夹,可以直接手动解除跟踪,而不必编写.gitignore文件,例如删除 .idea 文件夹
  1. 如果想一次性忽略多个文件或者文件夹,则需要别写编写.gitignore文件,编写之后,输入一下命令:

22. git 版本回退

查看日志

本地回退

将远程同步

 

23. 同步关联github 和 gitee两个远程仓库

  1. 首先在本地新建一个文件夹,使用git init 初始化
  2. 添加远程仓库

说明:

git remote add <远程仓库名> url

  1. 使用git remote -v查看所有远程分支,配置成功会出现:
  1. 分别拉取GitHub 和gitee上的远程分支

说明:

  1. 本地仓库关联远程仓库,这里我关联的是github远程仓库,gitee仓库保持同步就行了

说明:

git branch --set-upstream-to=<remote>/<branch> master

  1. 同步并拉取所有远程分支
  1. 以后提交代码时,可以使用git push github master向github 提交代码,也可以使用git push gitee master 向gitee提交

 

24. git clone

有时候.git 文件夹太大,我们可以只克隆最近一次提交

 

25. git 瘦身

随着项目的版本不断迭代,仓库可能会非常臃肿,可以简单给git瘦身

A. 垃圾回收

Git最初向磁盘中存储对象使用松散的格式,后续会将多个对象打包为一个二进制的包文件packfile),以节省磁盘空间

B. 核弹级选项--git filter命令

  1. 找出大文件前5个

$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5 50e6afdb7f535113126354e848033e7b591ff615 blob 4423175 4247726 43601345 154ee2def998228d1ec4b3c004d010bfa14573c0 blob 4428924 215946 17679055 f7a32286c90c07e2f2e3cc1f9b01e656c6e0316d blob 8402104 931892 18074255 53184164d6c7096455e2d0f93a90ebbfd17f3539 blob 8561224 4190653 9083285 c09e19d8931e7c3602e61b0b51892da2455cf049 blob 10224350 10170488 29150326

  1. 找出大文件名, 以上面最后一个为例

$ git rev-list --objects --all | grep c09e19d8931e7c3602e61b0b51892da2455cf049 c09e19d8931e7c3602e61b0b51892da2455cf049 MyWebSite.zip

  1. 使用 git filter,将your file path> 替换成你的路径, 例如上面的 MyWebsite.zip

    • 强制 Git 处理但不检出每个分支和标记的完整历史记录
    • 删除指定的文件,以及因此生成的任何空提交