如果只是想快速上手git,上传文件到github,可以参考这篇文章:
https://blog.csdn.net/ys578676728/article/details/89246839
可以科学上网的同学也可以学习这套英文教程(本文截图均出自此教程):
https://www.youtube.com/watch?v=uR6G2v_WsRA
文章目录
命令 | 作用 |
---|---|
git status | 查看当前状态 |
git add S1 | 将S1提交到暂存区 |
git commit -m "add file S1" | 提交暂存区文件到版本区 |
git log | 查看commit记录 |
git log -- S2 | 查看影响S2的commit记录 |
git diff | 查看工作区和暂存区文件的差别 |
git diff --staged | 查看暂存区和版本区文件的差别 |
git rm S2 | 从工作区和暂存区中同时删除S2 |
git checkout -- S1 | 回溯S1:用暂存区中的S1代替工作区中目前的S1 |
git reset HEAD S1 | 回溯S1:用版本区最近版本的S1代替暂存区中的S1 |
git checkout 9ddb9 -- S1 | 回溯S1:用版本区hash value为9ddb9的S1代替工作区和暂存区的S1 |
1. 关于git你必须知道的事情
- git是一个版本管理工具,它可以帮你记录代码/文件的变化,可以理解成给每个版本的文件都拍了张照片保存下来,这个拍照的操作称作commit;
- 每次commit(拍照)会记录下是谁在什么时间执行的这个操作,同时会生成一个对应的hash value,方便日后快速找到该版本的文件;
- git仓库有三个重要的区域:
- 工作区(working tree):本地系统中的普通文件夹,可以增加、删除、修改文件
- 暂存区(staging area):暂时缓存文件的地方
- 版本区(history):用来储存commit文件的地方,在本地隐藏的.git文件夹中
2. 安装与初始化
- git的安装(ubuntu)
sudo apt-get install git
- 配置git用户名和邮箱,这样系统就可以知道每次是谁执行的commit操作
git config --global user.name "username"
git config --global user.email "myemail@some.com"
如果对特殊的文件夹需要单独设置用户名和邮箱可以使用 –local
git config --local user.name "username"
git config --local user.email "myemail@some.com"
查看当前设置:
git config --list
- 初始化,生成一个隐藏的.git文件夹
git init
3. git commit
- 查看当前状态
git status
- 添加文件S1到暂存区
git add S1
- 提交暂存区文件到版本区,-m指使用一个message来描述本次commit
git commit -m "add file S1"
- 每次commit后会返回一个SHA-1 hash value的前7位数eb231ee
- 查看commit记录
git log
4. second commit (edit S1, add S2)
- 查看状态
因为之前commit过所以S1是tracked状态。但是因为S1被修改了,所以此时还未staged。
S2为新建文件,因此现在是untracked状态。
- 查看工作区和暂存区文件的差别,因为S2是untracked状态所以不会进行比较
git diff
- 重新将S1和S2添加到缓存区
git add .
- 查看缓存区和版本区最近版本的文件的差别
git diff --staged
- 第二次commit
git commit -m "add S2 and edit S1"
5. remove a file
- 删除S2,同时从工作区和暂存区中删除
git rm S2
- commit这次removal操作,不使用 -m会跳转到系统默认的文本编辑器去编写更详细的多行message
git commit
- 整理最近三次的commit操作
6. 回溯之前版本的文件
- 修改S1
- 回溯工作区S1的修改:用暂存区中上一版本的S1替代目前工作区中的S1
git checkout -- S1
- 修改S1并add到暂存区
- 回溯暂存区S1的修改:用版本区最近的S1版本替代暂存区中的S1,HEAD表示最近的commit。如果想回溯到工作区,需要再使用一次git checkout命令。
git reset HEAD S1
- 查看影响S2的commit记录
git log -- S2
- 从更早的版本中回溯被删除的S2:将该版本中的S2同时放回到工作区和暂存区。
git checkout 9ddb9 -- S2
7. 用.gitignore处理不需要git管理的文件
- 新建一个.gitignore文件
vim .gitignore
- 在.gitignore文件中写入不需要git管理的文件,如:所有.pyc结尾的文件,logs/文件夹下的文件。
- 查看git当前状态,发现只有.gitignore文件。此时只需像其他文件一样add和commit该文件就可以了。
- 最终三个区域的状态如下