选自towardsdatascience,做者:Jeff Hale,机器之心编译,参与:李诗萌、Chita。python
本文讨论的是开发人员、数据科学家或产品经理应该了解的各类 Git 命令。咱们将了解该如何用 Git 进行检查、删除和整理操做。咱们还将介绍如何用 Bash 别名和 Git 编辑器配置来逃避 Vim 以节省时间。git
若是你不熟悉基本的 git 命令,在阅读本文前能够先参考我以前写的关于 Git 工做流程的文章。安全
地址:towardsdatascience.com/learn-enoug…bash
本文介绍了 10 个常见的命令以及它们的一些参数。每一个命令均可以连接到该命令的 Atlassian Bitbucket 指南。编辑器
检查学习
先了解一下如何检查改动痕迹。ui
git diff——查看全部本地文件的改动。只改动一个文件的话能够在命令后添加文件名。atom
git log——查看全部提交历史。还可用于带有 git log –p my_file 的文件,输入 q 退出。spa
git blame my file——了解谁在何时对 my_file 作了什么样的改动。3d
git reflog——显示本地代码库 HEAD 的更改日志。这个命令很适合查找丢失的工做。
用 Git 进行检查并不麻烦。相比之下,Git 中有很多删除和撤销提交以及文件改动的操做。
撤销
能够用 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 是很安全的,由于它不会覆盖其余用户分支可能依赖的历史记录。
有时候你只想删除本地目录中的未追踪文件。例如,也许你运行的代码在版本库中建立了许多你不须要的不一样类型的文件。你能够一键清除它们!
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 中出不去了!
使用 Git 时,你可能偶尔会发现本身被困在 Vim 会话中了。例如,你试着在没有提交信息的状况下提交,Vim 会自动开启。若是你不知道 Vim 的话,这种状况糟糕透了——在这个关于如何摆脱这一困境的 Stack Overflow 回答下有超过 4,000 的投票。
如下四步用于在已保存的文件中逃离 Vim:
1. 按 i 进入插入模式
2. 在第一行输入你的提交信息
3. 按下退出键——Esc
4. 输入 :x。别忘了冒号(colon)。
更改默认编辑器
为了不使用 Vim,能够更改 Git 中的默认编辑器。如下是更改我使用的编辑器 Atom 的默认值的命令:
git config --global core.editor "atom --wait"复制代码
假设你已经安装了 Atom,你如今就能够在 Atom 中解决 Git 问题了。
建立 Git 命令的快捷键
在 .bash_profile 中添加如下 alias 命令能够给 Git 命令添加快捷键:
alias gs='git status 'alias ga='git add 'alias gaa='git add -A 'alias gb='git branch 'alias gc='git commit 'alias gcm='git commit -m 'alias go='git checkout '复制代码
你能够调整上述命令,来为任何 Git 命令添加快捷键。
若是你没有 .bash_profile,你能够用如下命令在 macOS 上建立一个:
touch ~/.bash_profile复制代码
打开该文件:
open ~/.bash_profile复制代码
更多关于 .bash_profile 相关信息,请参阅:stackoverflow.com/a/30462883/…
如今你在终端键入 gs 的效果和键入 git status 的效果是同样的。注意,在终端中你能够输入快捷键后再输入其它标记。
你也可使用 Git 的别名,但这要求你在输入快捷键命令以前先输入 git。谁会须要这些额外的按键呢?
总结
本文介绍了许多关键的 Git 命令,还介绍了如何配置环境,这帮你节省了一些时间。如今你有了 Git 和 GitHub 的基础,准备好进行下一步了吗?
想要更深刻地了解,请参阅这篇 Bitbucket Git 教程:www.atlassian.com/git/tutoria…
这里还有一篇关于 Git 分支的交互式指南:learngitbranching.js.org/
去和别人一块儿工做、互相学习,并互相解惑吧!