1、Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

  • Git 易于学习,占地面积小,性能极快。
  • 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具

    何为版本控制?

  • 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

  • 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

    版本控制分类

  • 集中式版本控制工具

    版本库是集中存放在中央服务器的,而在工作的时候,首先,要从服务器中取得最新的版本, 并在上面工作。工作结束之后,在放回服务器中。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

缺点:必须联网才能工作而且,如果网速较慢,对于提交文件和下载最新文件上面,就会受到限制了。
GIT版本控制 - 图1

  • 分布式版本控制工具

    分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库,在工作的时候,就不需要联网了,当你和你的伙伴共同修改这个版本库的时候,在修改完毕之后,只需要互相推送这个版本库就可以了。优点:如果集中式的“中央服务器”坏掉了,那整个项目就不能用了。现在的分布式版本控制系统,也有个“中央服务器”不过是用来方便大家交换修改而已。

GIT版本控制 - 图2

2、Git常用命令

命令名称 作用
git config —global user.name 用户名 设置用户签名
git config —global user.email 邮箱 设置用户签名·
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

GIT版本控制 - 图3

3、Git分支操作

什么是分支?

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时 候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用)

命令名称 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上

4、Git远程仓库

命令名称 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git clone 远程地址 克隆远程仓库到本地

5、.ignore文件编写

  1. # 表示此为注释,将被Git忽略
  2. *.a 表示忽略所有 .a 结尾的文件
  3. !lib.a 表示但lib.a除外
  4. /TODO 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
  5. build/ 表示忽略 build/目录下的所有文件,过滤整个build文件夹;
  6. doc/*.txt 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
  7. bin/: 表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
  8. /bin: 表示忽略根目录下的bin文件
  9. /*.c: 表示忽略cat.c,不忽略 build/cat.c
  10. debug/*.obj: 表示忽略debug/io.obj,不忽略 debug/common/io.objtools/debug/io.obj
  11. **/foo: 表示忽略/foo,a/foo,a/b/foo
  12. a/**/b: 表示忽略a/b, a/x/b,a/x/y/b
  13. !/bin/run.sh 表示不忽略bin目录下的run.sh文件
  14. *.log: 表示忽略所有 .log 文件
  15. config.php: 表示忽略当前路径的 config.php 文件
  16. /mtk/ 表示过滤整个文件夹
  17. *.zip 表示过滤所有.zip文件
  18. /mtk/do.c 表示过滤某个具体文件
  19. 被过滤掉的文件就不会出现在git仓库中(gitlabgithub)了,当然本地库中还有,只是push的时候不会上传。

6、提交代码到远程仓库流程

1.设置用户名
git config --global user.name '仓库名'
2.设置用户名邮箱
git config --global user.email '邮箱地址'
3.查看设置
git config --list
4.初始化
git init
5.查看状态
git status


参考:
在线学习网站:https://learngitbranching.js.org/?NODEMO=&locale=zh_CN
https://blog.csdn.net/weixin_44617968/article/details/121205613