github项目的开发创建仓库、分支管理、分支策略、标签管理

简介: 作用:假设你准备开发一个新功能,但需要两周才能完成,第一周写了60%,如果提交,由于代码还没写完,不完整的代码库会导致别人不能干活,如果等代码全部写完在一次提交,又会存在丢失每天进度的风险。有了分支,可以避免上述问题,创建一个属于自己的分支,别人看不到,还继续在原来的分支上正常工作,而我们在自己的分支上干活,想提交就提交,直到开发完毕后,在一次性合并到原来的分支上,这样,即安全又不影响别人工作。


一、创建仓库
         如果先有远程库,从远程库克隆 (只会将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 "注释信息"

目录
相关文章
|
3天前
|
前端开发
Github项目分享——免费的画图工具drow,最新前端面试题整理
Github项目分享——免费的画图工具drow,最新前端面试题整理
|
3天前
|
SQL Oracle 前端开发
Oracle效率分析,Github标星25K+超火的前端实战项目
Oracle效率分析,Github标星25K+超火的前端实战项目
|
5天前
|
开发工具 git
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
14 5
|
5天前
|
安全 网络安全 开发工具
【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件
【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件
9 2
|
5天前
|
开发工具 git
Git项目如何配置,如何上传至GitHub。其详细步骤
Git项目如何配置,如何上传至GitHub。其详细步骤
11 0
|
5天前
github设置仓库可见性 私人仓库设置
github设置仓库可见性 私人仓库设置
|
5天前
|
弹性计算 运维 Shell
自动化GitHub仓库活跃度分析
【4月更文挑战第30天】
8 0
|
5天前
|
存储 开发工具 git
|
5天前
|
Shell 开发工具 git
如何在GitHub上传项目
如何在GitHub上传项目
19 1
|
5天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
35 0