【Git基础】 工作区 暂存区 版本库详解

一 、Git GUI的各区域的显示

在Git GUI中,工作区、暂存区、本地仓库以可视化形式显示,对新手十分友好,如下所示。

二、Git bush下各区域简介

先描述下各区域,其中

工作区记录了本地代码与上次提交的差异代码项,即git add 之前的代码。

暂存区记录了git add的但未git commit分支的代码。

本地仓库记录了git commit提交到本地分支的代码。

 三、如何在Git bash下中如何使用命令行进行各区域切换

1、我更改了a.c文件的代码,想把整个文件都恢复原状,需要一行一行改回来吗?

 不需要。可以使用git checkout a.c恢复。

2、我将代码git add将a.c到暂存区,想撤回咋办?

使用git reset a.c指令撤回。git reset格式如下所示。

git reset [--soft | --mixed | --hard] [HEAD]

--mixed为默认,将分支代码回退到工作区。

--soft,将分支代码回退到暂存区。

--hard,将分支代码直接删除。(慎用

[HEAD]个人理解为git中头指针的含义。

git reset a.c作用同 git reset [--mixed] HEAD

  • HEAD 表示当前版本(本地仓库中的Git版本)

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

  • 以此类推

 以前自己一直搞不清楚soft、mixed、hard的关系,和工作区、暂存区、本地仓库一对应,关系就清晰多了。

3、git commit更新到本地分支,但想回退到暂存区或工作区,该怎么办?

同第二个问题,使用git reset HEAD^或者使用git reset <commit号>,<commit号>为上一个commit号,通过git log 获取,最上端为最新的一个commit,我们要操作的是是顶部上数的第二个位置。

4、已经git push到了远程仓库,如何回退?

两种方式,一种是将前一次提交的代码保留,并在此基础上生成新的提交;另一种是将前一次提交的直接删除。

  • 强行删除远端分支:

git log // 得到你需要回退一次提交的commit id
git reset --hard <commit_id>                // 强制回退
git push origin HEAD --force  // 强制提交一次,之前错误的提交就从远程仓库删除

  •  使用git revert回退代码

git revert即将前一次代码的提交保留,并在前一次commit的基础上生成新的代码。

git log  // 得到你需要回退一次提交的commit id
git revert <commit_id>  // 撤销指定的版本,撤销也会作为一次提交进行保留

git revert 和 git reset的区别:
- git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留
- git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除

  • 在原commit基础上追加变更(推荐使用)

git commit --amend

5 、我想将工作区的某个文件还原,可以怎么做?

若对全部文件还原,可以使用git checkout .

若只对某个文件进行还原,例如APP.h,可以使用git checkout APP.h

若要放弃工作区和缓冲区所有的修改,可以使用git checkout -f

6、git 文件的三种状态分别代表什么意思?

Changes not staged for commit:更改但未提交至暂存区。

Changes to be committed:更改且已提交至暂存区,即将commit。

Untracked files:未追踪的文件。

7、对于未追踪的文件要怎么处理

对于生成的.o、.obj等中间文件,可以直接git clean -fd 删除掉;对于新增的可用文件,可以git add,将其添加到暂存区;对于一些每次都会生成的一些.o的中间文件,可以直接在.gitignore目录下忽略掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱笑的七小沐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值