Git操作


文章目录


一、centos安装

1.查看版本-git --version

git --version

2.卸载-sudo yum remve git -y

sudo yum remve git -y

3.下载-sudo yum install git -y

sudo yum install git -y

二、基本操作

1.创建本地仓库-git init

git init

2.配置本地仓库-git config

需要配置name和email,name是主页@后内容,email是账号邮箱

配置name和email,只在当前仓库中

git config user.name "aaa"//创建name为aaa
git config user.email "123@qq.com"//创建email为123@qq.com

查看配置内容

git config -l

删除配置,只在当前仓库中

git config --unset user.name
git config --unset user.email

配置name和email,在所有本地仓库中

git config --global user.name "aaa"//创建name为aaa
git config --global user.email "123@qq.com"//创建email为123@qq.com

删除配置,在所有本地仓库中

git config --global --unset user.name
git config --global --unset user.email

3.工作区,暂存区,版本库

创建的文件都是在工作区,文件add之后到缓存区,文件commit之后到版本库

4.添加到暂存区中-git add

//将当前路径下所有文件添加到暂存区中
git add .
//将文件1添加到暂存区中
git add 文件1
//将123添加到暂存区中
git add 123

5.添加到版本库中-git commit

//-m用于提交缓存区文件,"测试程序"是日志
git commit -m "测试程序"

6.打印日志-git log

git log

commit b9e3a0d708ee5a81ea5ff383c6dabe716eec8cf1 (HEAD -> master)
Author: StephenZhou <stephenzhou@StephenZhou.www.malloc.pro>
Date:   Tue Dec 29 12:15:13 2020 +0800
 test add new file "test.c"
  1. commit后是id,head->表示指向哪,master是主仓库,head->分支仓库则代表提交到分支仓库
  2. Author是提交者,显示格式是:用户名 <邮箱>
  3. Date的意思是提交时间
  4. 注释

7.查看提交后文件是否改动-git status

git status//查看本地文件提交情况

8.版本回退-git reset

第一步git log查看版本,之后git reset回滚

要回滚id,是commit后面的id,调用git log可以看到

本质是回退的版本库内容

git reset --soft 要回滚id//只回退版本库
git reset --mixed 要回滚id//只回退版本库,缓存区,回退默认
git reset --hard 要回滚id//只回退版本库,缓存区,工作区

9.查看提交历史-git reflog

凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中,下面橙色字就是我们需要id

git reflog

10.撤销修改-git checkout

代码只在工作区

git checkout -- file//将file文件恢复到上次提交状态

代码在工作区,缓存区

git reset --hard HEAD file//回退file到当前版本

代码在工作区,缓存区,版本区,前提条件没有push即可

git reset --hard HEAD^ file//回退file到上一个版本

11.删除文件-git rm

git rm file//删除file文件
git commit -m "delete file//删除文件后需要commit一下

三、分支管理

1.查看当前分支-git branch

git branch//列出本地分支
git branch -a//列出本地和远程分支

2.创建分支-git branch

git branch dev//创建dev分支

3.切换分支-git checkout

git checkout master//切换为master分支

4.合并分支-git merge

想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名,前提是合并分支前已经提交

git checkout master//切换为master分支
git merge dev//将dev分支合并到master分支

合并冲突

原本master分支有一个文件内容是aaa,然后创建新分支dev,将文件内容修改为bbb,master分支将文件内容修改为ccc,此时如果将dev合并到master当中就会发生冲突,此时需要手动解决,将冲突的内容删除,例如只能保留ccc或者bbb,并且删除后要提交一次

5.删除本地分支-git branch -d

其中把d改成D就是强制删除,注意,删除分支1不能在分支1中删除,必须切换到分支2时,删除分支1

git branch -d 分支名

6.删除远程分支-git push origin --delete

git push origin --delete 远程分支名

7.修改分支名称git branch -m

git branch -m 分支名 新的分支名

8.保存当前工作-git stash

git stash

在当前工作区1执行完之后,可以切换别的分支工作区2,之后再切回来工作区1的时候,执行以下代码,状态恢复

git stash pop

三、远程操作

1.克隆仓库-HTTPS-git clone

注意不能在任意一个本地仓库所存在的目录下执行,本地仓库里也有master等内容,一般是在根目录,不用提前git init

git clone https://gitee.com/peng_zhihui/Dummy-Robot.git

2.向远程仓库推送-git push

本地仓库:远程仓库

git push origin master:master//提交本地仓库master分支到远程分支master,前提是切换到本地仓库
git push origin dev:master//提交本地仓库dev分支到远程分支master,前提是切换到本地仓库

3.拉取远程仓库-git pull

git pull origin master:master//将远程仓库master分支代码拉取并合并到本地master分支,前提是切换到本地仓库

4.忽略特殊文件-.gitignore

如果在add时有些文件不想添加,除了一个一个add之外还可以将不想添加的文件放入.gitignore中,.gitignore文件必须创建在根目录的工作区中

*.so//在.gitignore文件中写入这个,表示不想传送以.so结尾的文件
!c.so//不排除c.so文件

四、标签管理

1.创建标签-git tag

git tag//查看所有标签
git tag v1.0//创建标签v1.0,代表最新一次提交的id
git tag v1.0 具体id//将具体的id替换为v1.0

2.删除标签-git tag -d

git tag -d v1.0//将v1.0标签删除
git push origin :v1.0//将远程仓库中v1.0删除

3.推送标签

git push origin v1.0//推送v1.0标签到远程仓库
git push origin --tag//推送所有标签到远程仓库

五、多人协作

同一分支下的多人协作

1.准备

目标:master分支下file.txt文件新增代码aaa 和bbb

实现,由开发人员1新增代码aaa,由开发人员2新增代码bbb

条件:在一个分支下完成操作

  1. 在gitee新建分支dev
  2. 开发人员1在工作区git pull,已经建立连接
  3. 开发人员2在本地git clone 仓库链接,没有建立连接

2.协作

  1. 开发人员1输入,git checkout -b dev origin/dev ,创建本地dev分支并且切换到本地dev,同时本地dev分支和远程dev分支建立了连接

  2. 开发人员1对file.txt文件修改内容aaa,然后add和commit,此时在本地分支dev中file.txt修改了代码

  3. 开发人员1将内容推送git push,已经连接可以省略部分

  4. 如果开发人员2输入,git checkout -b dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支没有建立了连接,不能用git pull(错误示范)

  5. 如果开发人员2输入,git checkout -b dev origin/dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支建立了连接,能用git pull(正确示范)

  6. 开发人员2对file.txt文件修改内容bbb,然后add和commit,此时在本地分支dev中file.txt修改了代码

  7. 开发人员2将内容推送git push,已经连接可以省略部分(注意:如果开发人员2要修改的位置已经被别人修改了,那么需要git pull,把远程内容拉下来手动修改)

  8. 手动修改完后再git push

3.将内容合并进master分支

1.pull requests申请单

在gitee中找到pull requests,源分支选择dev分支,目标分支选择master分支,完善PR

或者

2.本地操作

  1. 开发人员1在本地dev分支中git pull,将远程dev分支中代码跟新到本地
  2. 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
  3. 开发人员1git checkout dev,切换到dev分支,然后git merge master 将本地master分支合并到dev分支,确保合并后代码不会冲突,如果冲突就在dev分支中修改
  4. 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge dev
  5. 开发人员1git push即可
  6. 完成开发后在gitee删除dev分支

4.总结

  • 写好代码后,add,commit,之后git push
  • 如果失败,可能是远程分支比本地更块更新,需要先将最新代码git pull下来尝试合并
  • 如果合并有冲突,则解决冲突,然后合并,然后git push
  • 将分支dev合并到master分支,然后删除dev分支

不同分支下多人协作

1.准备

目标:master分支下新增function1和function2文件

实现,由开发人员1新增function1,由开发人员2新增代function2

条件:在不同分支下完成操作

  1. 开发人员1在工作区git checkout -b feat-1,创建本地分支feat-1
  2. 开发人员2在本地git checkout master,切换到本地master,为了保证本地master是最新代码,我们需要git pull
  3. 开发人员2在工作区git checkout -b feat-2,创建本地分支feat-2

2.协作

  1. 开发人员1在feat-1分支中开发function1,vim function1,然后add,commit ,需要和远程建立连接git push origin feat-1,将分支feat-1推送到远端,输入git push

  2. 开发人员2在feat-2分支中开发function2,vim function2,然后add,commit ,需要和远程建立连接git push origin feat-2,将分支feat-2推送到远端,输入git push

3.从分支feat-1切换到分支feat-2

  1. 开发人员1将分支feat-2拉下来,git pull,前提分支feat-2在远端存在
  2. 开发人员1切换到分支feat-2,并且让远端分支feat-2和本地分支feat-2建立连接,git checkout -b feat-2origin/feat-2
  3. 开发人员1在分支feat-2中开发function2,vim function2,然后add,commit ,git push

4.将分支feat-1和分支feat-2合并进master分支

1.pull requests申请单

在gitee中找到pull requests,源分支选择feat-1分支和feat-2分支,目标分支选择master分支,完善PR

或者

2.本地操作

  1. 开发人员1在本地feat-1分支中git pull,将远程feat-1分支中代码跟新到本地
  2. 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
  3. 开发人员1git checkout feat-1,切换到feat-1分支,然后git merge master 将本地master分支合并到feat-1分支,确保合并后代码不会冲突,如果冲突就在feat-1分支中修改
  4. 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge feat-1
  5. 开发人员1git push即可
  6. 完成开发后在gitee删除feat-1分支

feat-2分支也是操作一样

解决git branch -a打印已删除分支方法

当远程分支在gitee上已经删除的情况下,在本地运行git branch -a,还能看到远程已经删除的分支

解决:git remote prune origin是删除本地显示的远程分支

六、企业开发模型

开发环境 develop 开发分支
测试环境 release 预发布分支
预发布环境 release 预发布分支
生产环境 master 主分支
本地 feature 需求开发分支,开发完后合并到develop
本地 hotfix 紧急修复分支,也就是补丁,修复完后合并到develop和master

DevOps开发


相关推荐
samLi06208 分钟前
【更新】中国省级产业集聚测算数据及协调集聚指数数据(2000-2022年)
大数据
Mephisto.java11 分钟前
【大数据学习 | Spark-Core】Spark提交及运行流程
大数据·学习·spark
Smile丶凉轩17 分钟前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
EasyCVR1 小时前
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
大数据·网络·音视频·h.265
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
jwolf21 小时前
Elasticsearch向量搜索:从语义搜索到图搜图只有一步之遥
elasticsearch·搜索引擎·ai
科技象限2 小时前
电脑禁用U盘的四种简单方法(电脑怎么阻止u盘使用)
大数据·网络·电脑
你可以叫我仔哥呀2 小时前
ElasticSearch学习笔记三:基础操作(一)
笔记·学习·elasticsearch
天冬忘忧3 小时前
Kafka 生产者全面解析:从基础原理到高级实践
大数据·分布式·kafka
hummhumm3 小时前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang