git学习篇
本文不是记录所有的命令, 会将部分命令做一个简易说明
看懂上面的流程, 就可以大致知道自己要进行什么操作,以及怎样操作
安装
安装的话, 自己搜一下吧, 问题应该不大
新建
1 | # 在当前目录下新建一个代码库 [新建一个目录, 初始化为代码库] |
配置
1 | # 查看 config |
常用命令
1 | # 查看工作区和暂存区的状态 |
其它命令
1 | ## rm |
单读讲讲
分支合并
merge
1
2
3
4
5# 将另外一个分支合并到当前分支,主要是合并到master
$ git merge <branchName> [--fast-forward | --no-ff | --squash]
# --fast-forward: 会在当前分支的提交历史中添加进被合并分支的提交历史
# --no-ff: 会生成一个新的提交,让当前分支的提交历史不会那么乱
# --squash: 不会生成新的提交,会将被合并分支多次提交的内容直接存到工作区和暂存区,由开发者手动去提交,这样当前分支最终只会多出一条提交记录,不会掺杂被合并分支的提交历史rebase
关于rebase 的示意图, 看看这篇文章吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 将master分支中的修改添加到master分支上(保证当前分支的修改, 是基于master分支上的修改)
$ git checkout <branchName>
$ git rebase master
# 或者直接使用
$ git rebase <branchName1> <branchName2>
# 对当前分支提交的 startpoint -> endpoint (前开后闭) 提交记录进行整理
$ git rebase -i [startpoint] [endpoint]
# pick:保留该commit(缩写:p)
# reword:保留该commit,但我需要修改该commit的注释(缩写:r)
# edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
# squash:将该commit和前一个commit合并(缩写:s)
# fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
# exec:执行shell命令(缩写:x)
# drop:我要丢弃该commit(缩写:d)
# 选择特定的结点到指定分支(区间前开后闭), 建议使用 cherry-pick
$ git rebase [startpoint] [endpoint] --onto master
# 注意: 添加过去的结点, 还处于游离状态(HEAD没有处于最新结点) , 可以新建一个分支或直接使用 reset --hardcherry-pick
1
2
3
4
5
6
7
8# 将提交的结点 添加到当前分支,会产生一个新的提交(哈希值不一样)
$ git cherry-pick <commitHash>
# 将另外一个分支上最新提交的结点添加到当前分支
$ git cherry-pick <branchName>
# 转移多个提交
$ git cherry-pick <HashA> <HashB>
# 转移一系列提交(区间, 左开右闭)
$ git cherry-pick <HashA>^..<HashB>关于
cherry-pick
, 参考这里
撤销&回退
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42# 原来的命令
# 撤销工作区修改的文件, 还未提交到暂存区
$ git checkout filname
# 撤销暂存区的文件
$ git reset HEAD filename
## checkout
# 恢复暂存区的指定文件到工作区
$ git checkout <filename>
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
# 检出结点, 标签
$ git checkout[<commitid> | <tag>]
## reset
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变, 软回退
$ git reset [commit]
# 重置暂存区与工作区,与上一次commit保持一致, 硬回退
$ git reset --hard [commit]
## revert
# 生成一个撤销指定提交版本的新提交
$ git revert <commit_id>
# 新命令
## restore & switch
# 主要还是为了分离 checkout的功能
# 切换分支 = git checkout <branchName>
$ git switch <branchName>
# 创建并切换到新建分支 = git checkout -b <newbranch>
$ git switch -c <newBranch>
# 撤销工作区修改的文件 = git checkout <fileName>
$ git restore <fileName>
# 撤销暂存区的文件 = git reset <fileName>
$ git restore --staged <fileName>
- 标题: git学习篇
- 作者: Yaurora
- 创建于 : 2020-08-09 13:54:54
- 更新于 : 2023-02-21 21:12:07
- 链接: https://jingyu.life/2020/08/09/git/git-usage/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。