版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录GIT安装配置----------稍微了解一下就行GIT原理简介----------稍微了解一下就行GIT常用命令介绍-------找你需要用的,但是都很管用!GIT安装配置Ubuntu下安装gitsudoapt-getinstallgit-coreopenssh-client再安装一个gitk图形化查看log会更方便,GIT安装后的初始设置:运行init-conf.sh脚本,按照流程会自动设置git-user,git-email,commit-msg,commit信息模板,并且有gerrit相关的设置。手动设置(文本编辑器、颜色显示、比较工具、命令别名)gitconfig--global………
详细资料参考:/section/ch1-5/(初次运行Git前的配置)/section/ch2-7/(自动完成Git命令别名)/zzqhost/article/details/7298405(设置比较工具bcompare3)GIT原理简介GIT是分布式的管理系统(本地库、远程服务器),可在离线状态下工作保存在本地库,之后在合适的时候统一推送远程服务器。每次变更,GIT直接保存文件快照(存储更快速),git只关心文件数据的整体是否发生变化。svn会在工程每级目录下产生一个.svn目录,监控着每个文件的具体变化。所以git只在工程根目录下有一个.git目录记录每次变更操作。每个“文件快照”都对应一个版本节点,是40位的一串数据,例如log中的commit4b9da6552552987aa493b52f8696cd6d3b00373,这个是唯一的,不用担心他会有重复。GIT版本节点实际上是通过对文件的内容或目录的结构计算出一个SHA-1哈希值。所有保存在git数据库中的东西都是用这个值来索引,而不是靠文件名。Git的文件状态GIT有3个存储区:<working>-<Staging>-<repository>Staging,也叫indexfile或Cache,是一种中间过渡状态,用来存储待提交的代码。文件有四个状态:untracked/unmodified/modified/stagedGIT常用命令介绍gitcloneURLgitaddgitrmgitdiffgitstatus
gitcommitgitlog–pfilegitresetgitcheckout
gitrevertgitrevertgitshowfilenamegitcleangitpull--rebasegitstashgitcherry-pickgitblamegitclonegit支持多种数据传输协议,目前库放在gerrit中管理,使用的是ssh传输协议。gitclonessh://4/projectnamegitadd这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。当目录下文件没有做任何修改时,运行gitadd.,会追踪当前目录的一举一动(例如不运行这个命令的时候新建文件,gitstatus不会显示这个文件的状态,运行过这个命令,再新建文件会显示文件状态为Untracked)。修改或新增了文件,gitadd会把这个文件放到暂存区,为commit做准备。当解决了文件冲突后,也需要gitadd一下冲突文件,告诉git冲突已经解决好了,这时git才会退出冲突待解决状态,不退出这个状态你做不了别的事。gitrm要从git中移除某个文件,先从工作目录中删除此文件(此时状态是changedbutnotupdate),然后再运行gitrmfliename(状态变成准备提交changestobecommitted)。如果要删除之前已经修改过并且add到暂存区,则须要用强制删除选项-f(force的首字母),不过也要防止误删除文件后丢失的内容。另一种情况是从暂存区域中移除,但文件仍保留在工作目录中,用--cached选项即可。gitrm\*~会递归删除当前目录及其子目录中所有~结尾的文件。gitstatus、gitdiff查看状态和比较差异
GITSTATUS是一个很常用的命令,可查看即时状态:Untracked还沒有添加版本控制新文件(要commit这个文件还需要先add一下)Changedbutnotupdated有修改但是沒有加入暂存区的文件Changestobecommitted(stagingarea)已经加入暂存区的文件
GITDIFF在提交前,如想了解working、indexfile、本地仓库的文件差异可执行“gitdiff”查看(即自己修改了什么)gitdiff显示working和Staging的差异gitdiff--cached显示Staging和本地仓库的差异gitdiffHEAD显示working和本地仓库的差异gitcommit从暂存区提交到存储区,在此之前,请一定要确认还有什么修改过的或新建的文件还没有add,否则提交的时候不会提交这些没有暂存起来的变化。所以每次准备提交前,先用gitstatus检查一下,然后再运行gitcommit命令。不带任何参数的gitcommit会启动文本编辑器,如果默认的nano编辑器用不惯,可以使用gitconfig
–globalcore.editor命令设定偏好的编辑器软件。不建议使用gitcommit–a,这个命令只适合懒人使用,曾经有个懒人就用这个命令把build生产文件也一起push到服务器,然后被众人鄙视了。后悔药gitcommit--amend上一次提交后没有做任何改动,运行此命令可以重新编辑上次提交的log信息,而不对上次提交的内容做任何改动。启动文本编辑器后,编辑log,保存退出,此时git会使用新的log覆盖到上次提交的log。如果上次提交时忘了add提交。某些内容,可以先gitadd一下,然后再执行gitcommit
--amend起到补充提交的作用。gitloggitlog默认不用任何参数,gitlog会按提交时间列出所有的更新,最近的更新排在最上面。参考下列参数,可以让你快速找到想要的信息。-p按补丁格式显示每个更新之间的差异。--stat显示每次更新的文件修改统计信息。--shortstat只显示--stat中最后的行数修改添加移除统计。--name-only仅在提交信息后显示已修改的文件清单。--name-status显示新增、修改、删除的文件清单。--abbrev-commit仅显示SHA-1的前几个字符,而非所有的40个字符。--relative-date使用较短的相对时间显示(比如,“2weeksago”)。--graph显示ASCII图形表示的分支合并历史。--pretty使用其他格式显示历史提交信息。可用的选项包括oneline,short,full,fuller和format(后跟指定格式)。-(n)仅显示最近的n条提交--since,--after仅显示指定时间之后的提交。--until,--before仅显示指定时间之前的提交。--author仅显示指定作者相关的提交。--committer仅显示指定提交者相关的提交。例如格式化显示log信息的别名设置(在用户目录下的.gitconfig文件设置):[alias]
lg=log--graph--pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset%s%Cgreen(%cr)%Creset'--abbrev-commit--date=relativegitreset将当前分支重设到指定的<commit>或者HEAD(默认是HEAD,即最新的一次提交)gitreset--hard<commit>:重设暂存区和工作目录,把此<commit>之后的任何修改都抛弃,并把HEAD指向此<commit>gitreset--soft<commit>:暂存区和工作目录中的内容不作任何改变,仅把HEAD指向<commit>,执行完之后,从这个<commit>之后的修改都会标记为“changestobecommitted”。日常使用中可以通过灵活使用上面的命令在本地还原修改内容,或者把多个本地提交合并为一个提交:例如同一个bug在本地提交了多次,使用soft选项可以达到汇总为一次提交。gitrevertgitrevert<commit-id>,可以把某次提交的内容还原到修改之前,然后再自动作为一次新的commit提交储存在本地版本库中。对于较早历史的revert通常会有很多冲突,所以不建议使用这个命令。另外revert操作不能自动生成Change-Id,不能提交到gerrit评审。gitcheckout主要有以下两种常用情况。命令:gitcheckoutbranch检出branch分支。将HEAD指向branch分支,以及用branch指向的版本库更新暂存区和工作区。命令:gitcheckout--filename用暂存区中filename文件来覆盖工作区中filename文件。相当于把前次gitaddfilename以来的本地修改取消。gitcheckout<commit_idortag>--file可以把某个路径的文件切换回历史状态。需要注意历史的前后关系。gitstashgitstash:根据当前工程的文件状态,除去untracked状态文件,其他所有修改过的文件会被保存到一个临时的堆栈中,然后依据最近的一次提交内容还原这些被暂存的文件。随时可以重新应用。在使用gitpull--rebase前会经常用到这个命令。gitstashlist:查看现有的储藏。stash@{0}:WIPonmaster:049d078addedtheindexfilestash@{1}:WIPonmaster:c264051...Revert"addedfile_size“stash@{2}:WIPonmaster:21d80a5...addednumbertolog默认储藏的描述是工作目录当前最新commit的信息,gitstashsavemessage可以修改这个描述。gitstashapplystash@{2}:应用储藏的内容,gitstashdropstash@{2}:删除这条储藏内容,git
stashpop:应用最后存储的内容,并把存储记录删除其他的gitstash相关命令可以用mangitstash查看gitshowgitshowfilename查看文件的修改对比记录。gitshow<commit_idortag>:<file>>file_pwd可以将历史记录文件取出到file_pwd路径,<file>是文件的相对路径。如果<file>和file_pwd相同,会覆盖源文件。gitclean从工作区中移除untracked文件gitclean<path>可以移除指定路径的untracked文件gitpull
gitpull--rebasegitfetch这些都是缺省命令gitfetch:从远程获取最新版本到本地库。相当于gitfetchoriginmaster:从远程origin的master主分支下载最新的版本到origin/master分支上,不会自动合并到本地master上。gitpull--rebase:从远程获取最新版本并rebase到本地,进行合并相当于gitfetch和gitrebaseorigin/mastergitpull:从远程获取最新版本并merge到本地相当于gitfetch和gitmergeorigin/mastergitcherry-pick<commit-id>通常是在分支之间做操作,例如在本地分支上修复bug,验证无错,在分支上直接commit。然后切换到master分支上,使用这条命令捡取分支上的commit应用到本地master分支。最后我们只在master分支上执行push操作。如此做的好处是可以保证master分支是干净的,没有编译生成的文件和其他BUG的修改,原则上要求一个commit对应一个BUG修改。缺点是,编译生成的文件非常庞大,切换时需要等待较长时间。后期在gerrit上面也有相关的cherry-pick的操作,可以将某次评审提交的内容合并到本地,用来验证代码修改。Cherry-pick和--rebase同样是一种衍合的行为,不会产生merge节点,在版本树上可以看到是一个递进的状态。gitblamegitblame<filename>可以显示某个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度养殖场节能减排与绿色低碳合作协议书3篇
- 二零二五年度航空航天器加工合作协议2篇
- 2025陶瓷现汇外贸合同书
- 二零二五年度篮球运动员长期保障合同3篇
- 2025年度农村私人鱼塘承包合同附渔业环保责任承诺书
- 二零二五年度汽车维修行业员工薪酬福利合同范本3篇
- 2025年度养殖土地租赁及农业品牌建设合作协议3篇
- 2025年度农机租赁与农业废弃物资源回收利用合作协议3篇
- 2025年度新能源充电桩建设公司成立协议书范本3篇
- 2025年度年度农机租赁与农业科技创新合作协议3篇
- 2024年完整离婚协议书下载-(含多款)
- 广西钦州市浦北县2023-2024学年七年级上学期期末语文试题
- 住院医师述职报告
- 2024年度医院烧伤科接诊统计报告课件
- 社区普通话培训课件
- 动态负载均衡服务器集群
- 江苏省无锡市锡山区2023-2024学年二年级上学期期末数学试卷
- 卫生化学期末考试习题2
- 瓣周漏护理查房
- 历代反腐完整
- 《现代控制理论》(刘豹-唐万生)
评论
0/150
提交评论