1、起步
1.1、关于版本控制
1.2、Git简史
1.3、什么是Git?
1.4、命令行
1.5、安装Git
1.6、初次运行Git前的配置
1.7、获取帮助
2、Git基础
2.1获取 Git 仓库
2.2记录每次更新到仓库
2.3查看提交历史
Q:什么是“版本控制”?
A:版本控制是记录文件内容变化,以便将来查阅特定版本修订情况的系统,常用于源代码的文件。
Q:我为什么要关心它呢?
A:项目做了一段时间,突然心血来潮,决定使用Git来进行版本控制,同时也是为了学习Git的使用。
引用链接:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E7%AE%80%E5%8F%B2
特点:
(1)直接记录快照,而非差异比较
(2)近乎所有操作都是本地执行
(3)保证完整性
(4)一般只添加数据
三种状态:
已提交(committed):已修改表示修改了文件,但还没保存到数据库中。
已修改(modified):已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已暂存(staged):已提交表示数据已经安全地保存在本地数据库中。
工作流程:
(1)在工作区中修改文件。
(2)将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
(3)提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
可选:
--原生的命令行模式
--GUI 模式
由于只有在命令行模式下才能执行 Git 的 所有命令,因此从命令行开始学习~
Linux:
sudo dnf install git-all
或者
sudo apt install git-all
Windows:
下载Git-2.26.0-rc0-64-bit.exe,安装。
安装完 Git 之后的第一件事:设置用户名和邮件地址
git config --global user.name "John Doe"
git config --global user.email [email protected]
安装完 Git 之后的第二件事:检查配置信息
C:\Users\ASUS>git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
core.editor="C:\\Program Files\\Notepad++\\notepad++.exe" -multiInst -notabbar -nosession -noPlugin
credential.helper=manager
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=<91><86>
[email protected]
找到Git命令综合手册的三种等价方法:
git help
git --help
man git-
例如,要想获得 git config
命令的手册,执行:
git help config
此外,如果你不需要全面的手册,只需要可用选项的快速参考:
git add -h
通常有两种获取 Git 项目仓库的方式:
--在已存在目录中初始化仓库
cd /c/user/my_project
git init
git add *.py
git commit -m 'initial project version'
--克隆现有的仓库
git clone
--检查当前文件状态
git status
--跟踪新文件
git add
--暂存已修改的文件
git add
//运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来
--忽略文件
例如创建一个名为 .gitignore
的文件,列出要忽略的文件的模式
$ cat .gitignore
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
针对不同语言的gitignore文件列表:https://github.com/github/gitignore
--查看已暂存和未暂存的修改
git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。
若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged
命令。
--提交更新
git commit -m "提交说明"
--跳过使用暂存区域
git commit -a -m '提交说明'
--移除文件
//从暂存区域移除
git rm
//删除之前修改过或已经放到暂存区的文件
git rm -f
//从暂存区域移除,但不删除该文件
git rm --cached
--移动文件
Git 并不显式跟踪文件移动操作,如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。
git mv file_from file_to