Git使用笔记

用了一段时间的TortoisGit,基本能满足目前的需求。但是当切换到linux的工作环境时,就有点不知所措了,于是又复习了一下git的命令,相对于第一次学习,又有了新的认识。

1.关于工作区,暂存区,版本库

工作区(Working Tree):所有有改动的文件都存在于工作区。
暂存区(Index):对于已经存在于工作区的文件,执行git stage filename后,文件会保存到暂存区中。刚添加跟踪的新文件也存在于暂存区。
版本库:执行git commit 后会将暂存区中的修改提交到版本库。

2.git add 和 git stage

在学习过程中因为没搞清git add的作用导致担误了不少时间,最后发现git 的 add命令本就是一个不直观的命令,它有两个不同的作用:
1. 用于添加跟踪一个文件。
2.用于将工作区的文件添加到暂存区。

于是git 的后续版本中添加了git stage代替git add的第2个作用,但为了保持和以前的兼容,git add还保持着之前的用法,在很多教程中都没用使用git stage,导致不利于理解。同时还添加了git diff –staged替代git diff –cached。

3. ~与^

~ 和 ^ 都代表某提交的上一次提交, ~1 == ~^1 == ^ 。~2代表上上次提交,如果当前提交为多个分支合并而来,则^n(n = 1 ,2 ,3 ,4…)分别代表这些分支上的上一次提交。

4. git diff的用法

一次commit 之后,执行git stage filename 添到暂存区之后,再进行一些修改,此时执行git diff ,并添加不同的参数,会有以下区别:
1.git diff 显示当前工作区的文件和暂存区的差异
2.git diff –staged 显示暂存区和HEAD的差异
3.git diff HEAD 显示工作区和HEAD的差异

5. git reset

当希望回退到某个状态(commit, tag 等)时,使用git reset。有3个选项:
1. –soft 将HEAD指向目标commit,并且暂存区和工作区会增加HEAD和目标状态的差异,也就是说即使使用git reset –soft, commit的结果都是一样的,只是会删除某些commit记录。
2. –mixed(默认) 与soft的区别在于,mixed会重置暂存区(将修改放回工作区),并且工作区会增加HEAD和目标状态的差异。因此,git reset 可以作为git stage的反向操作。
3. –hard 回退到某个状态,重置工作区和暂存区,目标状态之后的所有更改都会丢失。

6. git checkout

git checkout filename (当filename与分支同名时,需要在filename前加–)则是回退到上一次stage时的状态。

7. 关于hunk

hunk代表一个diff中一段连续的改动,git stage 就可以通过添加 -p选项以hunk为单位添加到暂存区。该功能可以用来在开发一个功能时,突然需要修复一个之前提交中bug,修改完成后添加到暂存区,先提交修复的bug,然后再提交当前实现的功能。

8.直接提交

使用git commit -am ” ” 直接提交工作区。

9.改变最近一次提交

对于你的最近一次提交,你经常想做两件基本事情:改变提交说明,或者改变你刚刚通过增加,改变,删除而记录的快照。
git commit –amend


持续更新

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值