你可能不太会用的10个Git命令
作者:媒体转发 时间:2019-03-22 16:39
地址:https://towardsdatascience.com/learn-enough-git-to-be-useful-281561eef959
本文介绍了 10 个常见的命令以及它们的一些参数。每个命令都可以链接到该命令的 Atlassian Bitbucket 指南。

1. 检查
先了解一下如何检查改动痕迹。

git diff——查看所有本地文件的改动。只改动一个文件的话可以在命令后添加文件名。
git log——查看所有提交历史。还可用于带有 git log –p my_file 的文件,输入 q 退出。
git blame my file——了解谁在什么时候对 my_file 做了什么样的改动。
git reflog——显示本地代码库 HEAD 的更改日志。这个命令很适合查找丢失的工作。
用 Git 进行检查并不麻烦。相比之下,Git 中有不少删除和撤销提交以及文件改动的操作。
2. 撤销
可以用 git reset、git checkout 和 git revert 撤销在代码库中所做的改动,这些命令可能有点难理解。
git reset 和 git checkout 既可用于提交也可用于单个文件的修改,而 git revert 只能用在提交层面。如果你只需要处理尚未合并到协作远程工作的本地提交,你可以使用这三者中任何一条命令。如果是协同工作且需要撤销远程分支中的提交,那么就用 git revert。

这些命令中的每一条都有多个参数。以下是常见的用法:
git reset –-hard HEAD——撤销最近提交以来暂存区和非暂存区的改动。
指定不同的提交而不是 HEAD,以撤销自这条提交以来的更改。--hard 指的是撤销暂存区和非暂存区的更改。
要确保你撤销的不是协作伙伴所依赖的远程分支的提交。
git checkout my commit——从 my_commit 中撤销非暂存区的改动。
HEAD 常用在 my_commit,用来撤销最近一次提交以来在本地工作目录的改动。
checkout 最适合用于仅限于本地的撤销。它不会破坏你的协作伙伴所依赖的远程分支的提交历史。
如果你将 checkout 用在分支而不是提交上,HEAD 将会切换到指定分支,并更新成匹配的工作目录。这是 checkout 命令更常见的用法。
Git revert my commit——撤销 my_commit 中的更改。当用 revert 撤销改动时,它会产生新的提交。
对协作项目而言,revert 是很安全的,因为它不会覆盖其他用户分支可能依赖的历史记录。

revert 很安全
有时候你只想删除本地目录中的未追踪文件。例如,也许你运行的代码在版本库中创建了许多你不需要的不同类型的文件。你可以一键清除它们!
Git clean –n——删除本地工作目录中的未追踪文件。
–n 表示试运行,在试运行中什么都不会删除。
-f 表示实际删除文件。
-d 表示删除未追踪的目录。
默认情况下不会删除 .gitignore 中的未追踪文件,但这种行为是可以更改的。

现在你已经知道了 Git 中用于撤销操作的命令,接下来我们再看两条可以有序排列文件的命令。
整理
Git commit –amend——将暂存区的更改添加到最近一次提交中。
如果暂存区中什么都没有,你可以用该命令编辑最新的提交信息。只有在提交尚未整合到远程主分支中时才使用该命令!
Git push my remote –tags——将所有本地标记发送到远程版本库中。适用于版本变更。
如果你用的是 Python,并希望更改你所构建的包,bump2version 会自动为你创建标签。一旦将标签推送出去,你就可以在自己的版本中使用了。这里有一篇我的指南,可以指导你完成第一个 OSS Python 包。跟紧我,确保你不会错过版本控制的部分!
指南:
https://towardsdatascience.com/build-your-first-open-source-python-project-53471c9942a7?source=friends_link&sk=576540dbd90cf2ee72a3a0e0bfa72ffb
求助,我被困在 Vim 中出不去了!




