【Git操作】—— 从0开始的Git操作指南

Git 操作指南

管理系统分为集中式管理系统和分布式管理系统

集中式管理系统:所有文件保存到中央服务器上,每个设备上只保存一个副本,每次更新,需要从中央服务器上下载最新的副本,然后传回到中央服务器;

缺点:网络连接出现错误,无法工作;

分布式管理系统:分布式管理系统不需要中央服务器,每个设备都是一个完整的版本库,可以在本地进行修改;

1 Git 简介

git是目前世界上最先进的分布式版本控制系统

2 在windows上安装Git

在官网直接下载安装Git - Downloads (git-scm.com)

完成安装后

打开终端win+r,输入cmd打开终端,输入git -v可以看到git的版本,安装成功

image-20240510152620602

打开Git Bash,显示安装成功

3 Git使用

Git使用方式:

  1. 命令行(最基本)
  2. 图形化界面(GUI)
  3. IDE (vscode)

3.1 Git 命令行配置

在命令行输入命令,注意:该命令只需要输入一次

$ git config --global user.name"你的Github用户名"
$ git config --global user.email"github邮箱“
$ git config --global credential.helper store //保存用户名和密码
$ git config --global --list                  //查看config配置信息

2.修改

//覆盖的形式
$ git config --global user.name "yourname"
$ git config --global user.email "your@email.com"
//替换的形式
$ git config --global --replace-all user.name "yourname"
$ git config --global --replace-all user.email "your@eamil.com"

3.删除

$ git config --global --unset user.name "yourname"
$ git config --global --unset user.name "your@eamil.com"

git config 命令是--global表示你这台机器上的所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和email地址

4 创建仓库(版本库)

repository 这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,添加等操作,Git都能跟踪,方便任何时候可以追踪历史或者还原到之前的某一个版本。

创建仓库的方式:

  1. 在自己电脑本地直接创建一个仓库;
  2. 从远程服务器上克隆一个已经存在的仓库;

4.1 使用命令创建仓库

1.在本地创建一个仓库(文件夹),选择Git Bash打开

image-20240510155800643

2.使用git init命令把这个目录变成Git可以管理的仓库

可以看到,在文件家中出现了隐藏文件.git,同时,命令行发生了变化,master表示当前所在分支

image-20240510160101128

$ ls -a //查看当前目录所有文件,包含隐藏文件

image-20240510160328438

注:该目录是隐藏的,需要打开隐藏文件夹

3.查看.git文件中包含文件

使用cd .git进入.git文件目录下,使用ls -altr查看所有文件

image-20240510160637133

注意:$ git init 会在文件夹中出现一个隐藏的文件.git,这个文件是用来Git来跟踪管理版本库的,没有特殊情况,不允许更改。

git init命令可以指定文件夹,会在Cpp_project目录下创建my_project的git仓库

$ git init my_project

image-20240510160955323

4.2 git clone 命令同步远程仓库

可以使用git clone命令同步创建仓库

image-20240510161308588

将Github上的仓库同步到本地仓库,可以看到,该目录下存放同步的文件

image-20240510161412585

5 Git 工作区域和文件状态

使用Git操作,首先我们需要知道Git的几个工作区域和文件状态

5.1 工作区域

主要分为:

  1. 工作区:工作目录或者本地工作目录,就是自己电脑上的目录,.git所在的目录;
  2. 暂存区:工作区中的隐藏目录**.git**,是Git的版本库,版本库中有个最重要的称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的指针head。用于临时保存即将提交到Git仓库的修改内容,中间区域;
  3. 本地仓库:本地仓库,就是通过git init创建的目录,存储代码和版本信息的主要文职;

工作流程:

把文件往Git版本库添加的时候,是分两步执行的:

  1. 当在工作区完成修改后,git add将他们添加到暂存区;

  2. 使用git commit提交修改,实际上是把暂存区的所有内容提交到当前分支;

    因为在创建Git版本库,Git会自动创建了master分支,所以,git commit就是往master分支上提交更改;

    image-20240510162351422

举例:

1.在工作目录创建readme.md文件,内容随便写;

image-20240510163616917

使用git status查看状态,可以看到readme.md文件从来没被添加过,他的状态是Untracked;

image-20240510163911926

  1. 使用 git add,把readme.md进行添加,再git status查看,可以看到,暂缓区添加了readme.md文件,git add命令将提交的所有修改放到暂缓区(Stage),然后执行git commit 可以把一次性暂缓区的所有修改提交到分支;

image-20240510164140826

  1. git commit提交到分支;

image-20240510164416600

​ 如果工作区没有任何修改,那么工作区是干净的;

image-20240510164554493

5.2 文件状态

文件状态主要分为4类:

  1. Untrack(未跟踪):新创建的,未被Git管理的文件;
  2. Unmodified(未修改):已经被Git管理起来,但是文件内容没有变化;
  3. Modified(已修改):修改了的文件,还没添加到暂存区;
  4. Staged(已暂存):修改之后,添加到暂存区内的文件;

image-20240510165010944

6 添加和提交文件

git init  	//创建仓库
git status 	//查看仓库状态
git add 		//添加到暂存区
git commit	//提交
  1. 创建一个文件,创建方式按照自己的方式即可,可以在文件夹中看到创建了file.txt 文件;
$ echo "这是第一个文件">file.txt
$ ls 						//查看文件
$ cat file.txt 	//查看文件内容
$ git status 		//查看仓库状态

image-20240510165812328

  1. git add 命令将文件放到暂存区
git add file.txt  
git status 										//再次查看当前状态

git restore --staged file.txt //撤销暂存区的文件
  1. git commit 提交到仓库

git commit 只会提交暂存区中的文件,不会提交工作区中新的文件,红色是未跟踪的状态;image-20240510171108841

git commit -m "your message"提交

git commit -m "your message"

image-20240510171318766

提交完成后,再次查看仓库状态,可以看到,绿色的file.txt已经不见,红色还在;

git add *.txt		//将以txt结尾的文件提交到暂存区
git add .       //将当前文件夹下的所有文件都添加到暂存区

注:使用git commit不使用-m来提交,会进入vim界面交互信息

使用i输入提示信息,用ESC返回到命令模式,输入:wq保存退出;

image-20240510172447950

  1. 使用git log查看提交记录
git log --oneline  //查看简介的提交记录

7 时间回溯版本

7.1 git reset 的三种模式

git reset					//回退命令,退回某一版本
git reset --soft	//回退某一版本,保存工作区和暂存区的修改内容
git reset --hard	//回退某一版本,丢弃工作区和暂存区的所有修改内容
git reset --mixed	//回退某一版本,只保留工作区的修改内容,丢弃暂存区

image-20240510173303492

git reset --hard HEAD^ //回退上一个版本
git reset --hard HEAD^^//回退两个版本
git reset --hard HEAD~100//回退100个版本

注意:谨慎使用hard参数

若是不小心误操作,没有关系,Git中的操作都是可以回溯的

git reflog //查看我们的操作的历史记录

8 常用文件操作

8.1 git diff 查看工作区 暂存区 本地仓库之间的差异

  1. 使用git log --oneline查看提交记录;

image-20240510174824208

  1. 修改 file.txt中的内容;
vi file.txt		//修改file.txt中的内容
  1. 使用git diff, 第一行提示发生变更的文件,第二行显示哈希值,绿色显示添加的内容,红色显示删除的内容;

image-20240510175402436

  1. 添加到暂存区,再使用git diff发现不显示内容,表示暂存区和工作区内容是相同的;

image-20240510175627209

  1. 比较工作区和版本库之间的差异,git diff HEAD

image-20240510175809296

  1. 比较暂存区和版本库之间的差异,git diff --cached

image-20240510180141395

  1. 暂存区提交到版本库git commit -m "success",再次比较,无显示;

image-20240510180303205

  1. 比较两个特定版本之间的差异
git log --oneline		//查看当前仓库提交记录
gif diff 版本id1 版本id2
git diff HEAD~ HEAD		//比较当前版本与上一版本
git diff HEAD^ HEAD   
git diff HEAD~2 HEAD //比较当前版本与上两个版本
git diff HEAD~2 HEAD file.txt //指定文件的差异内容

image-20240510180953892

8.2 删除版本库文件

ls -ltr 		//查看版本库文件
rm file03.txt //删除工作区指定文件, 此时工作区和版本库不一致
git status 	//查看仓库状态

image-20240510183837102

​ 可以看出已经删除了file03.txt,但似乎提示工作区和版本库中不一致,但是提示git add 更新暂存区;

git ls-files				//查看暂存区中文件,暂存区中文件并未删除
git add/rm file.txt	//再删除暂存区,删除暂存区的file03.txt
git add .						//再删除暂存区
git commit -m "delete file03.txt"				//再次提交	

image-20240510183804629

image-20240510184051066

流程:删除工作区中文件,更新暂存区,删除暂存区中文件,再git commit提交,文件从版本库中删除

Git 提供了更优的选择,使用git rm删掉,并且git commit,这样文件就从版本库中删除了;

  1. git rm <file>工作区和暂存区同时删除
git rm file01.txt	//删除文件
git status 		//查看状态	 删除
ls						//查看工作区 删除
git ls-files	//查看暂存区 删除
  1. 再次提交
git commit -m "delete file"

image-20240510183040111

总结:删除后注意不要忘记git commit -m 提交

9 GitHub远程仓库操作

首先,你得有一个GitHub账号!先去注册一个账号吧~

9.1 配置SSH密钥

使用SSH方式,必须要配置SSH密钥。

使用git clone 命令 加上仓库地址 ,第一次使用SSH命令克隆,会出现:

一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为使用SSH连接,而SSH连接再第一次验证GitHub服务器,需要要整密钥,输入yes即可

  1. cd 回到用户根目录,cd .ssh 进入到.ssh这个目录

image-20240510190213444

  1. 使用ssh-keygen -t rsa -b 4096命令

image-20240510190409715

​ **注意:如果是第一次使用这个命令,直接回车即可,他会在根目录下生成一个id_rsa的密钥文件,但是如果你已经配置过SSH密钥了,最好不要直接回车,会直接覆盖密钥文件,因此需要重新输入一个新的文件名如:test **

image-20240510190719422

ls -ltr显示文件目录,这样我们的密钥生成了

image-20240510190827828

test 是私钥文件

test.pub 是公钥文件,打开公钥文件,复制公钥文件的内容,回到GitHub中,在右上角头像Setting—> SSH and GPG keys—>New SSH key,将在公钥文件复制的内容粘贴到下面的输入框中,添加成功,SSH密钥配置完成;

注意:如果你是第一次配置密钥,没有更改默认文件,那么已经配置完成

### 9.2 提交文件
  1. 从远程仓库下载下来的文件,可以看到,本地仓库已经同步

  1. git add .添加文件到暂存区,git commit -m提交;

image-20240510192907222

  1. git ls-files查看仓库状态,可以看到仓库里多了一个文件,但是这只是本地仓库的状态,并未提交到远程仓库中;

​ 这是因为,远程仓库和本地仓库是两个仓库,他们之间是相互独立的,因此需要一个机制同步本地仓库和远程仓库的修改内容;

image-20240510193129382

​ 4. git pullgit push

git push //将本地仓库的修改推送到远程仓库
git pull //将远程仓库的修改拉取到本地仓库

image-20240510193356691

  1. 切换分支
$git branch -m master main
  1. 复制URL,回到命令行,看一下本地仓库,将本地仓库与远程仓库连接起来

​ 在zl_cpp_project文件中创建了file.txt文件,git addgit commit

​ 和GitHub关联起来git remote add origin <url>

$git remote add origin  Github仓库地址

​ 执行完成后,使用git remote -v查看

image-20240510195033006

git clone url //下载远程仓库

新建一个文件夹my_project,进行git addgit commit

image-20240510201904798

git push -u origin main 本地与远程进行关联

git push -u origin main
git remote -v

如果远程仓库修改了一些内容,拉去远程仓库内容:

git pull origin main

image-20240510203619507

// git fetch命令 只获取远程仓库的修改
  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值