Git详解

整理 Git 的基本知识,本文适合了解git部分知识但是不太熟练的童鞋

1、git简介及安装

git是目前常用的一个版本控制系统,由Linus创始人Linus Torvalds发明,githubgitee等都是基于git的远程仓库。
安装很简单:Git下载,下载后一路点击确定即可。安装完Git后通常需要配置用户名和邮箱:

git --global user.name "用户名"
git --global user.email "email地址"

如果要查看git的配置:

git config  --list

git配置

git的配置其实分为3个,分别是全局配置、用户配置和本地配置,查询时的优先级是本地配置 > 用户配置 > 全局配置。

  • 全局配置:通过命令git config --system --list查看,保存在git安装目录下的/etc/gitconfig文件中。
  • 用户配置:通过命令git config --global --list查看,保存在C盘的用户文件夹下的个人账户文件夹中的gitconfig文件中。例如C:\Users\ccattempt\gitconfig
  • 本地配置:通过命令git config --local --list查看,保存在本地git仓库(即.git文件夹)的config文件中。

如果要查看某个特定的值,例如user.name

git config user.name // 可以指定配置,例如:git config --global user.name

如果要设置某个特定的值,例如user.name

git config user.name yourname // 可以指定配置,例如:git config --global user.name yourname

注意:由于 Git 会从多个文件中读取同一配置变量的不同值,因此你可能会在其中看到意料之外的值而不知道为什么。 此时,你可以查询 Git 中该变量的 原始 值,它会告诉你哪一个配置文件最后设置了该值:

git config --show-origin user.name

在这里插入图片描述

2、git基本命令

以下介绍常用的git命令

1、初始化git仓库
通常我们会遇到两种情况:

  • 新建一个项目,需要使用git进行版本控制
  • 已有通过git控制的项目,需要从远程仓库拉取下来

第一种情况需要使用init命令,运行下面的命令后将会在当前文件夹下创建.git文件夹,因为这个文件夹是隐藏的,因此可能需要打开隐藏项目才可以查看到。

git init

在这里插入图片描述
如果是第二种情况,需要使用clone命令:

git clone 远程仓库地址

这同样会在当前文件夹下创建一个.git文件夹,并下载远程仓库的文件。
2、查看状态、修改、提交、撤回、查询日志
我们在初始化或者克隆一个文件后,可以通过git status查看当前状态:

git status

在这里插入图片描述
因为目前没有文件的修改和新增,所以提示工作树是干净的,没什么需要提交的。我们新增一个a.txt文件,再查看状态:
在这里插入图片描述
此时提示a.txt没有被git捕捉到,需要使用git add命令添加到暂存区:

git add 文件或文件夹路径 // 使用 git add . 或者 git add --all 可以一次提交所有修改到暂存区

在这里插入图片描述
这时的状态是已经提交到暂存区,但是还没有提交到本地仓库,需要使用git commit -m "描述信息"命令,并且提示说可以使用git restore --staged 文件路径撤销这次提交,我们先尝试commit
在这里插入图片描述
commit以后这次新增文件的信息就算提交成功了,可以发现工作树又是干净的了。这时这个文件就已经提交到本地仓库了。我们在本地的操作就算完成了。
然而,有时候我们难免手抖,不小心提交了多余的东西到暂存区,这时可以使用git restore --staged 文件路径撤销提交,例如,再新增两个文件b.txtc.txt,我们本意是分别提交,但是却使用git add .一次性提交到暂存区了:
在这里插入图片描述
从暂存区撤销c.txt的提交:

git restore --staged c.txt

在这里插入图片描述
此时c.txt又是未追踪状态了。但是如果已经把文件commit了怎么办呢?我们可以使用git reset回退版本,但在之前需要先知道怎么查看提交日志,使用git log可以查看所有提交日志:

git log

在这里插入图片描述
使用git log -n可以查看最近的n条日志,例如查看最近一条数据:

git log -1

在这里插入图片描述
使用git log --pretty=oneline可以查看日志的简短信息:

git log --pretty=oneline

在这里插入图片描述
使用git log --patch可以查看每次提交时的修改,这里我们先修改a.txt,然后查看:
在这里插入图片描述
3、分支
可以通过git branch查看当前所有本地分支:

git branch

在这里插入图片描述
默认存在一个master分支,也就是主分支。可以通过git branch 分支名新建分支:

git branch 分支名

在这里插入图片描述
前面有*号的就是当前分支,可以发现新建了一个dev分支。可以通过git checkout 分支名切换分支:

git checkout dev

在这里插入图片描述
当我们在分支上修改了代码之后,需要再把代码合并到主分支,此时需要使用git merge命令:

git merge 需要被合并的分支

我们在dev分支新建dev.txt文件,提交后合并,注意合并前先切换到master分支:
在这里插入图片描述
这样dev分支的东西就被合并到master分支了,在master分支可以发现多了dev.txt文件:
在这里插入图片描述
如果合并后不需要分支了,可以删除,使用git branch -D 分支名

git branch -D 分支名

在这里插入图片描述
注意合并的过程中可能出现冲突,这时需要先解决冲突,再次新建dev分支,可以通过git checkout -b dev的命令一次性创建并切换到dev分支:

git checkout -b dev

在这里插入图片描述
dev分支的dev.txt添加内容我是dev分支,提交后再切换回masterdev.txt添加内容我是master分支并提交,再合并dev分支:

git merge dev

在这里插入图片描述
在这里插入图片描述
解决掉冲突再提交即可。
4、远程仓库
通常情况下我们会将代码上传到远程仓库,例如github,可以通过git remote查看当前的远程仓库地址。注意通过git clone下来的项目默认会绑定远程仓库,并给这个地址一个叫origin的别名:

git remote

我们在gitee添加一个远程仓库,然后复制仓库地址,通过git remote add 别名 仓库地址来创建一个远程仓库别名,此后就可以利用这个别名来推送代码到gitee,这里别名设置为firststore

`git remote add 别名 仓库地址`

在这里插入图片描述
远程仓库目前是空的,我们清空本地仓库文件,然后新建README.md文件,提交到本地仓库。此时我们可以先推送到远程仓库,但是如果远程仓库已经有内容了则需要先从远程仓库拉取代码,这里我们先使用git push 远程仓库地址或者别名 本地分支名:远程分支名,如果远程和本地分支名相同也可以简写为:git push 远程仓库地址或者别名 分支名

git push 远程仓库地址或者别名 本地分支名:远程分支名

在这里插入图片描述
这样我们就完成了推送。如果新建的远程仓库已经有内容,则需要先使用git fetch 远程仓库别名先获取远程分支代码:

git fetch 远程仓库别名

在这里插入图片描述
这样会发现多了一个远程分支。此时再使用git merge合并:
在这里插入图片描述
提示拒绝合并没有被发布的历史,这时需要加上--allow-unrelated-histories,表示允许合并未发布的内容:
在这里插入图片描述
合并成功了,但是提示发生了冲突,这是因为远程仓库和本地仓库都有README.md文件,先解决冲突,在vscode上可以清晰的看到冲突内容:
在这里插入图片描述
这里我们选择将两个文件内容都保留,重新提交到本地仓库后可以选择推送到远程仓库:
在这里插入图片描述
查看远程仓库,可以发现推送成功了:
在这里插入图片描述

3、总结

前面说了一大堆,实际日常工作用到的无非是克隆仓库、拉取代码、合并分支、推送分支。流程如下:
1、克隆仓库
首先我们一般有一个远程仓库的分支,例如名字叫dev
在这里插入图片描述
克隆dev分支代码:
在这里插入图片描述
在这里插入图片描述
修改README.md文件,然后推送到dev分支:
在这里插入图片描述
注意origin/dev是远程分支名,可以通过git branch --remotes查看所有远程分支。origin是远程仓库别名。在个人分支上完成自己的任务后,我们需要合并到主分支,这时需要先拉取主分支代码到本地分支,为了模拟多人开发环境,我在远程仓库的master分支也修改了README.md文件。拉取主分支代码需要先fetchmerge
在这里插入图片描述
注意fetch的命令是git fetch 远程仓库别名 远程分支名,不要和git merge 分支名记混了:
在这里插入图片描述
已经合并到本地仓库,但是提示冲突,先解决冲突:
在这里插入图片描述
解决完冲突后再提交然后推送到远程的dev分支:
在这里插入图片描述

然后再发起合并devmaster的请求等待审核通过即可。

4、常用git命令汇总

初始化仓库:
git init
克隆仓库:
git clone 仓库地址
提交代码到暂存区
git add 文件路径
提交代码到本地仓库
git commit -m "描述文字"
查看日志
git log
查看简短日志
git log --pretty=oneline
查看最近n条日志
git log -n
撤销提交到暂存区的文件
git restore --staged 文件名
修改commit的描述文字
git commit --amend
删除暂存区的文件
git rm --cached 文件名
回退版本
git reset --hard 版本号
查看本地分支
git branch
查看远程分支
git branch -r
查看所有分支
git branch -a
新建分支
git branch 分支名
删除分支
git branch -d 分支名
切换分支
git checkout 分支名
新建并切换到新建分支
git checkout -b 分支名
合并本地分支
git merge 分支名
新建远程仓库地址别名
git remote add 别名 远程仓库地址
查看远程仓库别名
git remote
查看远程仓库地址
git remote -v
拉取远程仓库代码
git fetch 远程仓库别名 分支名
合并远程仓库分支
git merge 远程仓库别名/分支名
拉取并合并远程仓库代码
git pull 远程仓库别名 本地分支:远程分支
如果分支名相同也可简写:
git pull 远程仓库别名 分支名
合并未发布的(unrelease)的远程仓库代码
git merge 远程仓库别名/分支名 --allow-unrelated-histories
推送代码到远程仓库
git push 远程仓库别名 本地分支名:远程分支名
如果本地和远程分支名相同可以简写为:
git push 远程仓库别名 分支名
删除远程分支
git push 远程仓库别名 -d 分支名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值