你只需要对…有一个基本的了解Git使源代码管理实用程序非常有用。但是Git提供了一系列命令和选项,可以使您的工作流运行得更加顺畅。这里有一些Git提示和技巧,可以让这个工具比您想象的更强大。
别名在git中
毫无疑问,有一些Git命令是您经常使用的git checkout,git提交,git状态为例。您可以通过使用Git别名来减少调用这些键击的次数。Git存储它的别名(和一些其他的配置选项;在~/.gitconfig文件中。你可以编辑这个文件添加别名行:
st = status co = checkout cm = commit
或者你也可以用这样的命令添加它们:
git config——全局别名。圣“状态”
要查看您设置的别名和其他配置选项,请运行该命令git配置- l。别名对于一些较长的命令特别方便,比如下面讨论的一些命令。一个有用的别名是ds = diff—阶段,它向您展示了您将要提交到存储库的不同更改—在添加更改之后,但在提交之前。在你做出承诺之前,快速浏览一下这些内容是一个很好的做法。
可视化和管理git分支
如果您有很多分支,那么查看Git历史记录的图形表示会很有用。一个选择是gitx的标准版本(默认情况下应该包含在Git安装中)或使用这个改进叉。但是,如果您只想在命令行上查看历史记录的图形表示,请尝试
git日志—graph—simplify-by-decoration—pretty=format:'%d'—all
simplify-by-decoration只显示由分支或标记引用的提交,这里唯一的输出是ref名称(% d;有关更多格式信息,请参阅git日志手册中的漂亮格式部分)。更详细的版本显示了所有提交,标题行,作者,日期,和简短的提交散列,用漂亮的颜色:
git log -graph -pretty=format':%s %Cblue%an, %ar %Cgreen(%h)%Creset'
添加——simplify-by-decoration到最后的版本,得到两者之间的交叉-简化,只有特定的提交,但有更多的提交信息。
在查看树之后,您可能会注意到有许多分支似乎已经被合并了。如果您的工作流大量使用了Git分支,那么这一点尤其正确。要查找哪些分支已经合并到其他分支,请尝试git分支——合并,或者使用git分支——no-merged显示未合并的分支。然后您可以手动删除合并的分支git - d。(由于克里斯·凯利这一建议。)
查看更多Git日志历史
git日志对于回顾您的提交历史是有用的,但是它是非常基础的。它只显示提交ID、作者、日期和提交消息。我还经常想知道哪个文件被更改了。你有几个选择来做这个:
git日志——统计:给出漂亮的输出,显示哪些文件更改了,以及每个文件中有多少更改(添加和删除)。但不幸的是,它并不显示添加的文件。git日志——name-status:显示更改的文件以及它们是否被添加、修改或删除,但不显示更改的性质或总体更改的数量。git日志——名义:只显示提交信息和涉及的文件的名称,但不显示它们发生了什么。
使用这些你应该能够得到你想要的信息。
你也可以使用git whatchanged命令,它显示每个提交的提交日志和diff输出。默认的diff输出是Git的内部格式;对于对人类读者更有用的文本差异,请尝试git whatchanged - p不过,如果您只是想检查哪些文件被更改了,那么这样做通常是多余的。
忽略文件
忽略所有git存储库中的文件;编辑~ / .gitignore:
git配置——全局核心。excludesfile ~ / .gitignore”
如果不小心添加了一个宁愿忽略的文件,可以将其从commit中取消git rm:
gitrm——缓存unwant文件。txt
然后可以将其添加到本地或全局中.gitignore文件在将来忽略它。
修改和逆转变更
有时候你可能会做一些你不想做的事情,或者过早地做。尝试运行git变基-我如果您最终做出了本应全部在一起的多个提交,或者如果您希望合并一组提交以进行代码评审。确保您的更改是最新的,并且您在您正在处理的分支上,然后输入git rebase -i大师将您在该分支上所做的提交压缩为一个主分支上的提交。你会看到一个屏幕,看起来有点像这样:
选择afa7532数组处理方法选择b860afa从笔记本文件读取到数组选择df1af7b设置笔记本文件方法# Rebase cb44197。df1af7b到cb44197 # #命令:# p, r =使用提交#,重述=使用提交,但编辑提交消息# e,编辑=使用提交,但停止修改#年代,南瓜=使用提交,但融合之前提交# f,修正=像“南瓜”,但丢弃这个提交的日志消息# x, exec =运行命令(线)的其余部分使用shell # #这些线可以重新定购商品;他们是自上而下执行的。# #如果删除这里的一行,COMMIT将丢失。#但是,如果你删除了所有内容,重置将会中止。
你可以重新排序的行,如果你喜欢,所以,例如,你可以编辑上面的文件,这样:
选择afa7532数组处理方法压缩df1af7b设置笔记本文件方法选择b860afa从笔记本文件读取到数组
这样就只剩下两次提交(数组处理和笔记本文件方法,以及从文件读取到数组)。或者像这样编辑:
选择afa7532数组处理方法squash b860afa从笔记本文件读取到数组squash df1af7b设置笔记本文件方法
把这三个都挤在一起保存文件并退出编辑器后,更改将提交给主服务器。如果你在那之前改变主意,删除所有的行,什么也不会发生。当然,你也可以基于另一个(非主)分支。
你可以用git commit -修改。在您想要提交的代码基的本地副本中进行更改(例如,可能您忘记添加foo了。rb,所以类型git添加foo.rb),然后输入git commit -修改。foo。然后rb将被包括在最后一次提交中(以及已经存在的所有内容),您将有机会编辑提交消息。如果不做本地更改,只输入git commit -修改,您就有机会修改提交消息。或者,如果您希望保留提交消息并只修改提交,则使用git提交-修改-C头。
要完全撤消提交,请使用git reset—soft HEAD^。这将撤销最后一次提交,但保留更改处于阶段状态。git reset—hard HEAD^撤销提交并在本地删除所有更改;小心使用!
处理单个提交的略微不同的方法是git择优挑选。这个命令允许您选择一个特定的提交并将其添加到您的分支,而不需要同时执行所有其他提交。如果您所选择的分支已经过时,很难将其全部合并到您自己的分支中,那么这也很有用。检出你想要添加提交到的分支,找到另一个分支的提交ID,然后使用:
git择优挑选COMMIT_ID
如果你遇到了冲突,你需要用正常的方式解决它们。
补丁,或增加变化位
有时您可能处理几个不相关的更改,并希望分别提交它们。您可以在每个文件的基础上通过使用git添加this.file然后遍历列表,或者git添加我进入交互版本git添加,它允许您选择更改并放置未跟踪的文件。
您还可以使用补丁功能将单独的大块更改提交到文件中。类型git添加-p myfile.rb遍历您对myfile所做的各种更改块。并且可以选择将每个项目添加到提交中。吗?为您提供帮助的命令选项,一旦您在那里。(再次感谢克里斯·凯利。)
查看Git手册页了解更多选项和技巧!