原创 GitHub三天超4K星:玩转Git的72个神奇技巧

2023-01-28 0 452

原副标题:GitHub四天超4K星:畅享Git的72个奇妙基本功

原创
            GitHub三天超4K星:玩转Git的72个神奇技巧

新智元所推荐

撰稿:曾晓淇

【新智元编者按】不可否认,Git是两个“分布式系统版管理软件”,单纯的认知版管理软件。责任撰稿如是说了与采用Git有关的72个基本功,variations内含两张超详尽的脑图。GitHub正式发布3天已经超过4000星,值得称赞珍藏!

我们在用Git写东西的时候都用过“回调”这个机能,但是回调根本无法回调一百米,倘若想寻回我四天以后的修正,光用“回调”是找不回去的。

而“版管理软件”能历史记录每天的修正,如果递交到版库房,你就能找出以后时时刻刻的状况(文档状况)。

下面的文档是列出了常见的Git指示和一些小基本功,能通过”网页内搜寻”的方式进行加速查阅:Ctrl/Command+f。

Q1566A必修课

如果以后未采用过Git,能自学Git阿宝讲义进阶

1、一定要先试验指示的效用后,再用作组织工作自然环境中,以免导致不能填补的不良后果!这样一来别拿着斧头来找我。

2、所有的指示都在gitversion2.7.4(AppleGit-66)下THF1。

3、标准化基本概念:

组织工作区:更动(校订文档和文档);甲类:输入指示:gitadd更动的配置文档,本次更动就放在了‘暂存区’;邻近地区库房(全称:邻近地区):输入指示:gitcommit本次修正的叙述,本次更动就放在了’邻近地区库房’,每一commit,我叫它为两个‘版’;远距库房(全称:远距):输入指示:gitpush远距库房,本次更动就放在了‘远距库房’(GitHub等);commit-id:输入指示:gitlog,最下面那行commitxxxxxx,前面的数组是commit-id。

目录

展示帮助信息回到远距库房的状况重设第两个commit展示组织工作区和甲类的不同展示甲类和最近版的不同展示甲类、组织工作区和最近版的不同加速切换分支上两个分支删除已经合并到master的分支展示邻近地区分支关联远距库房的情况关联远距分支列出所有远距分支列出邻近地区和远距分支创建并切换到邻近地区分支从远距分支中创建并切换到邻近地区分支删除邻近地区分支删除远距分支重命名邻近地区分支查看标签查看标签详尽信息邻近地区创建标签推送标签到远距库房删除邻近地区标签删除远距标签切回到某个标签放弃组织工作区的修正恢复删除的文档以新增两个commit的方式还原某两个commit的修正回到某个commit的状况,并删除前面的commit修正上两个commit的叙述查看commit历史显示邻近地区更新过HEAD的git指示历史记录修正作者名修正远距库房的url增加远距库房列出所有远距库房查看两个星期内的更动把A分支的某两个commit,放在B分支上给git指示起别名存储当前的修正,但不用递交commit保存当前状况,包括untracked的文档展示所有stashes回到某个stash的状况回到最后两个stash的状况,并删除这个stash删除所有的stash从stash中拿出某个文件的修正展示所有tracked的文档展示所有untracked的文档展示所有忽略的文档强制删除untracked的文档强制删除untracked的目录展示简化的commit历史查看某段代码是谁写的把某两个分支到导出成两个文档从包中导入分支执行rebase以后自动stash从远距库房根据ID,拉下某一状况,到邻近地区分支详尽展示一行中的修正清除.gitignore文档中历史记录的文档展示所有alias和configs展示忽略的文档commit历史中显示Branch1有的,但是Branch2没有commit在commitlog中显示GPG签名删除全局设置新建并切换到新分支上,同时这个分支没有任何commit展示任意分支某一文档的文档clone下来指定的单一分支忽略某个文档的更动忽略文档的权限变化以最后递交的顺序列出所有Git分支在commitlog中搜寻有关文档把甲类的指定file放在组织工作区中强制推送一图详解

基本功大全详解

展示帮助信息

githelp-g

Thecommandoutputasbelow:

ThecommonGitguidesare:attributesDefiningattributesperpathcliGitcommand-lineinterfaceandconventionscore-tutorialAGitcoretutorialfordeveloperscvs-migrationGitforCVSusersdiffcoreTweakingdiffoutputeverydayAusefulminimumsetofcommandsforEverydayGitglossaryAGitGlossaryhooksHooksusedbyGitignoreSpecifiesintentionallyuntrackedfilestoignoremodulesDefiningsubmodulepropertiesnamespacesGitnamespacesrepository-layoutGitRepositoryLayoutrevisionsSpecifyingrevisionsandrangesforGittutorialAtutorialintroductiontoGittutorial-2AtutorialintroductiontoGit:parttwoworkflowsAnoverviewofrecommendedworkflowswithGitgithelp-aandgithelp-glistavailablesubcommandsandsomeconceptguides.Seegithelporgithelptoreadaboutaspecificsubcommandorconcept.

回到远距库房的状况

抛弃邻近地区所有的修正,回到远距库房的状况。

gitfetch–all&&gitreset–hardorigin/master

重设第两个commit

也是把所有的更动都重新放回组织工作区,并清空所有的commit,这样就能重新递交第两个commit了。

gitupdate-ref-dHEAD

展示组织工作区和甲类的不同

输入组织工作区和甲类的different(不同)。

gitdiff

还能展示邻近地区库房中任意两个commit之间的文档变动:

gitdiff

展示甲类和最近版的不同

输入甲类和邻近地区最近的版(commit)的different(不同)。

gitdiff–cached

展示甲类、组织工作区和最近版的不同

输入组织工作区、甲类和邻近地区最近的版(commit)的different(不同)。

gitdiffHEAD

加速切换分支上两个分支

gitcheckout-

删除已经合并到master的分支

gitbranch–mergedmaster|grep-v^\*\|master|xargs-n1gitbranch-d

展示邻近地区分支关联远距库房的情况

gitbranch-vv

关联远距分支

关联之后,gitbranch-vv就能展示关联的远距分支名了,同时推送到远距库房直接:gitpush,不需要指定远距库房了。

gitbranch-uorigin/mybranch

或者在push时加上-u参数:

gitpushorigin/mybranch-u

列出所有远距分支

-r参数相当于:remote:

gitbranch-r

列出邻近地区和远距分支

-a参数相当于:all

gitbranch-a

创建并切换到邻近地区分支

gitcheckout-b

从远距分支中创建并切换到邻近地区分支

gitcheckout-borigin/

删除邻近地区分支

gitbranch-d

删除远距分支

gitpushorigin–delete

或者

gitpushorigin:

重命名邻近地区分支

gitbranch-m

查看标签

gittag

展示当前分支的最近的tag

gitdescribe–tags–abbrev=0

查看标签详尽信息

gittag-ln

邻近地区创建标签

gittag

默认tag是打在最近的一次commit上,如果需要指定commit打tag:

$gittag-a-m”v1.0正式发布(叙述)”

推送标签到远距库房

首先要保证邻近地区创建好了标签才能推送标签到远距库房:

gitpushorigin

一次性推送所有标签,同步到远距库房:

gitpushorigin–tags

删除邻近地区标签

gittag-d

删除远距标签

删除远距标签需要先删除邻近地区标签,再执行下面的指示:

gitpushorigin:refs/tags/

切回到某个标签

一般上线以后都会打tag,是为了防止上线后出现问题,方便加速回退到上一版。下面的指示是回到某一标签下的状况:

gitcheckout-bbranch_nametag_name

放弃组织工作区的修正

gitcheckout

放弃所有修正:

gitcheckout.

恢复删除的文档

gitrev-list-n1HEAD–#得到deleting_commitgitcheckout^–#回到删除文档deleting_commit以后的状况

以新增两个commit的方式还原某两个commit的修正

gitrevert

回到某个commit的状况,并删除前面的commit

和revert的区别:reset指示会抹去某个commitid之后的所有commit

gitreset#默认是-mixed参数。gitreset–mixedHEAD^#回退至上个版,它将重置HEAD到另外两个commit,并且重置甲类以便和HEAD相匹配,但是也到此为止。组织工作区不会被更改。gitreset–softHEAD~3#回退至三个版以后,只回退了commit的信息,甲类和组织工作区与回退以后保持一致。如果还要递交,直接commit即可gitreset–hard#彻底回退到指定commit-id的状况,甲类和组织工作区也会变为指定commit-id版的文档

修正上两个commit的叙述

gitcommit–amend

查看commit历史

gitlog

查看某段代码是谁写的

blame的意思为‘责怪’,你懂的。

gitblame

显示邻近地区更新过HEAD的git指示历史记录

每天更新了HEAD的git指示比如commint、amend、cherry-pick、reset、revert等都会被历史记录下来(不限分支),就像shell的history一样。这样你能reset到任何一次更新了HEAD的操作之后,而不仅仅是回到当前分支下的某个commit之后的状况。

gitreflog

修正作者名

gitcommit–amend–author=AuthorName

修正远距库房的url

gitremoteset-urlorigin

增加远距库房

gitremoteaddorigin

列出所有远距库房

gitremote

查看两个星期内的更动

gitwhatchanged–since=2weeksago

把A分支的某两个commit,放在B分支上

这个过程需要cherry-pick指示

gitcheckout&&gitcherry-pick

给git指示起别名

简化指示

gitconfig–globalalias.比如:gitstatus改成gitst,这样能简化指示gitconfig–globalalias.ststatus

存储当前的修正,但不用递交commit

详解能参考廖雪峰老师的git讲义

gitstash

保存当前状况,包括untracked的文档

untracked文档:新建的文档

gitstash-u

展示所有stashes

gitstashlist

回到某个stash的状况

gitstashapply

回到最后两个stash的状况,并删除这个stash

gitstashpop

删除所有的stash

gitstashclear

从stash中拿出某个文档的修正

gitcheckout–

展示所有tracked的文档

gitls-files-t

展示所有untracked的文档

gitls-files–others

展示所有忽略的文档

gitls-files–others-i–exclude-standard

强制删除untracked的文档

能用来删除新建的文档。如果不指定文档配置文档,则清空所有组织工作的untracked文档。clean指示,注意两点:

clean后,删除的文档无法寻回;不会影响tracked的文档的更动,只会删除untracked的文档。gitclean-f

强制删除untracked的目录

能用来删除新建的目录,注意:这个指示也能用来删除untracked的文档。详情见上一条。

gitclean-df

展示简化的commit历史

gitlog–pretty=oneline–graph–decorate–all

把某两个分支到导出成两个文档

gitbundlecreate

从包中导入分支

新建两个分支,分支文档是下面gitbundlecreate指示导出的文档

gitclonerepo.bundle-b

执行rebase以后自动stash

gitrebase–autostash

从远距库房根据ID,拉下某一状况,到邻近地区分支

gitfetchoriginpull//head:

详尽展示一行中的修正

gitdiff–word-diff

清除gitignore文档中历史记录的文档

gitclean-X-f

展示所有alias和configs

注意:config分为:当前目录(local)和全局(golbal)的config,默认为当前目录的config

gitconfig–local–list(当前目录)gitconfig–global–list(全局)

展示忽略的文档

gitstatus–ignored

commit历史中显示Branch1有的,但是Branch2没有commit

gitlogBranch1^Branch2

在commitlog中显示GPG签名

gitlog–show-signature

删除全局设置

gitconfig–global–unset

新建并切换到新分支上,同时这个分支没有任何commit

相当于保存修正,但是重写commit历史

gitcheckout–orphan

展示任意分支某一文档的文档

gitshow:

clone下来指定的单一分支

忽略某个文档的更动

关闭track指定文档的更动,也是Git将不会在历史记录这个文档的更动

gitupdate-index–assume-unchangedpath/to/file

恢复track指定文档的更动

gitupdate-index–no-assume-unchangedpath/to/file

忽略文档的权限变化

不再将文档的权限变化视作更动

gitconfigcore.fileModefalse

以最后递交的顺序列出所有Git分支

最新的放在最下面

gitfor-each-ref–sort=-committerdate–format=%(refname:short)refs/heads/

在commitlog中搜寻有关文档

通过grep搜寻,given-text:所需要搜寻的字段

gitlog–all–grep=

把甲类的指定file放在组织工作区中

不添加参数,默认是-mixed

gitreset

强制推送

gitpush-f

一图详解

原文链接:

更多阅读

Nature重磅封面:复活死亡大脑!新智元春季招聘开启,一起弄潮AI之巅!

岗位详情请戳:

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务