重新认识的价值
重新认识常用的 git 命令,就像是走进一个熟悉的房间,但是里面的家具被全部重新布置了一次一样。这种焕然一新的感觉和体验,能够帮助理解后续的《git 内部原理》相关章节产生帮助。无论你是经验老道的资深开发者,还是希望了解 git 的普通爱好者,我都建议你细读本章的内容。
Git 命令
查看已暂存和未暂存的变更
git status
命令允许我们查看当前工作目录的状态,但并不提供查看具体某行改动的功能。
如果你想要知道当前工作目录相对于本地分支版本,具体哪些信息发生了变化,你可以使用 git diff
命令。
不添加任何参数的 git diff
命令可以列举出尚未添加到暂存区的具体变更。
相对于暂存区的文件 1.txt,本地工作目录的 1.txt 增加了 hello world 的改动。
如果你想要查看哪些已暂存的内容会进入下一次提交怎么办?答案是使用
git diff --staged
命令。
编辑 1.txt 命令,新增 world hello 文本信息到文件中。
使用 git diff --staged
命令,查看本次的修改是否会影响到暂存区?
进入下一次提交的信息,依然只有增加文件之前的变更内容。
移除文件与移动文件
要从 git 中移除某个文件,你需要先从跟踪文件列表中移除,然后再进行提交操作。
git rm
命令除了帮你完成这些操作以外,还会帮你把文件中工作目录中移除。
git mv
命令帮助你对文件进行移动操作。
真棒。但是 git 是如何跟踪到文件的移动或文件名的更改的呢?实际上,git mv
命令等于连续执行以下三个命令。
mv 1.txt 2.txt
git rm 1.txt
git add 2.txt
查看提交历史
当出现线上问题时,能否第一时间运用 git log
定位到产生问题的人,并迅速把 这个人给解决掉,不仅是资深开发者的必备技能之一,更是求生意志的重要体现。
git log -p -2
参数 p 会显示出每次提交引入的差异。-2 参数表示只显示最近的两次提交记录。
今夜我产生了两次提交。第一次增加了 hello world 字符到文本 1.txt 中,第二次修改了 1.txt 文件的文件筐。像这样的真凭实据,足以让那个产生问题的人闭嘴接锅了。
撤销操作
在 git 中,基本上总有后悔药可以吃。如果你对上一次的提交信息不满。git commit -amend
命令可以帮你在不产生新的提交记录的基础上,修改上一次的提交信息。
注意,类似后悔药这样的药物总是伴随着强烈的副作用。如果你不想在药效过后成为一副被掏空灵魂的躯壳,谨慎使用这个命令。
从远程仓库获取和拉取数据
git fetch [remote-name]
命令会从远程仓库中获取所有本次仓库没有的数据。该命令并不会将数据合并到本地的工作成功中。当你需要某个最新版本的数据时,你需要手动将这些命令合并到你的本地目录中。换句话说:git fetch
从网络上获取最新的快照信息,但并不会检出最新的快照版本合并到本地。这听起来要比 git pull
麻烦一些,但是更规范也更安全。
标记与标签
注释标签
git tag
命令帮助你对某个提交版本打上标签。
➜ gitExperiment git:(master) git tag -a v1.4 -m "my version 1.4"
git show v1.4
命令可以查看到标签数据以及对应的提交信息。
轻量标签
git tag v1.4-lw
这样的标签不包含标签信息,只有提交信息以及标签的版本号。
检出标签
标签无法被检出。因为标签无法移动。你可以使用 ```git checkout -b [branchname] [tagname] 在特定的标签上创建一个新的分支。接着在新的分支上进行作业。
查看已经合并的分支
常见的 git 工作流中,常出现需要删除合并到 master 或 dev 的分支的环节。git branch --merged
能够让你查看哪些分支已经并入当前分支。
结语
生活中没有平凡的事物,每一份落日都是一份礼物。坦然接受平凡的馈赠,才能领悟深刻的人生哲学。重新认识生活,重新开始编程。认真专注于每一个细节和过程,向浮躁的社会和团队说不,你才能走的更远。