作者| Jeff Hale
来源| Towards Data Science
编辑|代码医生团队
在本文中,将讨论作为开发人员,数据科学家或产品经理应该了解的各种Git命令。将看看使用Git检查,删除和整理。还将讨论如何通过Bash别名和Git编辑器配置来逃避Vim并节省时间。
检查事物
先看一下检查变化。
git diff- 在本地查看所有文件更改。可以附加文件名以仅显示一个文件的更改。
git log- 查看所有提交历史记录。也可以用于文件git log -p my_file。输入q退出。
git blame my_file- 查看谁更改了my_file中的内容和时间。
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-undo在变化的影响my_commit。revert 在撤消更改时进行新提交。
revert 对于协作项目是安全的,因为它不会覆盖其他用户的分支可能依赖的历史记录。
revert 是安全的
有时只想删除本地目录中未跟踪的文件。例如可能运行了一些代码,这些代码创建了许多在repo中不需要的不同类型的文件。可以快速清洁它们!
git clean -n- 删除本地工作目录中未跟踪的文件。
该-n标志用于干运行,其中没有任何内容被删除。
使用该-f标志实际删除文件。
使用 - d标志删除未跟踪的目录。
默认情况下,.gitignore未跟踪的文件不会被删除,但可以更改此行为。
现在已经了解了在Git中撤消事物的工具,再看两个命令来保持秩序井然有序。
整理事物
git commit --amend- 将暂存的更改添加到最近的提交中。
如果没有暂存,则此命令仅允许编辑最新的提交消息。如果提交尚未集成到远程主分支中,则仅使用此命令!
git push my_remote --tags- 将所有本地标签发送到远程仓库。适用于版本更改。
如果正在使用Python并对构建的软件包进行更改,那么bump2version将自动创建标记。推送标签后,可以在版本中使用它们。
/project/bump2version/
帮助,我被困在Vim并且无法离开!
使用Git,可能偶尔会发现自己陷入了Vim编辑器会话。例如假设您尝试在没有提交消息的情况下提交 - Vim将自动打开。如果不了解Vim,- 在这个Stack Overflow回答中看到4,000+以上的投票,以了解如何摆脱它。
/a/11828573/4590385
自由!
以下是使用保存文件逃避Vim的四步计划:
按i进入插入模式。
在第一行输入您的提交消息。
按退出键 -Esc。
输入:x。不要忘记结肠。
更改默认编辑器
要完全避免使用Vim,可以在Git中更改默认编辑器。以下是包含常用编辑器命令的文档。这是更改我使用的编辑器默认值的命令,Atom:
/git/tutorials/setting-up-a-repository/git-config
gitconfig--globalcore.editor"atom--wait"
假设安装了Atom,现在可以解决其中的Git问题。
为Git命令制作快捷方式
通过向.bash_profile添加以下别名来添加Git命令的快捷方式。
status'aliasga='git add'aliasgaa='gitadd-A'alias gb='git branch'aliasgc='git commit'aliasgcm='gitcommit-m'alias go='gitcheckout'aliasgs='git
可以调整为喜欢的任何Git命令制作快捷方式。
如果没有。bash_profile,可以使用以下内容在macOS上创建一个:
touch~/.bash_profile
然后打开它:
open~/.bash_profile
在这里查看.bash_profile的 更多信息。
/a/30462883/4590385
现在,当输入gs终端时,它与输入相同git status。请注意可以在快捷方式后在终端中输入其他标记。
也可以创建Git别名,但这些别名要求git在快捷命令之前键入。
Wrap
在本文中,已经看到了一堆关键的Git命令,并配置了环境以节省时间。现在有了Git和GitHub的基础。准备下一步了吗?
查看这个Bitbucket Git教程,深入了解。
/git/tutorials/learn-git-with-bitbucket-cloud
浏览Git分支的交互式指南。分支可能令人困惑,所以它绝对值得一看。
/
学习并向别人解释差异。
希望这个介绍Git和GitHub很有用。如果喜欢请分享它。
关于图书
《深度学习之TensorFlow:入门、原理与进阶实战》和《Python带我起飞——入门、进阶、商业实战》两本图书是代码医生团队精心编著的 AI入门与提高的精品图书。配套资源丰富:配套视频、QQ读者群、实例源码、 配套论坛: 。更多请见: