10种Git技巧,让你省时省力又省心!

news/2024/7/5 1:42:43

640?wx_fmt=jpeg

图片来源:unsplash.com/@sam_truong

1. 从另一分支切换单个文件

大家是否曾销毁文件只为能重新开始? 或需要在另一分支的某文件中进行更改?而git指令可以实现从另一分支切换文件。

git checkout some-other-branch -- yarn.lock

同时,也可以使用相同的技巧从特定提交项切换出某个文件。

git checkout 9146367 -- yarn.lock

640?wx_fmt=png

若cherry-pick能够筛选出不需要的文件,那么这就是十分有效的技巧了。

2. 查看日志时无需合并提交

合并提交常常令人头疼。事实上,有些人宁可不用合并指令,因为合并提交真是太讨厌了。

就个人而言,笔者认为合并指令是项目历史记录的重要组成部分,不应该在工作流中唯恐避之不及。

也就是说,可以使用此标记来过滤合并提交以查看项目的历史记录。

git log --oneline --no-merges

640?wx_fmt=png

3. 改写上一个提交信息

若不小心提交了带有拼写错误或误导性提交信息的内容时,这个方法就派上用场了。

git commit -v --amend

-v是可选项,但由于其展示了许多更改相关的信息,笔者还是比较喜欢这个的,,有助于编写更具描述性的提交消息。

4. 移除所有未跟踪更改

尽管不言而喻,但以防有人对该概念不熟悉:

如果创建一个新的文件,且该文件在git历史中并不存在,那么就相当于进行了一个未跟踪更改。需要提交回购协议才能开始追踪该文件。

640?wx_fmt=png

如果提交过程中改变了主意,随后又想撤销先前的更改,此时,git checkout可用于移除先前所有的追踪更改,但是未跟踪更改却仍然会四处浮动。为解决这个问题, git clean应运而生。

git clean -f –d

5. 输出酷炫的可视化日志

虽然这点只会让日志看起来很酷,但就可视化所有长期分支而言,这点还是十分有用的。

git log --pretty=oneline --graph --decorate --all

试试吧。

6. 向git请求一个变更日志

如果想知道更改内容和更改者的相关简要说明,可以向git申请变更日志类似的文件。

git shortlog <commit>..HEAD

本例中,应将<commit>替换为希望在日志开始时执行的提交。大体上,用git shortlog eafbc3c.. HEAD的意思是,“让我看看从提交eafbc3c到现在发生了什么变化。”

640?wx_fmt=png

按提交作者将短日志分组并显示每个提交消息的首行内容。若提交消息编写完善,则可很清楚地了解每个提交的实际操作。

利用一些巧妙的技巧,如git shortlog HEAD~20..,以此来获取最近20次提交的短日志。

7. 查看特定日期范围的日志

类似地,可能需要查看两天内回购的变化情况。

幸运的是,git可以实现这点。git log提交接受——以-since和-until作为标记。

所以若想知道2016年2月10日至2016年2月19日期间Solidus发生了什么,即可运行:

git log --since= FEB 10 2016  --until= FEB 19 2016

640?wx_fmt=png

现在,就可以看到墨菲在二月中旬非常活跃。

8. 列出所有git别名

有时可能需要为一些指令添加别名,随后就忘记了,或者使用的共享配置就已经定义了一些别名。

这是笔者无意中发现的一个技巧,尽管这不是git独有的特性,但是git config指令确实发挥着它的功效,为我们所利用。

git config -l | grep alias | sed  s/^alias.//g

试试吧,看是不是有忘记的别名!

9. 搜索包含关键字的提交

如果确切地知道要查找的是哪段代码,或者确切地知道需要在哪些关键字上查找更改,则可以按代码搜索日志。

此时git会提供一个提交列表,而该列表以某种方式影响了包含搜索字符串的代码或文本。

git log -S"config.menu_items"

在本例中,笔者找到一个提交列表,而该提交列表以某种方式操纵了字符串config.menu_items。

10. git教程超级机密列表

不是秘密,而是超级机密:

git help -g

Git是一个十分强大的工具,充满许多巧妙的技巧。这个列表不够全面,所以大家可多做一些研究并阅读git相关文档。 

推荐阅读


640?wx_fmt=gif


http://lihuaxi.xjx100.cn/news/286931.html

相关文章

启动mysqld报 mysql the server quit without updating pid file

查看mysql服务器的错误日志有一句&#xff1a; InnoDB: mmap(137363456 bytes) failed; errno 12 原来是内存不够用&#xff08;需要131MB&#xff09;呀&#xff0c;把my.cnf中的innodb_buffer_pool_size值修改成8M解决问题 这个弄好好,发现服务器上的wordpress任然报“数据库…

博弈论入门1

博弈论 1.是二人或多人在平等的对局中各自利用对方策略变换自己的对抗策略&#xff0c;达到取胜目标的理论。 2.博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系&#xff0c;从而确定自己在博弈中 3.的优势&#xff0c;因此有不少博弈理论&#xff0c;可以帮助对…

Oracle导入csv数据字符集,用SQLLDR把.CSV文件导入到数据库时,出现无法定位字符集句柄以用于字符集标识(0)...

LOAD.CTL文件内容:load datareplace into table js_clk_loadfields terminated by "," optionally enclosed by "(bh,mc,xhgg,dw,sl,qt1,qt2,scdj,qt3,qt4,qt5,scj)T--0001.CSV内容为:编号 材 料 名 称 规 格 型 号 单位 数量 …

上映 10 天,票房就突破 10 亿的《海王》真的有那么好看?

出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;写在前面本文将主要通过Python加上一些数据分析&#xff0c;来证明《海王》好看。《海王》一部电影带你重温《驯龙高手》《变形金刚》《星球大战》《星河战队》《铁血战士》《安德的游戏》《异形》可能还借…

Python实现微信防撤回

微信&#xff08;WeChat&#xff09;是腾讯公司于2011年1月21日推出的一款社交软件&#xff0c;8年时间微信做到日活10亿&#xff0c;日消息量450亿。在此期间微信也推出了不少的功能如&#xff1a;“摇一摇”、“漂流瓶”、“朋友圈”、“附近的人”、“公众平台”、“小程序”…

shell 监控局域网的主机是否up(转)

#!/bin/bash for ((i30;i<60;i)) ;do ping -c 3 172.31.0.$i>/dev/null #ping -c 172.31.0.30 ~172.31.0.59 if [[ $? -eq 0 ]] #if up $?0 then echo "172.31.0.$i is alive" else echo "172.31.0.$i isnt…

关于学习Python的一点学习总结(36->基本序列和映射协议)

基本的序列和映射协议 1.len(self)&#xff1a;这个方法应返回集合包含的项数&#xff0c;对序列来说为元素个数&#xff0c;对映射来说 为键值对数。如果__ len __ 返回零&#xff08;且没有实现覆盖这种行为的__nonzero__&#xff09;&#xff0c;对象在布 尔上下文中将被…

差分 ---- Codeforces Round #672 (Div. 2):C2. Pokémon Army (hard version)[差分的思想]

题目链接 题目大意&#xff1a;就算给你一序列&#xff0c;按照顺序出若干个数组成一个的序列&#xff0c;然后对这个序列定义一个权值就算奇数位置的和减去偶数位置的和&#xff0c;问你能的到的最大的权值是多少&#xff1f; **a1 - a2 a3 - a4 a5 … ** 解题思路&#xff…