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 "注释信息"

目录
相关文章
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
69 3
|
16天前
|
对象存储
一个通过 GitHub Action 将 GitHub 仓库与阿里云 OSS 完全同步的脚本
一种将 GitHub 仓库完全同步到阿里云 OSS 的方法。
|
1月前
|
存储 IDE 开发工具
来咯,他来咯 看GitHub Codespaces 如何帮助缩短开发设置时间
来咯,他来咯 看GitHub Codespaces 如何帮助缩短开发设置时间
21 0
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
91 2
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
122 1
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
105 1
|
3月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
109 1
|
3月前
|
存储 安全 Java
【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私
在一次意外中,作者因三年前将测试代码遗忘在GitHub上而遭遇了代码被他人fork的问题。为解决这一危机,作者详细介绍了如何通过GitHub的DMCA下架通知流程安全删除敏感代码,包括处理私人信息和商标侵权的具体步骤。本文不仅提供了实用的操作指南,还强调了及时响应的重要性,帮助读者避免类似风险
36 0
【事故】记一次意外把公司项目放到GitHub并被fork,如何使用DMCA下架政策保障隐私
|
3月前
|
开发者 存储 API
Xamarin 开发者的社区资源概览:从官方文档到GitHub示例,全面探索提升开发技能与解决问题的多元化渠道与实用工具
【8月更文挑战第31天】Xamarin 开发者社区资源概览旨在提升开发效率与解决问题,涵盖官方文档、社区论坛、GitHub 项目等。官方文档详尽,涵盖 Xamarin.Forms 使用、性能优化等;社区论坛供交流心得;GitHub 提供示例代码。此外,第三方博客、视频教程及 Xamarin University 等资源也丰富多样,适合各阶段开发者学习与提升。通过综合利用这些资源,开发者可不断进步,应对技术挑战。
45 0
|
3月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法