git常用命令
# 一般流程
git add .
git commit -m "提交信息"
git push
1
2
3
4
5
2
3
4
5
理解commit
就像存档一样,当我们写了一定的代码量过后,应该主动进行一次commit,以便于我们在可以进行回滚操作
# commit日志
我们怎么知道我们提价的信息是什么,应该进行怎么回滚,这就需要我们查询相关的日志
git log
git log pretty=oneline
1
2
3
2
3
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
1
2
3
4
2
3
4
其中每次提交都会对应应该id,使用的是SHA1算法
# 回滚
git reset --hard HEAD^ //回滚到上一个commit
git reset --hard commitId //回滚到指定的commit
1
2
2
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD
指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL
:
┌────┐
│HEAD│
└────┘
│
└──▶ ○ append GPL
│
○ add distributed
│
○ wrote a readme file
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
改为指向add distributed
:
┌────┐
│HEAD│
└────┘
│
│ ○ append GPL
│ │
└──▶ ○ add distributed
│
○ wrote a readme file
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
然后顺便把工作区的文件更新了。所以你让HEAD
指向哪个版本号,你就把当前版本定位在哪。
注意git reset --hard commitid
会把暂存区中的信息清空
# 操作日志
git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
1
2
3
4
5
6
2
3
4
5
6
根据操作日志,我们可以找到我们对应的commitid,然后重返未来的commit
# 暂存区相关操作
git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
git diff查看工作区和暂存区差异,
git diff --cached查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
另外需要注意,git追踪的是修改,不是文件,所以只要文件有修改,就会产生暂存区与工作区的不一致。
编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19