赞
踩
一 、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即将前一次代码的提交保留,并在前一次commit的基础上生成新的代码。
git log // 得到你需要回退一次提交的commit id
git revert <commit_id> // 撤销指定的版本,撤销也会作为一次提交进行保留
git revert 和 git reset的区别:
- git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;
- git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除。
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目录下忽略掉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。