Git学习之~爱上Git的理由

现场版本控制

  1. 现场版本库创建。
    直接在需要版本控制的目录下执行Git版本库初始化命令。
1
git init
  1. 添加文件并提交
1
2
git add -A
git commit -m "本次提交的内容描述"
  1. 为初始提交建立一个里程碑:”v1”
1
git tag v1
  1. 然后开始在工作区中工作–修改文件,提交
1
git commit -a
  1. 当对修改结果满意,想将工作成功保存带走时,可以通过下面的命令,将从v1开始的历次提交
    逐一导出为补丁文件。转换的补丁文件都包含一个数字前缀,并提取提交日志信息作为文件名,而且补丁文件
    还提供对二进制文件的支持。
1
git format-patch v1..HEAD
  1. 通过邮件将补丁文件发出。当然也可以通过其他方式将补丁文件带走。
1
git send-email *.patch

Git创建的补丁文件使用了Git扩展格式,因此在导入时为了避免数据遗漏,要使用Git提供的命令而不能
使用GNU patch命令。即时要导入的不是Git版本库,也可以使用Git命令。

修改提交说明

1
git commit --amend

这个命令如果不带”-m”参数,会进入提交提交说明编辑界面,修改原来的提交说明,直到满意为止。

如果要修改某个历史提交的提交说明,Git也可以实现,但要用到另一个命令:变基命令。
例如要修改所标识提交的提交说明,执行下面的命令,并在弹出的变基索引文件中
修改相应提交前面的动作的关键字。

1
git rebase -i <commit-id>^

删除不应提交的文件

1
2
git rm --cached 文件名
git commit --amend

如果是历史版本,例如是在所标识的提交中引入的文件,则需要使用变基操作。

1
git rebase -i <commit-id>^

更好用的提交列表

git add 命令将修改内容加入提交暂存区。
git add -u 命令可以将所有修改过的文件加入暂存区。
git add -A 命令可以将本地删除文件和新增文件都登记到暂存区。
git add -p 命令甚至可以对一个文件内的修改进行有选择性的添加。

一个修改后的文件被登记到提交暂存区后,可以继续修改,继续修改的内容不会被提交,除非再对此文件
再执行一次 git add 命令。即一个修改文件可以拥有两个版本,在提交暂存区中有一个版本,在工作区
中有另外一个版本。

执行 git commit命令提交,无须设定什么变更列表,直接将登记在暂存区中的内容提交。
Git支持对提交的撤销,而且可以撤销任意多次。

工作进度保存

如果工作区的修改尚未完成时,忽然有一个紧急的任务,需要从一个干净的工作区开始新的工作,
或者要切换到别的分支进行工作,那么如果保存当前尚未完成的工作进度呢?

1
git stash

在切换到新的工作分支之前,执行 git stash 保存工作进度,工作区会变的非常干净,然后就可以切换到新的分支。

1
2
git stash 
git checkout <new_branch>

新的工作分支修改完毕后,再切换回当前分支,调用 git stash pop 命令则可恢复之前保存的工作进度。

1
2
git checkout <orignal_branch>
git stash pop

更好的差异比较

Git对差异比较进行了扩展,支持对二进制文件的差异比较,这是对GNU的 diffpatch 命令的重要补充。
还有Git的差异比较除了支持基于行的差异比较外,还支持在一行内逐字比较的方式,当向 git diff 命令
传递 --word-diff 参数时,就会进行逐字比较。
在上面介绍了工作区的文件修改可能会有两个不同的版本,一个是在提交暂存区,一个是在工作区。因此在
执行 git diff 命令时会遇到令Git新手费解的现象。

  • 修改后的文件在执行 git diff 命令时会看到修改造成的差异。
  • 修改后的文件通过 git add 命令提交到暂存区,再执行 git diff 命令会看不到该文件的差异。
  • 执行 git diff --cached 命令才可以看到添加到暂存区中的文件所做出的修改。

无处不在的分页器

分页器默认使用 less命令(less -FRSX)进行分页。
下面是在分页器中常用的热键:

  • 字母q:退出分页器;
  • 字母h:显示分页器帮助;
  • 按空格下翻一页,按字母b上翻一页;
  • 字母d和u:分别代表向下翻动半页和向上翻动半页;
  • 字母j和k:分别代表向上翻一行和向下翻一行;
  • 如果行太长被截断,可以用左箭头和右箭头使得窗口内容左右滚动;
  • 输入/pattern:向下寻找和pattern匹配的内容;
  • 输入?pattern:向上寻找和pattern匹配的内容;
  • 字母n或N:代表向前或向后继续寻找;
  • 字母g:跳到第一行;
  • 字母G:跳到最后一行;
  • 输入数字再加字母g:则跳转到对应的行;
  • 输入!:可以执行Shell命令。

对于默认未提供分页器的Git命令,例如 git status 命令,可通过下面任一方法启用分页器:

  • git 和子命令(如:status)之间插入参数-p--paginate,为命令启用内建分页器。如:
1
git -p status

-设置Git变量,设置完毕后运行相应的命令,将启用内建分页器。

1
git config --global pager.status true

Git 命令的分页器支持带颜色的字符输出,对于太长的行则采用截断方式处理(可用左右方向键滚动)。
如果不习惯分页器的长行截断模式而希望采用自动折行模式,可通过下面任一方法进行设置:

  • 通过设置LESS环境变量来实现。
1
export LESS=FRX

-或者通过定义Git配置变量来改变分页器的默认行为。

1
git config --global core.pager 'less -+$LESS -FRX'

本文标题:Git学习之~爱上Git的理由

文章作者:王洪博

发布时间:2018年05月22日 - 20:05

最后更新:2019年09月12日 - 10:09

原始链接:http://whb1990.github.io/posts/d9014d70.html

▄︻┻═┳一如果你喜欢这篇文章,请点击下方"打赏"按钮请我喝杯 ☕
0%