git 版本控制器:git介绍安装、git 常用命令、git 过滤文件、git 分支操作

一、 git介绍安装

0 git,github,gitee,gitlab
	-git:版本管理软件
    -github:网站,全球开源代码,放在上面,我们可以看到,并下载--》本质是一个git的远程仓库
    -gitee:中国版的github,公有,私有(中小型公司的代码放在私有仓库中)
    -gitlab:公司内部的(公司内部的github)
    
1 git:软件,实现 版本控制:协同开发(多人合作开发),合并代码

2 下载:https://git-scm.com/download/win
	一路下一步
	
3 装完后,任意位置,鼠标右键,多出
	git gui here:图形化界面
    git bash here:命令行
    
4 git和svn
	-git的版本管理不需要服务端(远程仓库)
    -svn要进行版本管理,必须有服务端

git的工作流程

在这里插入图片描述

版本库间的通信

在这里插入图片描述

git分支管理

在这里插入图片描述

二、 git 常用命令

1 工作区
2 暂存区
3 版本库


命令:
    git init   # 初始化仓库,在当前路径下生成一个.git文件夹,隐藏的
    git add .   # 把工作区的更该(.表示当前路径下所有更改,都提交),提交到暂存区
    git status  # 查看文件状态(绿色表示,在暂存区,不在版本库,红色表示工作区更改了,没有提交到暂存区)
    git status -s # 查看仓库状态的简约显示
    git reset . # 把提交到暂存区的,拉回到工作区(以后基本不用)
    
    git commit -m '注释'   # 把暂存区的所有内容,提交到版本库
    
    # 在提交到版本库之前,要先配置用户信息 (--global:表示全局,在用户家路径.gitconfig)
    git config --global user.email "用户邮箱"
  	git config --global user.name "用户名"
  	注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
    
    # 局部的用户信息,是在仓库的.git文件夹下的config中
    git config user.email "33@qq.com"
  	git config user.name "egon"
  	注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
    
    
    git log   # 查看版本提交的日志(谁提交的,提交时间,提交的版本号)
	git reflog # 查看版本提交的日志
    
    git reset --hard 74c071f922  #工作区的内容回退到 74c071f922 版本

'''
空文件夹,不会被git管理,python中的包会:包有 __init__.py
'''    

三、 git 过滤文件

在仓库目录下新建.gitignore  文件,在文件中写入要忽略的文件,文件夹,模糊匹配
## 注意:
'''
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

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


pycharm软件
	-绿色:在暂存区,没有提交到版本库
	-红色:在工作区新增,没有提交到暂存区
	-蓝色:在工作区修改的,没有提交到暂存区
	-黄色:忽略的
	-白色:已经被git管理的

四、 git 分支操作

#创建分支
git branch 分支名

#查看分支
git branch

#切换分支
git checkout 分支名

#创建并切换到新分支
git checkout -b 分支名   

#删除分支
git branch -d 分支名

#查看远程分支
git branch -a

#合并分支
git merge 分支名 #把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令

# 分支合并可能会出冲突

五、 远程git开发

1)你作为项目仓库初始化人员:
	线上要创建空仓库 => 本地初始化好仓库 => 建立remote链接(remote add) => 提交本地仓库到远程(push)
	
2)你作为项目后期开发人员:
	远程项目仓库已经创建成功 => 复制远程仓库到本地(clone) => 进入仓库就可以进行接下来的开发

创建空仓库
在这里插入图片描述

1 在 gitee上新建空仓库
2 luffy_api中
	-git init
    -git add .
    -git commit -m '第一次提交'
    
    # git remote add 名字 远程仓库地址
    -git remote add origin https://gitee.com/liuqingzheng/luffy_api.git  # 增加一个远程仓库
	# git push 远程仓库名字 分支名字
    -git push origin master   # 把本地版本库内容,提交到远程仓库,需要输入giee的用户名密码
    
    
3 远程仓库操作
	-增加
    	-git remote add 名字 远程仓库地址
    -查看
    	-git remote
    -删除
    	-git remote remove 源名
    	-git remote remove origin
    -提交到远程仓库
    	-git push 源码 分支名
    	-git push origin master
    -克隆远程源
   		-git clone 远程源地址

"""
1)通过克隆方式连接远程源,默认远程源名就叫origin;所以主动添加远程源来连接远程仓库,源码也用origin
2)本地一个仓库只需要和远程一个源进行同步,所以只需要连接一个远程源,如果还想把本地代码同步给第三个平台,那么可以通过主动添加远程源来连接第三个平台的远程仓库,此时的源码就不能再叫origin了,比如online都可以
3)pull和push都可以提供选择不同的源码,和不同的远程仓库交互
"""

六、 采用ssh协议连接远程

1 https方式:使用用户名+密码认证方式
2 ssh方式:公钥私钥方式
     
	 -本地生成公钥私钥
         -cmd窗口中,生成公钥:ssh-keygen -t rsa -C "306334678@qq.com"
         -cmd窗口中,查看公钥:cat ~/.ssh/id_rsa.pub
        -生成到用户家路径的 .ssh文件夹下
        -id_rsa      # 私钥
        -id_rsa.pub  # 公钥
        
     -把公钥配置到gitee上:https://gitee.com/profile/sshkeys
    
     -码云线上添加公钥:项目仓库 => 管理 => 部署公钥管理 => 添加公钥 => 添加个人公钥

     
     -以后再提交代码就不需要输入用户名密码了
        -重新配置远程仓库
        git remote add origin git@gitee.com:liuqingzheng/luffy_api.git
        git push origin master  # 选yes

在这里插入图片描述

七、 项目创始者和项目开发者

1 如果我是项目开发者,需要把代码clone到本地
	-git clone https://gitee.com/liuqingzheng/luffy_api.git
     -修改代码
    -提交到远程
    	git push origin master
	
2 如果我是项目创始者,需要远程新建仓库,本地代码push上去

八、 协同开发

1 管理员,开发者
	-能提交代码(能增删查改代码)
2 有一个开发者提交了代码

3 另一个开发者,在提交之前,必须先拉取代码(让自己本地保持最新)
	git pull origin master
    可能会出冲突,解决冲突,再提交
'''
保证自己本地有dev分支,且与远程仓库版本同步(没有就自己新建)

本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互

交互顺序:必须 先拉(pull)后提(push) 

必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互
>: git checkout dev
>: git add .
>: git commit -m '本次提交的信息提示'
>: git pull origin dev
>: git push origin dev   
'''    
    
4 冲突解决(多人在同一个分支开发,导致冲突)
"""
<<<<<<< HEAD  # 冲突的开始
# 自己的代码
=======  # 分割线
# 别人的代码
>>>>>>> b63c408abd05b87fc492d40523240561999dba50  # 冲突的结束(版本)
"""
# 冲突解决:
	-改同样的功能出现的冲突,看一下谁的代码更好,保留好代码,删除不好代码
    -改的不是同样的功能出现了冲突,留着两个人的
    
# 避免冲突
	-没事就拉一下代码

九、 线上分支合并

1 本地和远端分支
	-本地建立分支,同步到远端
    	-git branch dev
        -git push origin dev
    -远端建立分支,同步到本地
    	-远端建立分支
        -git pull origin dev
        -git branch   # 看不到
        -git checkout dev  #切到dev分支,本地就能看到了
        
        
        
2 提一个pr:pull request,分支合并的请求
3 领导点审核通过,测试通过:合并分支,扁平化合并
	-git 变基(git rebase)
    
4 远端:dev分支代码和master分支代码完全一致

在这里插入图片描述

十、 本地分支合并推送到远程

1 由于dev分支和master分支合并时,有冲突,就不能自动合并了,我们需要本地合并完,解决冲突,再提交
2 把dev合并到master
	-git checkout master
    -git merge dev
    -有冲突,解决冲突
    -再提交
    
    
3 本地的分支提交到远端分支(如果名字不一样)
	git push origin dev111:dev222  #尽量不要做

十一、 pycharm操作git

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

十二、 企业git使用流程

1 领导给你一个git地址,git clone下来,pycharm打开,本地把代码运行起来
2 你改bug,提交,提交不上去
	-需要有一个gitlab账号(你去注册一个,别人帮你注册好了)
    -公司会把你的账号,添加到项目的开发者
    -ssh操作:本地生成公钥私钥,自己配置在gitlab上
    -把你的公钥给管这个东西的人(一般不做)
3 使用pycharm操作,提交即可
	-勤拉代码

    
面试题:
	-1 git操作出没出冲突,如何解决
    	-第一:多人在同一分支开发
        -第二:分支合并出冲突
        
    -2 git 变基
    -3 git fetch 和 git pull的区别
    	 git pull:拉代码+合并
	     git fetch:拉代码,需要手动合进去

    -4 git add . # 不建议使用
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值