Vikot106's Blog.

笔记:Git指令记录

字数统计: 2.7k阅读时长: 11 min
2021/03/30 Share

笔记

第一部分

  1. 初始化版本库
1
$ git init
  1. 设置参数
    1
    $ git config --global --system 空
  2. 从工作目录到缓存
1
$ git add
  1. 从缓存到版本库
1
$ git commit 
  1. 从工作目录到版本库
1
$ git commit -a(不提倡使用)
  1. 查看历史记录
1
$ git log
  1. 查看状态
    1
    $ git status
  2. 创建分支
1
$ git branch 新分支名 需创建分支处
  1. 查看分支
1
$ git branch
  1. 切换分支
1
$ git checkout 分支名
  1. 创建标签
1
$ git tag 标签名 分支名
  1. 查看标签
1
$ git tag
  1. 变基
1
$ git rebase 分支名
  1. 删除分支
1
$ git branch -d 分支名
  1. 发布
1
$ git archive --format=压缩格式 --prefix=目录名/ 需发布的位置 > 压缩包文件名

第二部分

git add -i/-p/-A
git add -i–>1,2,3,4,5,6,7,8
提交方法:1、git add 文件名/git commit -m
2、git commit -a -m(工作目录中的所有变化都一次提交到版本库)
3、git commit -m 文件名(把指定文件提交到版本库,要求文件已被追踪)
git diff: 1、不加参数,比较工作目录和缓存
2、–cached,比较版本库和缓存
3、head,比较版本库和工作目录
文件改名:git mv 旧文件名 新文件名(执行后默认加入缓存,需commit)
文件删除:1、物理删除,再提交
2、git rm 文件名,再提交
文件恢复:git checkout 版本号,再创建分支
撤销操作:git reset –hard(–soft) head~n,n是多少,就撤销多少步。
命令别名:git config –global alias.别名 命令
文件忽略:1、设置.git/info/exclude,添加欲忽略的文件名,不会被扩散
2、创建.gitignore,添加欲忽略的文件名,可以扩散
3、设置core.excludesfile “A文件名”,添加欲忽略的文件名到A中
修改文本编辑器:设置参数core.editor “编辑器文件名”

第三部分

创建分支:1、原地创建:branch 新分支名
2、其他分支创建:branch 新分支名 创建处分支名
3、创建并切换分支:checkout -b 新分支名 创建处分支名
4、任意位置创建:branch 新分支名 版本号

切换分支:checkout 分支名
查看分支:branch
删除分支:branch -d(-D) 分支名
分支改名:branch -m(-M) 旧分支名 新分支名
恢复分支:branch 新分支名 版本号(标签)
分支合并:1、直接合并 merge 被合并分支名
2、压合合并 merge –squash 被合并分支名 (合并后加入缓存区,再决定如何提交)
3、拣选合并 cherry-pick 版本号 -n
冲突处理:合并后,冲突的文件会被标记,手动处理冲突后,提交。

第四部分

查看历史记录:log
参数:-n 查看最近n条记录
–pretty= 以指定格式查看(oneline,format:“%a”)
–since,–before 查看指定时间范围内的记录
旧版本号a..新版本号b 从a+1显示到b
查看版本间差异:查看所有版本的差异 log -p
查看头指针与历史版本差异 diff 版本号
查看两次版本之间的差异 diff 版本号..版本号
跟踪内容:查看所有行的提交信息 blame 文件名
查看指定行的提交信息 blame -L 行号,行号 文件名
blame -L 行号,±N 文件名
查看同一文件内复制 blame -M 文件名
两个文件内的复制 blame -C -C 文件名
历史记录的复制 log -p -C -C
增补提交:commit -m “message” –amend
commit -C 版本号 –amend 使用指定的留言,增补提交
commit -c 版本号 –amend 使用编辑器编辑指定的留言,增补提交
不先add,也不指定文件名,也不-a, 能修改留言,不能提交文件
反转提交:revert 版本号 不能-m留言,需启动编辑器留言
–no-edit,使用默认留言
-n 多次反转,一次提交,每次把反转放到缓存,需统一提交
-数字,向旧版本多次反转,每次都是一个提交
修改历史记录:rebase -i 版本号 (显示从版本号+1—head)
修改提交顺序:改变pick顺序
修改留言:reword
合并记录:squash(与上一条合并)
分解记录:edit(停留在版本号,可以做各种修改操作)

log –stat 简单统计历史
log –graph 显示合并记录
status -s 简单统计状态
reset 文件名 把文件清除缓存区,不加文件清空缓存区
clean 删除未追踪文件,不包括以忽略的文件。
-n 可删除文件列表 -f 文件名 删除文件 不加全删
stash 保存工作目录和缓存区
save 留言 保存 不加save,默认使用最后一次提交的留言
list 保存列表
show 保存号 显示此次保存的内容
apply 保存号 恢复保存 –index 是否恢复缓存区
pop 保存号 恢复保存,恢复后删除对应保存
drop 保存号 删除保存,不加保存号,默认删除最后一次保存
**保存后,工作目录和缓存区的修改将被清空
**工作目录或缓存区有修改时,不能恢复保存
gc 压缩版本库
reflog 查看头指针的变化记录

练习题

  1. 创建一个空文件夹。

  2. 在工作目录中初始化一个git版本库。

1
$ git init
  1. 设置全局用户名为自己的姓名拼音,邮件地址随意,颜色方案设置为“auto”。显示版本库中已设置的全局变量,截图保存(图一)。
    1
    2
    3
    4
    $ git config --global user.name "Vikot106"
    $ git config --global user.email "Vikot106@hotmail.com"
    $ git config --global color.ui "auto"
    $ git config --global --list
  2. 创建exam.txt文件,添加适当内容后提交,提交留言为:for the 1st time,create exam.txt file。
    1
    2
    $ git add exam.txt
    $ git commit -m "for the 1st time,create exam.txt file"
  3. 适当修改exam.txt文件内容,查看版本库状态,截图保存结果(图二)。
    1
    $ git status
  4. 启动缓存区交互模式,将exam.txt文件添加到缓存区,截图添加过程(图三),退出交互模式。将缓存区内容添加到版本库,提交留言为:for the 2nd time,edit exam.txt file。
    1
    2
    $ git add -i   进入交互模式 选 2 1
    $ git commit -m "for the 2nd time,edit exam.txt file"
  5. 从主分支上创建一个名称为rb_1.0的分支。
    1
    2
    $ git branch RB_1.0
    $ git checkout RB_1.0
  6. 在rb_1.0分支上修改exam.txt文件,比较工作目录和版本库中exam.txt文件的异同,截图保存命令行和结果(图四),提交文件修改,留言为:for the 3rd time,edit exam.txt file。
    1
    2
    $ git diff HEAD
    $ git commit -a -m "for the 3nd time,edit exam.txt file"
  7. 回到主分支上修改exam.txt文件内容后提交,提交留言为:for the 4th time,edit exam.txt file。
    1
    2
    $ git checkout master
    $ git commit -a -m "for the 4th time,edit exam.txt file"
  8. 从主分支上创建一个名称为rb_2.0的分支。
    1
    $ git branch rb_2.0
  9. 查看版本库中的所有分支,截图保存命令行和结果(图五)。
    1
    $ git branch
  10. 在rb_2.0分支创建文件a.txt,添加内容后提交,留言为:for the 5th time,create a.txt file。
1
2
$ git add a.txt
$ git commit -m "for the 5th time,create a.txt file"

​ 在rb_2.0分支创建文件b.txt,添加内容后提交,留言为:for the 6th time,create b.txt file。

1
2
$ git add b.txt
$ git commit -m "for the 6th time,create b.txt file"

​ 在rb_2.0分支创建文件c.txt,添加内容后提交,留言为:for the 7th time,create c.txt file。

1
2
$ git add c.txt
$ git commit -m "for the 7th time,create c.txt file"
  1. 回到主分支上创建并切换到一个名称为rb_3.0的分支。截图输入的命令和屏幕显示(图六)
    1
    $ git checkout -b rb_3.0
  2. 创建文件d.txt,添加内容后提交,留言为:for the 8th time,create d.txt file。
    1
    2
    $ git add d.txt
    $ git commit -m "for the 8th time,create d.txt file"
    ​ 创建文件e.txt,添加内容后提交,留言为:for the 9th time,create e.txt file。
1
2
$ git add e.txt
$ git commit -m "for the 9th time,create e.txt file"

​ 创建文件f.txt,添加内容后提交,留言为:for the 10th time,create f.txt file。

1
2
$ git add f.txt
$ git commit -m "for the 10th time,create f.txt file"

​ 创建文件g.txt,添加内容后提交,留言为:for the 11th time,create g.txt file。

1
2
$ git add g.txt
$ git commit -m "for the 11th time,create g.txt file"
  1. 给分支rb_1.0打标签1.0,给分支rb_2.0打标签2.0。
    1
    2
    3
    $ git tag 1.0 RB_1.0
    $ git checkout rb_2.0
    $ git tag 2.0
  2. 显示所有标签,截图保存结果(图七)。
    1
    $git tag
  3. 删除分支rb_1.0。
    1
    $ git branch -D RB_1.0
  4. 将分支rb_2.0改名为rb_2.0.0。
    1
    $ git branch -m rb_2.0 rb_2.0.0
  5. 将rb_2.0.0压合合并到主分支,提交留言为:for the 12th time,merge from rb_2.0.0。
    1
    2
    $ git merge --squash rb_2.0.0
    $ git commit -a -m "for the 12th time,merge from rb_2.0.0"
  6. 显示exam.txt文件中每行代码的信息,截图保存结果(图八)。
    1
    $ git blame exam.txt
  7. 将文件exam.txt在版本库中改名为“姓名拼音.txt”(如zhangsan.txt),提交留言为:for the 13th time,rename exam.txt to 姓名拼音.txt。
    1
    2
    $ git mv exam.txt vikot.txt
    $ git commit -a -m "for the 13th time,rename exam.txt to tengxuewei.txt"
  8. 显示主分支上的历史记录,每个记录只显示作者的电子邮件地址,截图保存结果(图九)。
    1
    $ git log --format="%ae"
  9. 显示主分支上40分钟内的提交记录,每次提交记录都显示一行。截图保存命令行和结果(图十)。
    1
    $ git log --pretty=oneline --since="40 minutes"
  10. 显示rb_3.0分支上最近四次提交,每次提交记录都显示一行。截图保存(图十一)。
    1
    2
    $ git checkout rb_3.0
    $ git log --pretty=oneline -4
  11. 将第8次和第9次的提交记录颠倒顺序。
    1
    $ git rebase -i HEAD~4
  12. 将第10次和第11次的提交记录压合成一个记录,留言为:for the 14th time,combine 10 and 11。
    1
    将第十一次提交记录pick改成squash
  13. 在工作目录中创建一个abc.txt的文件,使版本库忽略该文件,截图忽略方法(图十二)。
    1
    2
    3
    $ git checkout master
    $ vi .gitignore
    将abc.txt写入esc wq 退出
  14. 利用标签恢复rb_1.0分枝,命名为rb_1.0.0。
    1
    $ git branch rb_1.0.0 1.0
  15. 压缩版本库,截图命令行和结果(图十三)。
    1
    $ git gc
  16. 发布主分支最后一个版本。生成压缩包名称为:exam.zip,父目录名为:release。
    1
    $ git archive --format=zip --prefix=release/ HEAD >exam.zip
CATALOG
  1. 1. 笔记
    1. 1.1. 第一部分
    2. 1.2. 第二部分
    3. 1.3. 第三部分
    4. 1.4. 第四部分
  2. 2. 练习题