git的基本命令操作超详细解析教程

Git基础教学

Git:一个开源的分布式版本控制系统,它可以在本地和远程仓库之间管理源代码和文档的版本。推荐有Linux基本命令的基础学习更佳,学起来不会枯燥、乏味。

1、初始化配置

Git安装网址

查看Git版本,检测是否安装成功

c 复制代码
git --version

配置用户名和邮箱,保存用户名和密码,不用每一次都输入

c 复制代码
git config --global user.name "Deng ZJ"
git config --global user.email [email protected]
git config --global credentia.helper store

查看配置信息

c 复制代码
git config --global --list

结果如下

2、初始化仓库

创建仓库一般有两种方式
1、本地直接创建一个仓库
2、远程服务器上克隆一个存在的仓库

2-1 首先创建一个文件目录,切换文件路径

c 复制代码
mkdir learn-git
cd learn-git

在本地文件目录learn-git 中执行命令 git init,将这个目录变成 Git 仓库。系统命令窗口回显已经初始化了一个空的仓库,且路径行出现一个master分支

c 复制代码
git init

输入 ls -a ,即查看当前目录下的文件(包括带.的隐藏文件),-a参数:显示隐藏文件

其中.git隐藏文件里是get仓库的组成部分,不要随意增删改查

删除仓库,master标志也会消失

c 复制代码
rm -rf .git


2-2 新建仓库,取名为my-repo的仓库,就会在my-repo文件夹下生成仓库

c 复制代码
git init my-repo

进入my-repo仓库

c 复制代码
cd my-repo

2-3 Github远程使用git clone命令获取仓库

c 复制代码
git clone https://github.com/geekhall-laoyang/remote-repo.git

如何找到地址,如下图所示

2-4 修改分支名master 方法

C:\Users\Administrator 找到.gitconfig文件,打开后添加下面两行指令即可

c 复制代码
[init]
	defaultBranch = main

3、工作区域和文件状态

工作区域分为:工作区暂存区本地仓库

工作区:本地计算机上存储项目代码的目录,所有文件都可以进行修改和编辑

暂存区(也称为索引区): Git 用于存储将要提交到本地仓库的修改的地方,看作是一个缓冲区 ,用于暂时存储修改。

本地仓库:是指 Git 存储项目历史记录的地方,它保存了项目的每一次提交,每个提交都包含了一个快照和提交信息。本地仓库是工作区和暂存区的最终目的地,是 Git 进行版本控制的核心

文件的三种状态已修改(modified),已暂存(staged),已提交(committed)

文件状态如下图所示:

4、添加和提交文件

简洁版看结尾处
4-1 由于之前创建了一个仓库,现在来创建一个新的文件file1.txt,并输入hello world

c 复制代码
echo "hello world" > file1.txt

查看文件内容

c 复制代码
cat file1.txt

查看仓库的状态

c 复制代码
git status

添加到暂存区

c 复制代码
git add file1.txt


提交 文件,只会提交暂存区的文件

再新创建一个文件file2.txt,进行提交文件时,只提交暂存区的file1.txt, ,-m参数:提交信息

c 复制代码
 git commit -m "第一次提交"


4-2 通过通配符*来add添加多个文件

c 复制代码
git add *.txt


4-3 添加当前文件夹的所有文件(用. 表示)到暂存区

c 复制代码
git add .

提交文件,不带m参数 就会进入vim文件编辑器 (不会使用需学习Linux基础知识)界面,首行编辑第二次提交即可,vim的使用方法自行查阅

进入界面,先输入i进入编辑界面,编辑文字这是第二次提交后,按Esc退出输入模式。进入命令模式,界面输入:wq即可

c 复制代码
git commit

查看提交历史记录

c 复制代码
git log


总结

git status 查看仓库的状态
git add 添加到暂存区 通配符添加多个以.txt结尾的文件 git add *.txt 添加当前目录下的所有文件 git add .
git commit 提交 只提交暂存区的文件,不会提交工作区的
git log 查看仓库提交历史记录 添加--oneline参数可查看简洁的历史记录
git commit -a -m "输入信息" 一次性完成添加和暂存

5、git reset 回退版本

三个参数 softhardmixed

工作区内容 暂存区内容
git reset --soft 保留 保留
git reset --hard 清空 清空
git reset --mixed(默认参数) 保留 清空

创建一个名为repo 的仓库,创建三个文件,并分别添加提交 共三次,并使用git log --oneline查看提交简洁记录

依次复制repo创建三个仓库

c 复制代码
cp -rf repo repo-soft
cp -rf repo repo-hard
cp -rf repo repo-mixed

进入命名为soft的仓库,进行soft方式的版本回退

5-1 --soft 后面接回退的版本号,那么我们回退到第二次提交的版本号

c 复制代码
 git reset --soft fe6c3eb

此时分别查看工作区和暂存区的情况,应当都是被保留的

5-2 --hard参数 HARD^ 表示回退到上一个版本

c 复制代码
git reset --hard 版本号

或者

c 复制代码
git reset -hard HEAD^

此时分别查看工作区和暂存区的情况,file3的文件应当都是被清空的

5-3 --mixed 默认参数可以不加

回退到上一个版本

c 复制代码
git reset --mixed HEAD^

此时工作区file3文件保留和暂存区文件清空

总结

工作区内容 暂存区内容
git reset --soft 保留 保留
git reset --hard 清空 清空
git reset --mixed(默认参数) 保留 清空

6、git diff查看差异

查看工作区、暂存区、本地仓库之间的差异,查看不同版本之间的差异或者不同分支之间。

使用上一节创建的repo仓库,并里面vim命令修改file3.txt文件内容333变为4444后,使用命令查看差异

不加参数,默认比较工作区和暂存区之间的差异

c 复制代码
git diff

工作区和版本库之间的差异

c 复制代码
git diff HEAD

暂存区和版本库之间的差异

c 复制代码
git diff --cached

比较版本差异,只需要加入版本的ID即可

c 复制代码
 git diff 9ff62d0 e27c26b

HEAD标志指向分支的最新节点,比较当前版本HEAD和上一个版本HEAD^(HEAD~)之间的差异

c 复制代码
git diff HEAD^ HEAD
git diff HEAD~ HEAD

7、删除文件git rm

可以一次性删除工作区和暂存区的相同文件

c 复制代码
git rm file2.txt

删除版本库的文件

c 复制代码
git rm --cached 文件名

删除的文件需要提交到版本库中,这样版本库中的文件才能被删除

c 复制代码
git commit -m "delete file"

8、.gitignore

需要适当的忽略一些临时缓存文件或者敏感文件添加到版本库中

克隆仓库

c 复制代码
git clone 克隆地址

推送更新内容到远程仓库

c 复制代码
git push

拉取更新内容到本地仓库,并进行一次合并操作

c 复制代码
git pull

只拉去修改的内容到本地仓库

c 复制代码
git fetch

9、本地文件提交到远程仓库

首先进入github官网,点击右上角New按钮,新建一个仓库。

这里我以将本地的coco数据集文件 上传到github为例进行演示

1、创建一个本地仓库,并将文件移动到本地仓库中

2、提交到本地仓库

c 复制代码
git add .
git commit -m "first commit"
git log

3、上传到远程仓库

c 复制代码
git remote add origin [email protected]:DengZhengJ/coco-repo.git
git branch -M main
git push -u origin main

显示最后一行,即上传完成。刷新github界面就可以看见上传的本地文件

10、分支基础

利用GitKraken图形化工具展现 ,可到git官网下载。

首先在main创建main1、2、3分别提交三次,在dev分支中创建dev1、dev2分别提交二次,然后在main中创建main4、main5提交二次。

查看当前仓库的所有分支

c 复制代码
git branch

创建一个名为dev的新分支

c 复制代码
git branch dev

切换到新的分支,两个都可

c 复制代码
//git checkout dev
git switch dev

未合并,所以main分支还是原来的内容

将不同的分支进行合并到当前分支,在master分支中合并dev分支

c 复制代码
git merge dev

当一个分支已经被合并到其他分支时,就可以删除已经合并的分支,没有合并的用-D参数强制删除

c 复制代码
git branch -d dev
查看分支列表 git branch
创建分支 git branch 分支名
切换分支 git switch 分支名
合并分支 git merge 分支名
删除分支 git branch -d 分支名(已合并) git branch -D 分支名(未合并)

Rebase 操作

以上笔记借鉴于b站视频,以备复习使用。参考:bilibili 网站------【GeekHour】一小时Git教程

相关推荐
码农101号13 分钟前
Linux中shell编程表达式和数组讲解
linux·运维·服务器
云道轩34 分钟前
升级centos 7.9内核到 5.4.x
linux·运维·centos
是小满满满满吗37 分钟前
传输层:udp与tcp协议
linux·服务器·网络
爱学习的小道长1 小时前
Ubuntu Cursor升级成v1.0
linux·运维·ubuntu
EelBarb1 小时前
seafile:ubuntu搭建社区版seafile12.0
linux·运维·ubuntu
Xam_d_LM1 小时前
【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式
linux·ubuntu·科研·矢量图·drawio
Mintimate2 小时前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器
RussellFans2 小时前
Linux 环境配置
linux·运维·服务器
网硕互联的小客服2 小时前
503 Service Unavailable:服务器暂时无法处理请求,可能是超载或维护中如何处理?
服务器·git·github
高冷的肌肉码喽3 小时前
Linux-进程间的通信
linux·运维·服务器