一、创建仓库
如果先有远程库,从远程库克隆 (只会将master克隆下来):git clone 远程库地址
如果在本地建仓库并关联到远程仓库可以参考上一篇:ubuntu中Git的安装与使用、及关联远程仓库GitHub_橙子园的博客-CSDN博客
二、分支管理
作用:假设你准备开发一个新功能,但需要两周才能完成,第一周写了60%,如果提交,由于代码还没写完,不完整的代码库会导致别人不能干活,如果等代码全部写完在一次提交,又会存在丢失每天进度的风险。有了分支,可以避免上述问题,创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而我们在自己的分支上干活,想提交就提交,直到开发完毕后,在一次性合并到原来的分支上,这样,即安全又不影响别人工作。
特点:Git分支是与众不同的,无论创建、切换、和删除分支,Git在非常短的时间内就能完成,无论版本库是1个文件还是1万个文件。
master主分支:在版本回退中,每次提交,Git都把它们串成一条时间线,在git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。每次提交,master分支都会向前移动一步,这样,随着不断提交,master分支的线也越来越长。
常见的管理操作:
创建与合并分支(要切换到仓库目录下):git branch 分支名
切换分支:git checkout 分支名
创建与切换同时进行:git checkout -b 分支名
查看当前分支:git branch (会列出所有分支,当前分支的面会有一个*号)
在分支上修改的内容合并到master分支,首先切换到master分支 :git merge 分支名
删除分支:git branch -d 分支名
删除远程分支:git push origin :分支名
git push origin --delete 分支名
查看分支合并图:git log --graph
(注意):如果想要远程库的其他分支,则需要将首先在本地建立一个同名分支然后把它拉取下来:git pull origin 分支名
第一次推送远程库的同名分支时,会有如下提示:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
warning: push.default 尚未设置,它的默认值在 Git 2.0 已从 'matching'变更为 'simple'。若要不再显示本信息并保持传统习惯,进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
当 push.default 设置为 'matching' 后,git 将推送和远程同名的所有
本地分支。
从 Git 2.0 开始,Git 默认采用更为保守的 'simple' 模式,只推送当前
分支到远程关联的同名分支,即 'git push' 推送当前分支。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1.simple配置时要设置推送当前分支到远程关联的同名分支:git push --set-upstream origin lihong
以后推送直接用git push origin
2.matching配置时将分支推送到远程(在分支中):git push origin
三、分支策略:
master分支应该是非常稳定的,依旧是仅用来发布最新版本,平时不能再上面干活。干活都在dev分支上,也就是说dev分支是不稳定的,到某个时候,比如1.0版本时,再把dev分支合并到master上,在master分支发布1.0版本。你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时往dev分支上合并就行了。
多人协作:
推送分支:git push origin master
git push origin dev
抓取分支:从远程库clone时,默认只能看到master
想在dev分支上开发,就必须创建origin的dev分支到本地
git checkout -b dev origin/dev
工作模式:
1.可以试图使用git push origin branch-name 推送自己的修改
2.如果推送失败,则因为远程分支比你的本地更新需要先用git pull试图合并
3.如果合并有冲突,则解决冲突,并在本地提交
4.如果有冲突或者解决冲突后,再用git push origin branch-name推送就能成功。
5.如果git pull提示“no tracking infromation”,则说明本地分支和远程分支的链接没有创建,用命令git branch --set--upstream branch-name origin/branch-name
四、标签管理:
意义:在发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版,将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来,所以,标签也是版本的一个快照。
打标签:git tag 标签名
查看所有标签:git tag
指定commit id打标签:git tag 标签名 commitID
指定标签信息:git tag -a 标签名 -m "标签信息"
切换到指定标签: git checkout 标签名
查看说明文字:git show 标签名
删除标签: git tag -d 标签名
推送标签到远程:git push origin 标签名
一次性推送全部尚未推送到远程的本地标签: git push origin --tags
删除已经推送到远程的标签:
先本地删除:git tag -d 标签名
再从远程删除:git push origin crefs/tags/标签名
为上一个博客补充一点:
创建忽略目录(一般会隐藏):touch .gitignore 如果要忽略上传的文件,将文件名写在这个文件中。这个被写入的文件不会提交到远程。
将该文件夹下所有文件添加到缓存区中:git add .
将缓存区中所有文件提交到版本库:git commit . -m "注释信息"