Git相关、Gitee多人协同开发

Git相关

1.介绍

​ 是一个具有版本控制的软件,控制开发的项目代码,具有集群化、多分支的功能

2.对于程序员的作用

  • 协同开发
  • 解决代码合并过程中冲突
  • 代码版本管理

3.git 与 svn 比较

​ svn :集成式管理

​ git: 分布式管理

4.安装

1.直接去官网下载
https://git-scm.com/
根据自己系统选择
2.下载完成后,运行安装软件,一路默认下去,完成安装(安装路径自己看着来)
3.cmd进去输入git version 看一下确实安装好了没

5.工作原理

三个工作区

	工作区  存放文件的地方
    暂存区	 工作区的变更,提交到暂存区
    版本库  把暂存区的内容提交到版本库进行管理
    
    
在工作区中对文件进行增删改查后,会被git监控到,需要我们提交文件到暂存区
    

git config --global user.name "your username"

6.使用

1.配置作者名邮箱
1.在桌面空白处右键点击:Git Bash Here,打开git操作页面
2.git config --global user.name "your username"
3.git config --global user.email "your email address"
4.查询是否设置成功
	 git config --list --global
2.常用命令
1.开始管理一个文件夹
在文件夹内空白处键点击:Git Bash Here,打开git操作页面,
输入git init 即可
当然也可以 git init 文件夹名 就会创一个文件夹并且进去管理

2.查看文件变化,可以看工作区和暂存区
仓库下敲
git status
看到有三种颜色
    	-红色:工作区变化了,但是没有提交到暂存区
        -绿色:已经提交到暂存区,没有提交到版本库
        -没有额外颜色:所有东西都在版本库中了[所有文件都被git管理起来了]

3.把工作区的变更提交到暂存区
git add 文件夹
git add . # 所有的

4.把暂存区提交到版本库
git commit -m '注释!'  # 注释一定要写哦!解释自己这一步干了啥

5.查看版本库
git log 
git reflog  # 这个更精简一些,唯一码显示前7位

3.版本相关命令
1.工作区拉回未变动区(红变无色)
	-增加的内容,删除
	git checkout .
    git  checkout 文件名
2.暂存区拉回工作区(绿变红)
	git reset HEAD
3.从版本仓库还原
只要版本库里有,都可以还原
git reset --hard 版本号

一句话:
	只要版本库里存了,就能还原,相当于游戏存档,在该存档点,你是什么状态,身上有啥,或者身上没啥,都是一个切实的状态,就可以随时跳到这个状态上

4.其他的一些命令
 查看时间点之前|之后的日志:
        >: git log --after 2018-6-1
        >: git log --before 2018-6-1
        >: git reflog --after 2018-6-1
        >: git reflog --before 2018-6-1
    查看指定开发者日志
        >: git log --author author_name
        >: git reflog --author author_name
    回滚到指定版本:
        回滚到上一个版本:
            >: git reset --hard HEAD^
            >: git reset --hard HEAD~
5.忽略文件

​ 项目中,有些文件,或文件夹不想被git管理

步骤
	-1 在仓库目录下  .git 所在目录下   新建  .gitignore
    -2 在里面写忽略文件
    	mode_models
        .idea
        *.pyc
        *.log
    -3 写的就会被忽略
 
    -4 已经被管理过的不会被忽略!!!
    
# 忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
# 可以指定例外
6.git分支

​ 为啥要有分支?

​ 因为一般开发是分段式敏捷开发,我们开发完一个功能后代码测试通过后想让甲方看到,就会上传到代码仓库,甲方就可以拉下来看,但是我们不会根据主分支继续开发,万一途中出问题那相当于整个项目都跑不起来,不好,于是就有了分支开发,基于主干而衍生出的支干。

​ 我们都在开发分支开发,如果又完成了一个功能,就合并到主分支

分支操作
	-查看分支:
    	git branch  # * 和绿色表示你当前所在的分支,查看本地分支
	-创建
    	-git branch dev
    -切换分支
    	 - git checkout dev
    -删除分支
    	-git branch -d dev  # 在其他分支上才能删它
        
    -合并分支:
    -把dev合并进master
        -先来到master分支:git branch checkout master
        -执行合并命令:git merge dev   # 把dev合并到我(master)身上
        # 分支合并可能会出冲突
    
我们来举个例吧,演示下
1.先进入master主分支
2.然后给1.txt第一行新增点内容
3.进行add commit 提交,生成一个版本
4.切到dev分支
5.然后发现1.txt没有了我们前面新增的内容
6.我们继续给1.txt第一行新增点内容
7.再次进行add commit 提交,生成一个版本
8.切回master主分支
9.进行分支合并,把dev合并到master来
10.窗口提示冲突,要我们去解决
11.打开1.txt,发现有如下文字

<<<<<<< HEAD
我在master中给2.txt增加了内容
=======
我在dev中再次给2.txt增加了一句话
>>>>>>> dev

7.远程仓库

​ 一般国内都是用gitee ,公司多用gitlab

gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715
Gitee远程仓库使用
1.去Gitee上创建一个空仓库,有的模板能点,不过一般建议空仓库
2.一般不用根据gitee的推荐来创建一个被管理的文件夹,我们自己准备
3.配置一个远程仓库目标,地址就是我们gitee仓库的
git remote add 远程仓库目标名字 远程仓库地址
git remote 查看现有的远程仓库目标名
4.把现有的分支版本上传到远程仓库目标去
git push 远程仓库目标名 分支名
5.输入下gitee用户名密码即可
使用ssh方式链接——公司常用
1.参考gitee指导文档https://gitee.com/help/articles/4181#article-header0
2.去cmd或者git的命令页面输入
ssh-keygen -t ed25519 -C "你自己的邮箱" 
3.一路回车
4.去C盘用户/.ssh文件夹找到公钥私钥
5.后缀是.pub的是公钥,要上传给gitee
6.在gitee上传了自己的公钥后,复制一下远程仓库的ssh地址
7.去git命令下删除老的remote 新建一个,远程仓库地址绑定就不再是http的而是ssh的
8.第一次用私钥要打一个yes,后续就不用了

多人协同开发

​ 目前Gitee对于多人协同开发,免费版本支持最高3个人协同

​ [仓库管理员]创建了仓库能添加其他协同人员,把张三李四设置为该仓库的开发者,设置完成后,在张三李四的仓库中就能看到这个项目了

1.拉取代码流程

1.从远程仓库克隆下来
git clone ssh地址
2.使用pycharm打开,配置好解释器,安装依赖
3.开发代码,开发完又推上远程仓库

2.协同开发冲突

1.多人在同一分支开发

​ 如果有人先改了代码然后提交了,后面的人再想推上远程仓库,就有可能报错

​ 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交

​ 删除别人代码要和别人说一下

​ 如果别人写的快提交的快,我们就勤pull拉代码,尽量减少间隔版本,缩小出现冲突的概率

报错样式:
会显示在文件中

<<<<<<< HEAD   我的代码
print('123')
=======   别人的代码
print('222')
>>>>>>> 版本号
2.分支合并出现冲突
比如说张三是被管理员添加的开发者
他拉了v1版本的dev分支代码下来,自己捣鼓
然后他捣鼓期间,管理员动了两个版本并推上了远程仓库,也就是现在远程仓库是v3版本
这时候因为张三想推代码上去,但是他自己版本还是v1,他是推不上去的,必须git pull 远程仓库目标名 master 拉到最新版本,才能推。
这个拉是合并,不是覆盖,如果管理动的期间删除了啥东西,当张三拉V3版本时,他的项目中的这个文件也会被删除,一般实际工作期间会有交流,不会不明不白的删除东西
举例在前面git小节第六点已经试过了

3.线上分支合并

本地同步远程dev分支

​ 先去gitee仓库,创建一个分支出来

​ 这时候我们可以给线下的拉一下分支过来(不能先有dev,先保持单一个Master分支)

1.git pull 远程仓库目标 分支名
不过注意,拉下来了但是git branch看不到,要先切过去
2.git checkout 分支名 
3.再次查看git branch就有了
远程仓库合并

​ 仓库管理员(一般是上级领导)点击这个

​ 提交Pr / rr (gitlab叫这个)

-master中没有代码,dev中有提交的,现在要线上分支合并
-把远程的dev合并进远程的master
- 提交pr 提交rr
-在网站上,申请提交pull request
-领导审核,测试,通过后,点击合并
-线上dev就合并进线上的master了

4.远程仓库回滚

不是小职员级别能去干的,不要搞
# 想远程的代码,是最初的状态

# 步骤:
	1 本地版本回退
     git reset --hard 版本号
        
    2 强行推到远端
    git push origin master -f
posted @   yiwufish  阅读(431)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示