GIT 基本使用

GIT 版本控制系统


1 git介绍

1.1 代码管理软件

Git是一种版本控制系统,可用于跟踪和管理代码的更改,以及与其他人协作。

1.2 git作用

帮助开发者合并开发的代码,协同开发

② 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突

③ 代码版本管理

1.3 git与svn比较

git与svn都是常见的版本控制系统

  • SVN:集中式管理

  • Git:分布式管理、协同开发、版本管理

image-20230302151813836

image-20230302151813836

2 git远程仓库

2.1 下载git

git官网:https://git-scm.com/

1.下载对应版本:
https://git-scm.com/download

2.安装git:在选取安装路径的下一步选取 
Use a TrueType font in all console windows 选项

2.2 git,gitee,github,gitlab

① git是版本管理软件,装在操作系统上,有很多命令

② gitee远程仓库:国内最大的开源远程仓库

开源代码,私有代码,可以看到有哪些开源代码,通过网站做一些配置

③ github远程仓库:国际上最大的开源仓库

④ gitlab:公司自己搭建的内部的远程仓库

3 git的使用流程

3.1 git工作流程

三个区

① 工作区:存放文件的地方,开发程序代码的地方

② 暂存区:工作区的更改,暂时提交到缓存区(内存中临时存储)

③ 版本区:本地开发的代码

image-20230222184116353

3.2 git常用命令

(1) 初始化仓库

文件夹作为仓库,被git管理

git init # 初始化仓库,当前文件夹多出.git文件夹,如果删除就不是git仓库了,之前的版本再也找不回来了,也不能被git管理了
git init xxx # 在上一级敲

.git目录默认隐藏,可以通过命令ls -ah查看

(2) 查看暂存区和工作区的文件状态

在.git所在文件夹下执行

git status

有两种颜色:

  • 红色:工作区变化了,但是没有提交到暂存区
  • 绿色:已经提交到暂存区了,没有提交到版本库
  • 没有颜色:所有东西都是在版本库中了,都被git管理起来了

(3) 把工作区变更提交到暂存区

# 添加单个文件
git add 文件夹

# 添加所有文件
git add .

(4) 把暂存区内容,提交到版本库

git commit -m '注释:对于本次提交的说明,一定要加注释'

(5) 设置作者(全局、局部)

① 全局:

当前操作系统下所有仓库,提交到版本库时,都用这个作者

git config --global user.email '用户邮箱'
git config --global user.name '用户名'

该操作会在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用

② 局部:

局部只针对当前仓库 (不带--global)

git config user.email '用户邮箱'
git config user.name '用户名'

在当前仓库下的config新建用户信息,只能在当前仓库下使用

一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户

(6) 查看版本库的版本信息

git log
git reflog

(7) 把工作区的变更,回退【还没有放到暂存区】

将增加的内容、删除

git checkout .

(8) 把暂存区,拉回到工作区[由绿变红]

# 撤销所有暂存区的提交
git reset HEAD .
# 撤销某一文件的暂存区
git reset 文件名
# 撤销所有暂存区的提交
git reset .

(9) 回到某个版本

只要被版本管理了,就可以回退到任意一个状态下

git reset --hard 版本号

回滚到上一个版本:
    >: git reset --hard HEAD^
    >: git reset --hard HEAD~
回滚到上三个版本:
    >: git reset --hard HEAD^^^
    >: git reset --hard HEAD~3
回滚到指定版本号的版本:
    >: git reset --hard 版本号 (重点)
    >: eg: git reset --hard 35cb292

3.3 git过滤文件

项目中添加过滤文件,加了之后,被过滤的文件/文件夹就不被git管理了

操作步骤:

① 在仓库目录下 .git所在目录下,新建.gitignore

② 在.gitignore里面编写过滤规则

  • 忽略某个文件夹(写文件夹名):node_modules
  • 忽略某个文件(写文件名):.DS_Store
  • 忽略以npm-debug.log开头的所有文件:npm-debug.log*
  • 忽略以.sln结尾的所有文件:*.sln
  • 忽略a文件夹下的aa.txta/aa/txt
  • .gitignore是要被管理起来的

小总结:

① 红色信息:也就是在工作区有内容,就指定 add 命令

② 绿色信息:内容在暂存区,执行commit

③ 只有版本库中的代码,才能被监听,才能回滚到任何一个版本

4 git的分支

image-202

1.1 分支

主分支的版本都是可以查看的版本

我们都在开发分支开发,开发完成合并到主分支

主分支:只记录版本

开发分支:进行开发

1.2 分支操作

① 分支查看

# 查看本地分支
git branch

# 查看远程分支
git branch -a

② 分支创建

git branch 分支名

git branch -b 分支名
(加-b表示创建并切换)

③ 分支切换

git checkout 分支名

④ 分支删除

git branch -d 分支名

1.3 合并分支

① 先来到主分支

git branch checkout master

② 执行合并命令(分支合并有可能会出现冲突)

git merge 分支名

公司中的分支方案:

  • master分支,dev分支,bug分支,所有人在dev分支开发,开发完成合并到主分支
  • master分支,dev分支,bug分支,个人分支,个人在个人分支上开发,开发完成合并到dev分支

2 git远程仓库

将本地的版本提交到远程仓库,远程仓库可选择gitee,github,gitlab等等

gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715

2.1 操作步骤

(1) 将代码提交到本地仓库

① 将本地仓库做成远程仓库

git init

② 设置忽略文件

.gitignore

③ 将该仓库工作区提交到暂存区

git add .

④ 提交版本管理

git commit -m ’提交了‘

此时项目已经被提交了本地版本库,被git版本管理了

(2) 远程创建仓库

① 远程要创建仓库:例如在gitee上创建仓库

② 填一些信息,需要保证仓库是空的

image-20230302153604618

(3) 本地连接并设置远程仓库

① 安装远端仓库

git remote add origin https://gitee.com/duoduosg/luffy_api.git

② 把本地的版本库推送到远程仓库

git push -u origin "main"

需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)

  • win:

    打开 我的电脑,在地址栏输入【 控制面板\用户帐户\凭据管理器 】

  • mac:

    cmmand + 空格,输入【钥匙串】

(4) 配置远程仓库全流程

Git 全局设置
git config --global user.name "ziduo shangguang"
git config --global user.email "123@qq.com"
创建一个新仓库
git clone git@192.168.1.63:duo/a-a-a.git
cd a-a-a
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main
推送现有文件夹
cd existing_folder
git init --initial-branch=main
git remote add origin git@192.168.1.63:duo/a-a-a.git
git add .
git commit -m "Initial commit"
git push -u origin main
推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.1.63:duo/a-a-a.git
git push -u origin --all
git push -u origin --tags

3 ssh方式连接远程仓库

ssh方式连接远程仓库,需要公钥和私钥

  • 私钥在本地保存

  • 公钥配置在gitee上

以后提交代码,不需要其他任何认证了

3.1 使用步骤

教程:https://gitee.com/help/articles/4181

① 生成公钥私钥

在终端中输入

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
# Generating public/private ed25519 key pair...

按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_ed25519.pub 文件内容,获取到你的 public key

② 查看公钥,并在gitee的公钥管理中配置

cat ~/.ssh/id_ed25519.pub

SSH生成

输入图片说明

③ gitee中部署公钥

复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。

添加部署公钥

④ 添加主机到本机SSH可信列表

添加后,在终端(Terminal)中输入

ssh -T git@gitee.com

首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。

⑤ 删除https对应的地址,改成ssh的

# 删除https对应的地址
git remote remove origin

# 该成ssh对应的地址
git remote add origin git@gitee.com:duoduosg/luffy_api.git

4 协同开发

4.1 设置权限

仓库管理员,邀请开发者进入,邀请的开发者,对这个仓库就有读写权限,他们就可以开发代码,提交

4.2 协同开发步骤

① 从远程仓库把代码clone下来

git clone [项目地址]

# 拉取指定分支
git clone -b [分支名] [项目地址]

② 使用pycharm打开并配置好解释器,安装好依赖

③ 开发代码并用git管理并上传

git add

# 设置项目用户名和邮箱
git config user.name xxxxx
git config user.email xxxxxx@xxxx.com
        
git commit -m '注释'
git push origin master

5 冲突解决

5.1 原因

① 多人在同一分支开发
② 分之合并出现冲突

5.2 冲突出现的原因1:多人在同一分支开发冲突

例如:

# 多人在同一分支开发冲突
	-张三:
    	git pull origin master
        在requirements.txt`,最后一行加入 lqz
        git add .
        git commit -m 
        git push origin master
        
        
        
    -我:
    	在requirements.txt,最后一行加入 lqz
        git add .
        git commit -m 
        git pull origin master
        # 冲突了
        # 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
        # 提交到远程仓库,这是解决后的
        
        
# 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
    <<<<<<< HEAD   我的代码
    print('刘亦菲')
    =======   它的代码
    print('彭于晏')
    >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5       

减少冲突的办法:勤拉取代码

5.3 冲突出现的原因2:分支合并出冲突

	-我:
		1 创建dev分支 
			git branch dev
        2 在dev分支的views.py 中第2行加入代码
        
        3 提交到本地仓库
        
        
   -我:
	    1 在主分支的views.py 中第2行加入代码
      2 提交到版本库
        
      3 在主分支合并代码  git merge dev
      4 冲突了,解决冲突
      5 再提交代码,到此结束
        

6 合并分支

6.1 分支操作

① 查看远程分支

git branch -a

② 查看本地分支

git branch

③ 创建分支

git branch [新分支名]

④ 创建并切换分支

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

切换分支
git checkout

⑤ 从主分支里创建新分支

git checkout master -b 新分支名

⑥ 合并某分支到当前分支

git merge 分支

6.2 线下合并分支

切换main分支下,合并到另一个分支

git merge dev

6.3 线上合并分支

线上创建分支需要再gitee中点击新建分支,并在本地同步远程分支

① 本地同步远程分支

这个时候已经拉下来了该分支,但是得checkout 进去切进去才能看到该分支

git pull origin 分支名

② 本地切换到该分支上开发

git checkout 分支名

③ 本地推到远程仓库

git push origin dev

④ 远程的dev合并进远程的master需要提交pr/rr,在网站上申请了pull request后才会合并

image-20230302200211006

7 远程仓库回滚

① 本地版本回退

git reset --hard 版本号

② 强行推到远端

git push origin master -f
posted @ 2023-03-02 20:08  Duosg  阅读(42)  评论(0编辑  收藏  举报