深色模式
Git 学习笔记
Git 官网 —— https://git-scm.com/
TortoiseGit 下载 —— https://tortoisegit.org/download/
Git 中文网-GitLab 中文网 —— http://www.git-scm.com.cn/
什么是 Git
Git 是最常用的版本控制系统。 使用 Git,可以跟踪对文件所做的更改,以便记录已完成的操作,并能够在需要时还原到文件的早期版本。 Git 还可以简化协作,使多个人员所做的更改全部合并到一个源中。
入门推荐
Microsoft Git 入门:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-git
W3Cschool Git 教程:https://www.w3cschool.cn/git/
Pro Git 中文版:https://git.oschina.net/progit/
GitHub 入门 - 开始使用 Git:https://docs.github.com/zh/get-started/getting-started-with-git
安装 Git
安装适用于 Linux 的 Git
WSL 默认安装了 Git,但可能需要更新和设置 git 配置文件。
Bash
git --version # 查看已安装 Git 版本
1
安装更新 Git,请参阅适用于 Linux 的 Git 下载
Bash
sudo apt-get install git # Ubuntu/Debian 安装 Git
1
安装适用于 Windows 的 Git
Windows 下安装 Git,请参阅适用于 Windows 的 Git 下载
本地环境初始化
Bash
git init
1
Git 配置文件设置
用户信息
Bash
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
1
2
2
设置让 VSCode 记住 git 账号和密码
Bash
git config --global credential.helper store
1
查看配置信息
Bash
git config --list
1
基本操作
追踪文件
Bash
# 追踪特定文件
git add readme.md
# 追踪多个文件
git add readme.md learn_git.md
# 追踪所有文件
git add .
1
2
3
4
5
6
2
3
4
5
6
提交文件
Bash
git commit -m "本次提交说明"
1
查看文件状态
Bash
git status
1
推送文件到远程仓库
Bash
git push
1
保持同步
Bash
git pull
1
查看分支
Bash
# 列出 "本地" 已经存在的分支,当前分支会用 * 标记
git branch
# 查看 "远程" 仓库的分支列表
git branch -r
# 查看所有分支列表(包含 "本地和远程" 分支)
git branch -a
# 查看 "本地分支对应的远程分支" (包含最新一次提交的信息)
git branch -vv
# 查看一个分支的最新一次提交
git branch -v
# 查看哪些分支已经合并到当前分支(即哪些分支是当前分支的直接上游)
git branch --merged
# 查看所有未合并工作的分支
git branch --no-merged
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
强制推送
Bash
git push -f origin master
1
添加 Git Ignore 文件
使用 git 提交时可忽略指定文件
bash
#注释 .gitignore的注释
*.txt 忽略所有 .txt 后缀的文件
!src.a 忽略除 src.a 外的其他文件
/todo 仅忽略项目根目录下的 todo 文件,不包括 src/todo
build/ 忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件
bin/: 忽略当前路径下的 bin 文件夹下的所有内容,不忽略 bin 文件
/bin: 忽略根目录下的 bin 文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh 不忽略bin目录下的run.sh文件
*.log: 忽略所有 .log 文件
config.js: 忽略当前路径的 config.js 文件
/mtk/ 忽略整个文件夹
*.zip 忽略所有.zip文件
/mtk/do.c 忽略某个具体文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20