Git:问题解决与使用技巧

本文详细介绍Git的基本使用方法,包括如何通过GitBash进行初始化代码库、配置个人信息等基本操作。同时,文章还深入探讨了一个典型项目的Git工作流程,涵盖了从项目创建到开发过程中涉及的各种分支管理和协作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容纯属个人扯淡,仅供参考:

Git教程常用 Git 命令清单Git工作流指南

 

目录

一、GitBash

1、常用命令

1、新建代码库

2、配置

参考资料:

以一个项目时间轴来分析

1、初始版本

1、远程分支

2、项目成员

3、项目克隆

4、项目开发


 

一、GitBash

1、常用命令

1、新建代码库

git init在当前目录新建一个git代码库 
git init [项目名称]在当前目录下新建一个目录(名称=项目名),并将其初始化为git代码库 
git clone [url]下载一个项目和它的整个代码历史 

2、配置

config --list在当前目录新建一个git代码库 
config -e [--global]在当前目录下新建一个目录(名称=项目名),并将其初始化为git代码库 
git clone [url]下载一个项目和它的整个代码历史 

 

参考资料:

廖雪峰-Git教程 :建议先看完这个

Git-Book

以一个项目时间轴来分析

注意:本文的分析都是建立在理想中的规范而已(理想情况下项目组每个成员都十分熟悉Git和相关操作,并对规范熟稔于心),是出于方便管理、防止出错的一种协同建议,并不是非这样做不可。不同公司团队成员的技术栈不同,会根据实际情况调整。例如:

1、合并代码到master分支应由项目经理来操作。但由于他可以不懂Git,实际很可能是交给运维、开发来完成

2、release分支是预发布分支,应在测试阶段时,由测试人员从develop分支上建立,但实际可能由开发代劳

3、master、feature、release等等很多分支,可能项目中只有1-2个人时,就不需要这么麻烦

4、有些公司要求合并代码到Developer,发布测试版规定由测试人员完成。这种情况下会在远程仓库中为每个开发单独建立一个远程分支,他只管向自己分支提交即可,而由测试去合并代码

。。。等等。。。

2、含义

remote:远程、远程仓库
local:本地、本地仓库

1、初始版本

情景再现:公司/团队要开发一个新的项目/产品XxxProject,因此各部门抽取一些人员组建成一个新的项目团队,项目成员除了项目经理、产品经理等,还有开发人员:开A、开B,测试人员:小测,运维人员:大运。立项、需求和设计这两个阶段都完成了后,现在进入开发阶段了

1、远程分支

项目经理在企业GitLab上:建立XxxProject项目仓库并初始化一次提交,默认会有一个master分支;创建develop、release分支;将develop设置为默认分支(原本默认是master)。

此时remote上有1个提交,3个分支。如下:

1、1个提交:对应1个快照,也对应1个对象;

2、xxx是commitId,每个提交会有一个唯一对应commitId值与之对应;

3、分支就像引用,提交/快照就像对象

4、HEAD只指向某个分支,表示当前所在分支。

以Java的角度理解:当前远程仓库里只有1个对象,然后创建了4个引用:master、develop、release引用都指向该对象,而HEAD指向develop分支

2、项目成员

项目经理在GitLab上把相关成员的添加到项目中,并指定为不同的角色(不同角色拥有不同权限。Git 权限控制

Owner一般是Git服务器管理员,一般与项目无关;

Maintainer是项目创建者,在这里就是项目经理。他有权推送代码到+甚至删除protected branches-受保护分支。

Developer是开发者,在这里就是开A、开B,他们有权推送代码到+甚至删除non-protected branches-非受保护分支

3、项目克隆

开A、开B从remote克隆到本地,命令:

git clone (url)

1、这里没有添加任何参数。(有可选的参数:git clone几种可选参数的使用与区别),因此相当于将整个XxxProject仓库及里面的快照对象、分支引用全都复制一份下来到本地仓库中

2、该命令实际完成了:在本地创建一个XxxProject本地仓库local/XxxProject;将local/XxxProject与remote/XxxProject关联起来;由于remote/HEAD是指向remote/develop,因此会在本地创建一个分支local/develop与remote/develop关联起来,并将local/HEAD指向local/develop。此时为了区分remote和local的分支引用,会在所有remote分支名前加上origin以辨别,命令:

##查看所有分支
git branch -a

##结果
* develop
  remotes/origin/HEAD -> origin/develop
  remotes/origin/release
  remotes/origin/develop
  remotes/origin/master

上述结果表达的含义,从上到下依次:本地有local/develop分支,且local/HEAD指向它;远程有release、develop、master共3个分支,且remote/HEAD指向remote/develop。总结git clone所完成的事情

1、建立local/XxxProject仓库,与remote/XxxProject关联起来
2、复制remote/XxxProject上所有的提交对象和分支引用等所有信息,到local/XxxProject中
3、在local建立local/develop分支,将该分支与remote/develop分支关联起来
4、local/HEAD指向local/develop

3、Git是分布式的,意味着每个人本地仓库实际上就是一个相对独立的版本系统。实际工作中大部分的命令都是在本地仓库中完成的。本地不能直接操作orgin/x这些分支

因此:在我们执行git push之前,和remote相关的东西都不会发生任何改变,为了节约篇幅、突显重点,到后面我们要执行git push命令时再画出所有情况,现在开A、开B手上只有:本地仓库、本地分支develop

4、项目开发

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值