用git diff常常会出现不少内容,致使不少内容被遮住了,让人非常苦恼,幸运的是这里有个解决方案。html
若是你使用less做为默认的pager,只须要输入-s,就能够保证不会被diff刷屏了。git
或者,你也可使用git config设置pager来达到一样的效果:网络
为当前项目设置pager:less
再将pager设置的做用域设置为整个项目:编辑器
在某些网络环境下,你可能须要为git配置代理,这很简单,只须要一行命令就能够了:函数
在某些大型项目中,或者只是图方便,有时候你可能只但愿clone某个分支,你能够这样作:工具
很简单:学习
也许你是想将其恢复,所以须要仔细确认某些merge操做,不管如何,列出版本库中全部已删除的文件会很是有帮助。你只须要这样作:fetch
若是你想将其恢复,参照这里。优化
若是你不想知道是哪次commit中删除的,只须要添加一个grep delete。
每每你想要查找某段代码、某个函数、一个常量、一个文件,可是却找不到了。它被删除了,何时删除的?这个小技巧能搜索整个版本库中git diff信息,可能会花些时间,可是很是有用:
从另外一个版本库中cherry-pick一条提交记录,首先须要将那个版本库做为一个远程版本库添加进来,并fetch其变化,而后cherry-pick其提交记录。
若是你追求速度,也可使用这个未经优化的命令:
有时候你会在better_brach上工做一段时间,并准备将其设为新的master,你会怎么作?
这里是Stack Overflow上提供的常规解决方案:
1.切换到better_brach分支:
2.保留better_branch分支所有内容,可是记录合并:
3.切回mater
4.快速合并
5.若是你想让合并步骤变得更清晰,能够添加commit信息。只须要修改下第二步:
这样会重写历史记录,因此只能在未和任何人分享前作,不然将可能把同事者的文件破坏。
1.建立一个新的空分支,例如:newroot
2.建立空的commit
3.从新发送分支的所有内容
4.删除临时分支newroot
如今master就已经包含了一个空的root commit了。
有时候你会想要从某个分支从新开始,或者打算保留一些逻辑上和主干相关可是跟踪另外一个跨职能方面的代码,就像GitHub项目的gh-pages。
但若是你只想从新开始某个分支,清空全部历史记录呢?
1.检出(checkout)一个分支:
2.跟上条同样,先创建增长一个初始的空commit,以后就能够经过从新设置来清空一个分支。
3.使用hard重置分支到刚刚建立的初始commit:
当你想在推送前重作你最后的commit时,可使用修改命令(git commit --amend)。若是你想修改的不是最后一个commit呢?
这种状况下,你可使用git rebase,例如,你想要修改bbc643cd commit,运行下面的命令:
在默认的编辑器中选择并修改你指望修改的,而后保存修改并输入:
如今你就可使用
来修改commit,以后使用
返回以前最新的commit。
git stash --keep-index命令能够用来隐藏上次commit中没有add的东西,以后add想要提交的文件并运行相应命令就能够了。
按照下面的提示,你能够把一条老的commit提交到多个变动集中:
互动地rebase最后一条好的commit:
将某些变化标记为edit:
添加相应的文件:
所以以前没有添加的文件:
别忘了收尾:
有必要的话,重复第二步以后的步骤:
原文连接:durdn.com
Git版本控制软件结合GitHub从入门到精一般用命令学习手册http://www.ihref.com/read-16369.html