git学习小结

来源:互联网 发布:工作两年程序员 编辑:程序博客网 时间:2024/06/05 19:39
############################################################ 该文本文件用来记录"分布式版本控制系统Git"的基本使用方法############################################################ 1.创建版本库(repository)-----------------------------------------------------------# 在安装git工具完成后需设置用户名和邮箱,--global参数将本机所有仓库都# 设置为该配置。git config --global user.name "Your Name"#设置用户名git config --global user.email "email"#设置邮箱git init#将当前目录(一般为空目录)初始化为一个版本库,初始化#完成后在目录中会生成一个隐藏的子目录(.git)git add <filename>#将文件修改添加到暂存区(stage)#将暂存区所有内容提交到当前分支git commit -m "describe the info about this commit."-----------------------------------------------------------# 2.版本库基本操作-----------------------------------------------------------git status#查看版本库的当前状态git diff <filename>#查看工作空间中的文件与已经提交版本的不同git log#查看所有提交的版本的日志信息git log --pretty=oneline#在一行中显示#在查看提交版本的日志信息时,每个#版本都有一个版本号(commit id)#该版本号用一个很长的十六进制数表#示,这是分布式版本系统为了防止冲#突产生。git reset --hard HEAD^#版本回退到上一个版本#HEAD表示当前版本,加一个^表示上#一个版本,加n个表示回退到前n个版#本,但是当^符号太多时,有个简便#写法:HEAD~n。git reset --hard <commit id>#注意:当版本回退后如果想返回,无#法通过该方式,只能通过commit id#来回到原来的版本(commit id可不#写全,能辨别即可)。#原理:版本回退速度很快,实际上是#通过一个指向所有已提交版本(类似#链表)的指针来实现的,而回退仅仅#将指针指向要回退的版本,然后将该#指向的版本重新加载到工作空间。git reflog#重返未来版本时,需要查看commit id#该命令行用来查看版本回退的记录# 工作区和暂存区概念# 工作区就是用git管理的文件夹,位于工作区的隐藏目录.git不是工作区部分,# 而是git的版本库;版本库里存了很多东西,最重要的有stage(暂存区),还有# git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。git checkout -- <filename> #丢弃工作区的内容#两种情况:一种是修改后还没被放到#暂存区,这时撤销修改就回到了版本#库的状态;另一种是修改添加到暂存#区中后,又做了修改,这时撤销就回#到了暂存区的状态。git reset HEAD <filename>#撤销暂存区的修改git rm <filename>#删除指定文件,并将该修改提交到#暂存区中。-----------------------------------------------------------# 3.远程仓库-----------------------------------------------------------a.创建SSH Keyssh-keygen -t rsa -C "yijun_tang@qq.com"# 一路回车,使用默认值即可,可不设置密码;# 设置完成后,在家目录下可见.ssh目录,里面有id_rsa和id_rsa.pub# 两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露# id_rsa.pub是公钥,可以放心告诉别人。b.添加Key到github账号中Account settings->SSH Keys->Add SSH Key->设置title->粘贴生成的公钥id_rsa.pubc.添加远程库根据提示有多种添加库的方法(创建库并与本地库建立关联)生成后若在本地提交后,就可以通过命令:git push origin master#origin是远程库的名字d.克隆仓库当从零开始开发一个项目时,最好是先创建远程库,然后从远程库克隆。https:git clone https://github.com/YijunTang/gitskills.gitssh:git clone git@github.com:YijunTang/gitskills.git-----------------------------------------------------------# 4.分支管理-----------------------------------------------------------# 为什么需要分支管理?# 因为在多人协作开发一个大型项目时,一部分功能可能会影响到另一部分的使用# 这样开辟一个分支来进行该功能的开发,就不会影响到其他部分的开发,直到开# 发完毕后一次性提交合并到原来分支即可。# git将所有的提交都串成一条时间线,一条时间线就是一个分支,之前只有一个# 分支,即master分支;HEAD严格来说是指向master的,master指向提交。# a.创建分支git checkout -b dev#创建并切换到分支dev等价于:git branch devgit checkout devgit branch#可用来查看当前分支# b.合并分支git merge <branch>#合并指定分支到当前分支# c.删除分支git branch -d <branch># e.查看分支合并情况git log --graph# f.分支管理策略(涉及多人合作开发时)# 通常,合并分支时,如果可能,git会用Fast_forward模式,# 但这种模式下,在删除分之后,会丢掉分支信息。强制禁用Fast_forward模式,# 这样git就会在合并时生成一个新的commit,这样从分支历史# 就可以看到分支信息。git merge --no-ff -m "merge with no-ff" <branch># 注意:在实际开发中,我们应该按照几个基本原则进行分支管理# 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,# 因为为了保证用户正常使用;在分支dev上干活,到一定时候,# 比如1.0版本发布时,再把dev分支合并到master分支上;你# 和你的小伙伴每个人都在dev上干活,每个人都有自己的分支,时# 不时向dev分支上合并就可以了。# 本地库与远程库之间那些分支需要同步:# 1.master分支是主分支,因此要时刻与远程库同步;# 2.dev分支是开发分支,团队成员需要在上面工作,也需要同步;# 3.bug分支只用于在本地修复bug,可不同步;# 4.feature分支是否同步,视情况而定。# 分支的应用--bug分支# 当需要紧急处理项目中的一个bug时,当然想到将修复的内容放入一个分支中# 进行,处理完毕后合并,最后删除bug分支;但是当前工作还没完成,git中# 提供了一个stash功能,可以保护工作现场,等修复bug后在恢复。# 保护现场:git stash# 查看保护:git stash list# 恢复现场:git stash pop#恢复现场的同时并删除或者git stash apply#恢复现场git stash drop#删除# 分支应用--feature分支# 当添加新功能时,最好放在一个分支中进行;如果要丢弃一份没有合并过的# 分支,可以通过:git branch -D <branch>#强制删除# 抓取分支# 当克隆一个远程库后,默认只能看到master分支,要在其他分支上工作,# 就必须抓取分支:git checkout -b <branch> origin/<branch># 当你的小伙伴和你对某个分支修改后同时进行push时,可能会产生冲突,# 这时后push的一方应该先将该分支抓取下来,手动解决冲突,再push。# 指定本地分支与远程分支的链接git branch --set-upstream <branch> origin/<branch>git pullgit push origin <branch># 查看远程库信息:git remote -v-----------------------------------------------------------# 5.标签管理-----------------------------------------------------------# 标签和分支类似,都是一个指向commit的指针,但是不同的是,标签不能修改。# 标签是为了方便管理,和书签类似,所以标签(tag)就是一个容易记住的名字,# 它跟某个commit绑在一起。# 创建标签taggit tag <tagname>#在最新commit上打taggit tag <tagname> <commit id>#在制定commit上打taggit tag -a <tagname> -m "message" <commit id>#创建带说明的taggit tag#查看所有标签git show <tagname>#查看tag详细信息# 标签操作git push origin <tagname>#推送标签到远程库git push origin --tags#一次性推送所有未推送的标签git tag -d <tagname>#删除一个本地标签git push origin :refs/tags/<tagname> #删除一个远程库标签-----------------------------------------------------------


参考教程:git教程

原创粉丝点击