Git分支管理与常用命令

 一、分支管理

Git在创建分支仅是生成了一个指针又称快照(有的工具则进行了物理拷贝),这样在使用起来就非常的方便。方便的同时问题随之而来,如果不加管理,那么就会到处开枝散叶,完全看不出主干。因此,分支管理的需求应运而生。

二、如何管理

主分支包括:

master:上生产环境验证后合并到的分支

Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。

prd:生产环境分支,提供给用户的正式版本

uat(User Acceptance Test)​​:客户体验环境分支

test:测试环境分支

dev:开发环境分支

开发主分支:从master创建的开发分支,命名规则:feat-版本号-日期

举例:git checkout -b feat-M.1.0.0-20210911-ljj master

开发分支:从开发主分支创建的分支,命名规则:feat-版本号-日期-姓名拼音

举例:git checkout -b feat-M.1.0.0-20210911-ljj feat-M.1.0.0-20210911

注:开发新任务:feat、修改bug:hotfix

伴随着开发的进度,从开发分支依次向上合并,直到master分支,删除开发分支与开发主分支。

两个任务同时到uat、不同时间发版,这样处理,类似解决bug一样。

三、如何解决开发分支与主干分支的冲突:

1、举例开发分支与dev主干分支发生的冲突。

2、首先再dev分支的基础上创建一个临时解决冲突的分支,我们命名为:dev-mid-20210911。

3、在编译器把开发分支合并到临时mid分支,这是冲突的文件与内容在编译器就可以看到了,找到冲突的代码,检查,不能准确处理的,需要与当事人当面一起处理。

4、解决冲突后把dev-mid分支合并到dev分支,这样就处理完成了。

四、常用命令

1、新建代码库:git init

2、克隆项目:git clone

3、查看本地分支:git branch

4、创建tag:git tag [name]

5、添加子模块:git submodule add [url] [path]

6、更新本地代码:git pull

7、将当前更改加入到索引:git add

8、提交当前工作空间的修改内容:git commit

9、将commit的代码提交的远程仓库:git push

10、回退到上个版本:git reset --hard HEAD^

11、回退到前3次提交之前:git reset --hard HEAD~3

12、 git push origin HEAD --force

13、合并代码:git merge

14、取消合并过程:git merge --abort、git reset --merge

15.1、将当前分支修改暂存:git stash

15.2、查看暂存信息:git stash list

15.3、恢复最近一次修改:git stash apply

15.4、恢复索引:git stash apply stash@{2}

举例这些,用到哪些查一下就ok。

五、四个工作区域

1、Workspace: 工作区,就是你平时存放项目代码的地方

2、Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

3、Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

4、Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

六、文件的四种状态:

1、Untracked:   未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

2、Unmodify:   文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified.如果使用git rm移出版本库, 则成为Untracked文件

3、Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git heckout即从库中取出文件, 覆盖当前修改

4、Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified

七、github常见的几个button:

github网站中,搜索到一个项目之后,经常会看到的几个按钮。
1、Watch,按钮中有三个选项:
2、Not watching (默认选中):当参与或者被提及到的时候,通知。
3、Watching:所有的更改会话都通知。
4、Ignoring:忽略所有的会话。
5、Star:表示赞,给它一个星星奖励。
6、Fork: 克隆别人的代码库到自己的github项目中,可以作为子模块的形式使用,或二次开发 。
7、Pull requests (PR): Fork之后,如果希望将自己的修改贡献到原始代码中,可以使用pull requests推送请求到原来仓库中,然后,原始代码的作者,根据你提交的内容,考虑是否真的放入源码中。

它的过程是这样的:比如你在GitHub上看到一个很牛X的项目,你fork到自己仓库后,再改动一些代码,然后可以向提交一个pull request。当管理员觉得你的提交太哇噻了,就会点击合并,然后你就给这个项目贡献了代码了。

八、参考文献:

git 学习笔记 —— 保留/丢弃当前分支修改并切换至其他分支 - yhjoker - 博客园

九、欢迎交流指正。

Guess you like

Origin blog.csdn.net/snowball_li/article/details/120201926