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

Git基础教学

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

1、初始化配置

Git安装网址

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

c 复制代码
git --version

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

c 复制代码
git config --global user.name "Deng ZJ"
git config --global user.email Deng@gmail.com
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 git@github.com: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教程

相关推荐
q***13344 分钟前
Linux(CentOS)安装 Nginx
linux·nginx·centos
摘星编程8 分钟前
openGauss 快速上手:CentOS 环境下单机部署完整指南
linux·运维·centos
哈里谢顿5 小时前
使用kvm创建一台虚拟机
linux
hanyi_qwe6 小时前
文本三剑客--awk
linux·运维·服务器
Caven776 小时前
【Linux 技巧】如何在登录时自动激活 Conda Base 环境
linux·运维·conda
凌寒117 小时前
Linux(Debian)安装、卸载 MySQL
linux·运维·mysql·debian
IT小哥哥呀7 小时前
如何从 Windows SSH 进入 VirtualBox Ubuntu 虚拟机——密码认证(逐步指南)
linux·windows·ubuntu·ssh·教程·虚拟机
怀旧,8 小时前
【Linux系统编程】7. 进程的概念(上)
linux·运维·服务器
千寻技术帮8 小时前
50035_基于微信小程序的民宿管理系统
微信小程序·源码·ppt·源代码管理·项目文档·民宿
7***n758 小时前
API网关设计模式
linux·服务器·设计模式