环境 & 教程:
macOS Big Sur 11.2.1(m1)
Git 使用简易指南(含安装)
在线网站实操(强烈推荐)
Pro Git 官方中文教程(推荐)
- 关于在线网站实操的快捷操作:
- 点击右边动画可以查看对应的简单命令
- levels 可以查看并选择关卡
- level intro1 快速跳转到第一关
- show goal 查看当前目标
- hide goal 或点击画面隐藏目标
- objective 查看当前关卡提示
- undo 撤销 reset重做
Git
- 分布式版本控制: 每个人的电脑都是一个完整的版本库,可离线本地提交,联网时再push,不因服务器损坏或网络问题造成工作停止
- 若对某个命令感兴趣,如
git checkout
,在命令行下输入man git-checkout
,你会发现一切变得简单起来
文件状态
- 未追踪(untracked)
- 已追踪(tracked)
- 已修改(modified)
- 表示修改了文件,但还没保存到数据库
- 已暂存(staged)
- 表示对一个文件的当前版本做了标记,使其包含在下次提交的快照中
- 已提交(commited)
- 表示数据已经保存在本地数据库中
- 已修改(modified)
已追踪下的三个状态对应了Git项目中的三个阶段: 工作区、暂存区以及 Git 目录。
尚处于未跟踪(untracked)状态的某种意义来讲不属于上图叙述的工作区。可以把暂存区中的文件理解为下次将提交至仓库的文件,单纯的语言有些枯燥,不妨往下面看看,命令的反馈或许给你带来一些感触。
查看配置 & 配置基础信息
git config -l # 查看所有配置 |
我个人的配置文件在~/.gitconfig
,其内容与--global
查看到的内容一致
基础命令
命令会基于创建在家目录下的~/notes
进行阐述假设你创建了,当然,你也可以在你的桌面上新建一个文件夹,叫什么都行。
创建仓库
在需要版本控制的目录下初始化本地仓库
现在你想对的notes进行版本控制,只需切换到对应文件夹,初始化仓库
cd ~/notes |
查看状态
现在来看看你的笔记里面有啥能放进仓库的
git status |
On branch master |
好的,什么都没有。来添加点东西,相信下面的命令你们都懂的,不懂百度~
touch English |
再输入git status
看看有什么变化:
On branch master |
提示有一个未跟踪的文件English,使用git add进行跟踪
或许你会觉得命令的输出有些长,可以使用git status -s
or git status --short
缩短命令输出
git status -s |
你会得到一段非常简短的反馈
?? English |
??表示该文件为新添加的未跟踪文件
将文件增加到下次提交序列
git add指令实际上是一个多功能指令,但先不展开介绍,先处理English
git add English |
似乎没有任何反馈,不用担心,用git status
看看就好了
On branch master |
可以看到English文件已经处于暂存区了,此时使用git restore --staged <file>
可以移出暂存区,变为不跟踪的状态当然不移了。
来给英语笔记添加点内容,然后看看变化
echo "My English is very poor" >> English |
On branch master |
提示English发生了改变,但是不在暂存区,用git add把它加到暂存区(下一次提交的队列),或者git restore 丢弃此次更改。
此时你可能有点好奇简短的输出是什么样子的,让我们输入git status -s
看看
AM English |
引入-
和+
来方便讲解,此时??
->AM
,我们将-s
输出的类型分为两栏,左边的是暂存区的状态,右边是工作区的状态。看一下上面未缩减的输出可以发现,此时存在两个English笔记,对应于缩减的输出可以理解为AM的A表示有同名的文件暂存了,M表示后来修改过的文件没有暂存,有没有觉得-s
的输出短小精悍
-?? English |
git diff查看修改
假设此时你不太记得更改了什么
git diff |
温馨提示,按q退出
diff --git a/English b/English |
高亮的那一行就是你添加的内容你英语不好
分支操作
创建和切换
git branch # 查看本地分支 |
合并
若你现在建立了两个分支,一个main
,一个是bugFix
,两个分支都各自对文件进行了部分修改,此时你想合并修改看是否符合预期。
使用git status
可以查看当前分支,假设main
为当前所在分支。
merge
把修改拉过来
用git merge bugFix
则可将bugFix
修改的记录合并至main
,此时main包含了所有的修改,但注意,bugFix
没有,应使用git checkout bugFix; git merge main
切换至bugFix
分支并再次合并。
若你对此缺少主观的印象,建议点击该网站,输入level intro3
。
rebase
让修改看起来是顺序开发的
命令: git rebase bugFix
忽略文件
将不需要提交的文件加入.gitignore
文件中忽略文件
的规则:
#
注释- 可采用通配符
!
取反/home
表示只忽略当前文件夹下home
文件,不包括其他目录下的homedir_name/
忽略任何目录下名为dir_name
的文件夹
克隆远程(remote)仓库
git clone url [file_name] # 文件路径可选,默认到当前文件夹下 |
若出现403错误,检查钥匙串是否有两个账号,更改/删除
另一个账号
扩展
码云公钥生成
cd ~/.ssh |
copy
至https://gitee.com/profile/sshkeys下即可