笔记
第一部分
- 初始化版本库
- 设置参数
1
| $ git config --global --system 空
|
- 从工作目录到缓存
- 从缓存到版本库
- 从工作目录到版本库
- 查看历史记录
- 查看状态
- 创建分支
1
| $ git branch 新分支名 需创建分支处
|
- 查看分支
- 切换分支
- 创建标签
- 查看标签
- 变基
- 删除分支
- 发布
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 查看头指针的变化记录
练习题
创建一个空文件夹。
在工作目录中初始化一个git版本库。
- 设置全局用户名为自己的姓名拼音,邮件地址随意,颜色方案设置为“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
|
- 创建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"
|
- 适当修改exam.txt文件内容,查看版本库状态,截图保存结果(图二)。
- 启动缓存区交互模式,将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"
|
- 从主分支上创建一个名称为rb_1.0的分支。
1 2
| $ git branch RB_1.0 $ git checkout RB_1.0
|
- 在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"
|
- 回到主分支上修改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"
|
- 从主分支上创建一个名称为rb_2.0的分支。
- 查看版本库中的所有分支,截图保存命令行和结果(图五)。
- 在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"
|
- 回到主分支上创建并切换到一个名称为rb_3.0的分支。截图输入的命令和屏幕显示(图六)
1
| $ git checkout -b rb_3.0
|
- 创建文件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"
|
- 给分支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
|
- 显示所有标签,截图保存结果(图七)。
- 删除分支rb_1.0。
- 将分支rb_2.0改名为rb_2.0.0。
1
| $ git branch -m rb_2.0 rb_2.0.0
|
- 将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"
|
- 显示exam.txt文件中每行代码的信息,截图保存结果(图八)。
- 将文件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"
|
- 显示主分支上的历史记录,每个记录只显示作者的电子邮件地址,截图保存结果(图九)。
1
| $ git log --format="%ae"
|
- 显示主分支上40分钟内的提交记录,每次提交记录都显示一行。截图保存命令行和结果(图十)。
1
| $ git log --pretty=oneline --since="40 minutes"
|
- 显示rb_3.0分支上最近四次提交,每次提交记录都显示一行。截图保存(图十一)。
1 2
| $ git checkout rb_3.0 $ git log --pretty=oneline -4
|
- 将第8次和第9次的提交记录颠倒顺序。
- 将第10次和第11次的提交记录压合成一个记录,留言为:for the 14th time,combine 10 and 11。
- 在工作目录中创建一个abc.txt的文件,使版本库忽略该文件,截图忽略方法(图十二)。
1 2 3
| $ git checkout master $ vi .gitignore 将abc.txt写入esc wq 退出
|
- 利用标签恢复rb_1.0分枝,命名为rb_1.0.0。
1
| $ git branch rb_1.0.0 1.0
|
- 压缩版本库,截图命令行和结果(图十三)。
- 发布主分支最后一个版本。生成压缩包名称为:exam.zip,父目录名为:release。
1
| $ git archive --format=zip --prefix=release/ HEAD >exam.zip
|