git日常用法
1、常用命令
gitpull远程主机名远程分支名:本地分支名
gitpush远程主机名本地分支名:远程分支名,和gitpull都是src:dest
gitfetch远程主机名分支名其实就是拉去远程分支到本地版本库,然后再使用gitmerge
gitmerge合并分支,将合并到当前所在的分支,比如gitmergemaster,将本地master与自己的分支合并,比如gitmergeoriginbranch,就是将远程的originbranch与本地的分支合并,比如不自动commit,可以gitmergenocommit。其实gitmerge可以一次合并多个分支,比如gitmergeorigin其实就是管你远程和本地了全部合到我的分支上。
gitdiff在两个分支之间比较
gitdiffcached比较gitadd。与工作区之间的比较,也就是本地暂存区与工作区之间的比较
gitdiff工作区vs暂存区gitdiffhead工作区vs版本库gitdiffcached暂存区vs版本库
gitresetmixed将暂存区的分支直接回到到工作区,也就是比如gitadd。你想回退到本地,直接gitresrtmixed
gitresetmixedHEAD1回退一个版本,比如你本地commit远程已经push了,那么你本地和远程是一样的,如果你想回退一个版本,此时需要reset操作,主要是解决回退的操作,上面就是commit一次后需要回退一个版本,所以是HEAD1,比如commit了两次就是HEAD2,此时有4种选项,一般分为hard和mixed,soft,hard硬reset,回退回来你的这次修改全部没有了,也就是直接回到了上一个版本,而mixed回退到你没有gitadd。操作的时候,soft是回退到你gitadd。操作完后的时候。看需求吧。一般只用hard和mixed。
gitcommitamend主要是处理你gitcommitm想要修改commit的desccomment了。
gitrmrcached。比如修改了gitignore,但是其实你的版本库暂存区是没有ignore的,所以需要直接删除暂存区的缓存。
gitrmfile也就是删除本地开发的一个文件,硬删除,直接删没了,回退也需要硬回退。
gitcheckout。清空本地所有修改的代码
gitcheckoutb将本地的这个分支,checkout出一个新的分支,名字为gitcheckoutborigin,将远程的分支上checkout一个新的本地分支名字为
有些场景可能需要打tag,所以一般是gitpull,拉去远程的所有代码(记得切换到master上),然后gittag查看tag历史,创建一个新的tag,比如gittagv1。1。0,然后直接推送到远程gitpushoriginv1。1。0就好了(一般是别人给你合master了,上线可能需要打新的tag)
文件权限发生变更需要配置:gitdiffoldmode100644newmode100755的问题:需要设置gitconfigaddcore。filemodefalse
gitlogpREADME。md查看文件的变更详细历史,gitlog查看文件的变更历史,另外有可能查看某一行的变更,这个是指你没有ide的情况下,所以需要指定ebikegit:(master)catncmdmain。go1packagemain23import(。。。。。。。。18)1920funcmain(){。。。。。。24启动RocketMQ25rq。RocketmqInit()。。。。。。53r。Run(fmt。Sprintf(:s,host))54}55。。。。。。。。。。。。。83}
然后ebikeopheliosgit:(master)gitlogL25:cmdmain。go
gitshortlogsn查看提交者
gitsubmodeladdremoteaddrlocaldir子模块将远程项目https:github。commaonxvimwikiassets。git克隆到本地assets文件夹。gitsubmoduleaddhttps:github。commaonxvimwikiassets。gitassets2、子模块
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。也许是第三方库,或者你独立开发的,用于多个父项目的库。现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。
文档:Git工具子模块
1、在父项目新建子模块gitsubmoduleaddhttps:github。comchaconincDbConnector。submoduleDbConnector
2、提交子模块如果在父项目(父项目无任何变更)中提交子模块,会出现:testdirgit:(master)gitpushmasterOnbranchmasterYourbranchisuptodatewithoriginmaster。Changesnotstagedforcommit:modified:submodule01(modifiedcontent)nochangesaddedtocommitEverythinguptodate父项目更更提交(可以提交变更,但是子项目并没有提交)testdirgit:(master)gitpushmaster〔masterf00fa83〕fanhaodong提交与2021030815:54:091filechanged,1insertion()。。。。。。Togitee。com:AnthonyDongparentreport。git53487e2。。f00fa83mastermaster提交子项目(需要切换到子项目目录,然后切换到父项目提交)submodule01git:(master)gitpushmaster〔master969f9ea〕fanhaodong提交与2021030815:52:08。。。。Togitee。com:AnthonyDongsubmodule01。git6ac8e7d。。969f9eamastermastertestdirgit:(master)gitpushmaster〔master53487e2〕fanhaodong提交与2021030815:52:121filechanged,1insertion(),1deletion()。。。。Togitee。com:AnthonyDongparentreport。git14e259d。。53487e2mastermaste
问题就是,提交流程过于复杂!!参考ProGit,最好的Git指南AdvancedGitGitandGitHubSecretsGIT子模块