点击“小詹Python”,“星标”或"置顶"

关键时刻,第一时间送达

本文授权转载自机器之心

未经许可禁止二次转载

本文讨论的是开发人员、数据科学家或产品经理应该了解的各种 Git 命令。我们将了解该如何用 Git 进行检查、删除和整理操作。我们还将介绍如何用 Bash 别名和 Git 编辑器配置来逃避 Vim 以节省时间。

如果你不熟悉基本的 git 命令,在阅读本文前可以先参考我之前写的关于 Git 工作流程的文章。

地址:https://towardsdatascience.com/learn-enough-git-to-be-useful-281561eef959

本文介绍了 10 个常见的命令以及它们的一些参数。每个命令都可以链接到该命令的 Atlassian Bitbucket 指南。

检查

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

  • 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——撤销 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 中出不去了!

使用 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 相关信息,请参阅:https://stackoverflow.com/a/30462883/4590385

现在你在终端键入 gs 的效果和键入 git status 的效果是一样的。注意,在终端中你可以输入快捷键后再输入其它标记。

你也可以使用 Git 的别名,但这要求你在输入快捷键命令之前先输入 git。谁会需要这些额外的按键呢?

总结

本文介绍了许多关键的 Git 命令,还介绍了如何配置环境,这帮你节省了一些时间。现在你有了 Git 和 GitHub 的基础,准备好进行下一步了吗?

想要更深入地了解,请参阅这篇 Bitbucket Git 教程:https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud

这里还有一篇关于 Git 分支的交互式指南:https://learngitbranching.js.org/

去和别人一起工作、互相学习,并互相解惑吧!

原文链接:https://towardsdatascience.com/10-git-commands-you-should-know-df54bea1595c

推荐阅读:

深度学习搞CV?图像数据不足咋办?看这里!分享我的的几点思考。

你在看吗?

​你可能不太会用的10个Git命令相关推荐

  1. git bash命令_?你可能不太会用的10个Git命令

    本文讨论的是开发人员.数据科学家或产品经理应该了解的各种 Git 命令.我们将了解该如何用 Git 进行检查.删除和整理操作.我们还将介绍如何用 Bash 别名和 Git 编辑器配置来逃避 Vim 以 ...

  2. 【转载】(Git)用动图展示10大Git命令

    1.说明 git merge.git rebase.git reset.git revert.git fetch.git pull.git reflog-- 你知道这些 git 命令执行的究竟是什么任 ...

  3. 小姐姐太强了,动图展示 10 大 Git 命令,不会都难

    code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 选自dev.to           作者:Lydia Hallie 机器之心编译        参与:Panda. ...

  4. 这个神了,一目了然,确实好,看小姐姐用动图展示10大Git命令

    选自dev.to  作者:Lydia Hallie 机器之心编译  参与:Panda.杜伟 git merge.git rebase.git reset.git revert.git fetch.gi ...

  5. 打开git命令窗口_用动图的形式打开 10 大 Git 命令?

    转自机器之心 https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1 git merge.git rebase.git re ...

  6. 小姐姐用动图展示 10 大 Git 命令,包你看完过目不忘!

    git merge.git rebase.git reset.git revert.git fetch.git pull.git reflog--你知道这些 git 命令执行的究竟是什么任务吗?如果你 ...

  7. 经验 | 一目了然,用动图展示 10 大 Git 命令

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :机器之心 AI博士笔记系列 ...

  8. 只看当前分支_看小姐姐用动图展示10大Git命令

    (给机器学习算法与Python学习加星标,提升AI技能)选自dev.to本文授权转自"机器之心"(almosthuman2014) git merge.git rebase.git ...

  9. 动图展示 10 大 Git 命令

    git merge.git rebase.git reset.git revert.git fetch.git pull.git reflog--你知道这些 Git 命令执行的究竟是什么任务吗?如果你 ...

最新文章

  1. Exchange Server 2016管理系列课件33.通讯组仲裁
  2. 使用oracle和sqlserver的几点区别【转】
  3. SQL语言之用户(Oracle)
  4. 【云炬大学生创业基础笔记】第1章第3节 什么是创业测试
  5. CVPR 2022 | 利用域自适应思想,北大、字节跳动提出新型弱监督物体定位框架
  6. 《Excel最强功能-数据透视表》 网课笔记
  7. 成为优秀程序员的十个Tips
  8. tcp压测工具_【解决方案】性能压测及分析调优实践
  9. 一次性搞懂JavaScript正则表达式之语法
  10. 主线程是如何向子线程传递数据的?_c++ 利用thread创建线程
  11. 【8.0、9.0c】树形列表 列标题 不对齐的问题及解决方案
  12. 博客园的神回复,程序猿的奇葩神回复[连载][二]
  13. 22.实例 --- nginx 虚拟主机
  14. 自带CA ,sha256 哈希签名,2048 位加密 脚本,通用
  15. 西数硬盘刷新固件_机械硬盘选购:SMR避坑指南
  16. 安卓手机如何打开开发者模式?
  17. 计算机操作系统的最基本特性,操作系统有哪几大特征?其最基本的特征是什么?...
  18. 计算机清理垃圾代码,你也可以写代码系列,一键清除系统垃圾文件的代码(超简单)-清除垃圾文件...
  19. 怎么判断私网地址_判断本机IP地址是公网地址还是私网地址
  20. springboot 处理put请求参数

热门文章

  1. 中年程序员都在想什么?
  2. nginx源码分析—内存池结构ngx_pool_t及内存管理(精辟)
  3. Linux之Nginx配置解析PHP
  4. 反思代码能力提升方法:重构 多写 知识面
  5. 微信小程序-当用户拒绝了位置信息的请求时,提醒用户去设置地理位置授权
  6. mysql表的类型_浅谈MySQL表类型
  7. MySQL 5.7建表时date类型提示默认值类型错误的问题处理
  8. docker tomcat 多开 实例_Docker zabbix-agent 监控 docker tomcat 多实例
  9. Window将Redis设置为开机启动
  10. docker快速搭建RabbitMQ集群