git的使用

本文详细介绍了Git的基本操作,包括初始化配置、版本控制、本地和全局配置、仓库管理、工作区域与暂存区、提交与重置、分支创建与合并、rebase与merge的区别、处理合并冲突,以及如何使用.gitignore忽略文件和关联本地与远程仓库。
摘要由CSDN通过智能技术生成

git

git 命令都以git开头,是为了与linux命令进行区分

初始化配置

git -v     查看版本
git config --global user.name "yun OS"          设置用户名(用户名中间有空格,就要加双引号)
git config --global user.email javayun@qq.com   设置用户邮箱
git config --global init.defaultBranch master   设置版本库默认分支
git config --global --list                      查看配置信息

–Local:本地配置,只对本地仓库有效

–global:全局配置,所有仓库生效

–system:系统配置,对所有用户生效

配置文件保存在 ./gitconfig 里面,可以使用编辑器手动修改

[user]
        name = yun OS 
        email = javayun@qq.com
[init]
        defaultBranch = master

创建git仓库

方法一:

mkdir myproject   创建一个目录
cd  myproject     进入这个目录
git init          创建仓库

方法二:

git init myproject   创建仓库

可以进入目录再执行git init命令,也可以执行该命令时给定参数

创建一个Git远程仓库,或者说是克隆一个远程仓库,远程仓库指gitee,gitlab等
git clone https://**************.git
Git的工作区域和文件状态
  1. 工作区:工作区就是你克隆项目到本地后,项目所在的文件夹目录。

  2. 暂存区:用于存储工作区中添加上来的变更(新增、修改、删除)的文件的地方。操作时,使用git add .会将本地所有新增、变更、删除过的文件的情况存入暂存区中。

  3. 本地仓库:用于存储本地工作区和暂存区提交上来的变更(新增、修改、删除)过的文件的地方。操作时,使用git commit –m “本次操作描述”可以将添加到暂存区的修改的文件提交到本地仓库中。

    在这里插入图片描述

文件状态

未跟踪(Untrack):新创建的文件,还没有被git管理

未修改(Unmodified):已经被git管理,但文件的内容没有变化,没有修改过

已修改(Modified):已经修改了的文件,但是没有添加到暂存区

已暂存(Staged):文件修改之后,已经添加到了暂存区里面

添加和提交文件
git add 文件名                将文件添加到暂存区
git restore --staged 文件名   取消添加到暂存区,放回工作区
git commit -m "提交的描述信息"  将文件提交到仓库
git commit -a -m "提交的描述信息"  加-a选项,就实现了提交暂存区,提交仓库,一次搞定
git commit -am "提交的描述信息"    简写

-m 指定提交信息,如果不加此选项,会进入一个交互式的输入界面(vi),在第一行编辑后保存退出(Esc :wq)

git只会提交暂存区里面的文件,不会提交工作区里面的文件

支持使用通配符 * . 点表示当前目录(全部)

git log             查看提交 
git log --oneline   查看简洁的提交记录(只显示提交ID,以及自定义的提交信息)
git reset 回退版本
工作区暂存区本地仓库
git reset --soft
git reset --hard
git reset --mixed

git reset --soft 回退到某一个版本,并且保留工作区和暂存区的所有内容

git reset --hard 回退到某一个版本,并且丢弃工作区和暂存区的所有内容

git reset --mixed 回退到某一个版本,并且只保留工作区的所有内容丢弃暂存区的所有内容 (默认参数)

git log --oneline         先查询一下,得到版本ID
git reset --soft 版本ID    通过版本ID回退到指定的版本
git ls-files              查看暂存区的内容
git status                查看仓库的状态
git reset --hard HEAD^    可以使用 HEAD^ 回退到上一个版本
git reset HEAD^           不添加参数就是使用 默认参数 mixed 提交
git reflog    查看所有的操作记录

分支介绍

适合团队协作,比如多个开发人员可以在自己的分支上进行开发工作,最后再合并到主分支中

git branch       查看当前仓库的所有分支
git branch dev   创建一个名为dev的新分支
git switch dev    切换到dev分支
git checkout dev  切换到dev分支

git checkout 命令也可以用来恢复文件,如果需要恢复的文件和分支名相同,就会给你带来意料之外的结果

git switch 在2.23版本开始新添加的,专门用来切换分支的命令

git branch
  dev
* master            当前在master分支

如果要将dev分支合并到master分支,需要先切换到master分支

git merge dev   将dev分支合并到master分支
git branch -d dev   分支合并完,原分支可以删除
git branch -D dev   如果分支没有被合并,需要使用 -D 来删除
git log --graph --oneline --decorate --all     查看分支图
回退和rebase
git rebase dev   如果当前在master分支,执行这条命令,就会将dev合并到master分支“的后面” 
merge和rebase的区别

merge 优点:不会破环原分支的提交历史,方便回溯和查看

​ 缺点:会产生额外的提交节点,分支图比较复杂

rebase 优点:不会新增额外的提交记录,形成线性历史,比较直观和干净

​ 缺点:会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用

合并冲突

两个分支中,有同名的文件,内容不一样,就会冲突

git merge dev    把dev分支的内容合并到master分支
[root@git myproject]# git branch             # 查看分支
  dev
* master

[root@git myproject]# echo "1111"> demo.txt   # 新建文件
[root@git myproject]# git add demo.txt        # 将文件添加到暂存区
[root@git myproject]# git commit -m "1111"    # 将文件提交到仓库
[master 10cfa45] 1111
 1 file changed, 1 insertion(+), 2 deletions(-)
 
[root@git myproject]# git switch dev          # 切换到dev分支
切换到分支 'dev'

[root@git myproject]# echo "2222"> demo.txt   # 修改文件
[root@git myproject]# git add demo.txt        # 将文件添加到暂存区
[root@git myproject]# git commit -m "2222"    # 将文件提交到仓库
[dev 75b9592] 2222
 1 file changed, 1 insertion(+), 2 deletions(-)
 
[root@git myproject]# git switch master       # 切换到master分支
切换到分支 'master'

[root@git myproject]# git merge dev           # 将dev分支合并到master分支
自动合并 demo.txt
冲突(内容):合并冲突于 demo.txt
自动合并失败,修正冲突然后提交修正的结果。
[root@git myproject]# cat demo.txt
<<<<<<< HEAD
1111
=======
2222
>>>>>>> dev
[root@git myproject]# vim demo.txt            # 修改冲突文件
[root@git myproject]# cat demo.txt
1111
2222 
[root@git myproject]# git add demo.txt        # 将文件添加到暂存区   
[root@git myproject]# git commit -m "3333"    # 将文件提交到仓库
[master ebeeb00] 3333
[root@git myproject]# git log --graph --oneline --decorate --all   # 查看分支图
*   ebeeb00 (HEAD -> master) 3333
|\
| * 75b9592 (dev) 2222
* | 10cfa45 1111
|/
* 0038608 demo文件在dev第一次提交
* ea8094c demo文件在master第一次提交
git diff      该命令会把冲突的部分显示出来
git branch -d feat 可以删除没有用的分支

git diff 查看文件差异

  • 查看文件在工作区、暂存区、本地仓库之间的差异
  • 查看文件在不同版本之间的差异
  • 查看文件在两个分支之间的差异
git diff    比较工作区和暂存区的文件内容,会显示发生更改的文件以及更改的详细信息,不输出则表示工作区和暂存区是一样的
git diff HEAD  比较暂存区和仓库的内容
git diff --cached  比较工作区和仓库的内容
git log --oneline               查询版本ID
git diff  f8ee8ab b728d37       比较两个版本之间的不同 
git diff  f8ee8ab HEAD          HEAD 表示最新版本
git diff  HEAD~ HEAD            HEAD~ 表示上一个版本
git diff  HEAD^ HEAD            HEAD^ 表示上一个版本
git diff  HEAD~2 HEAD           HEAD~2 表示 HEAD 之前的两个版本
git diff  HEAD~ HEAD  fiel.txt     只显示file文件的差异内容

从版本库中删除文件 git rm

rm -rf file1.txt    先将文件file1.txt删除
git add file1.txt   将删除的文件再执行一下git add,告诉暂存区,这样暂存区就删除了
git rm file1.txt             该命令可以将工作区,暂存区的文件一次性删除
git rm --cached file1.txt    把文件从暂存区中删除,但保留在工作区
git rm -r *                  递归删除某个目录下的所有子目录和文件
git commit -m "删除 file1.txt 文件"   执行一次提交,就可以将版本库的文件也删除

.gitignore忽略文件

把一些不重要的文件忽略掉,使它不提交到版本库里面

echo 'demo.log' > .gitignore    忽略demo.log日志文件  
vim .gitignore
*.log                   忽略所有的日志文件

这个文件是,从上到下逐行匹配,每一行表示一个忽略模式

关联本地仓库和远程仓库

远程仓库指gitee,gitlab等

在这里插入图片描述

ssh-keygen -t rsa -b 4096    -t 表示生成什么协议的密钥,-b 表示生成密钥的大小

在这里插入图片描述

在这里插入图片描述

创建一个Git远程仓库,或者说是克隆一个远程仓库,远程仓库指gitee,gitlab等
git clone https://**************.git
git remote -v  可以查看当前仓库对应的远程仓库的别名和地址
git remote add origin git@gitee.com:chen-fengyun/get-test.git
git push -u origin "master"
git push   把本地仓库的修改推送到远程仓库
git pull   把远程仓库同步到本地仓库
规范和模型

版本号规则

主版本 (Major Version): 主要的功能变化或重大更新;
次版本 (Minor Version): 一些新的功能、改进和更新, 通常不会影响现有功能;
修订版本 (Patch Version): 的bug 修复, 安全漏洞补丁等。通常不会更改现有功能和接口。

git分支的命名规则

主分支: 主分支是代码库的稳定版本,通常用于发布生产环境的代码。主分支的命名可以是main或master。
开发分支:开发分支用于日常的功能开发,通常是由主分支派生而来。开发分支的命名可以是develop或dev。
功能分支:功能分支用于开发某种特定功能,从开发分支中分出,开发完成后需再并入开发分支。
功能分支的命名可以采用feature-xxx 的形式,其中xxx是功能模块的名称。
修复分支:修复分支用于修复已发布版本中的bug,从主分支或开发分支中分出。
修复分支的命名可以采用hotfix-xxx的形式,其中xxx是bug的编号或描述。

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芸开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值