GIT——乱乱的理解

帮助理解的

从觉得说的清晰的拿来,我也是很方。


hello 工作区hello 缓存区空

hello world 工作区hello world缓存区空

git add 工作区hello world 缓存区helloword

hello world123 工作区hello world123 缓存区helloword

git commit 工作区hello world123 缓存区helloword 提交到git helloword


应该把rm \和add看成是一种对应的命令


① 修改后 未add(添加到暂存区) 需要撤销修改时:

git checkout -- myfile.txt 或 手动删除工作区修改 工作区 : clean 暂存区: clean

② 修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:

git checkout -- myfile.txt (将暂存区恢复到工作区) 暂存区有第一次的修改需要commit

③ 修改后 add了(未commit),需要撤销修改时:

git reset HEAD myfile.txt (将暂存区修改删除) 此时工作区的修改还未撤销 git checkout -- myfile.txt (撤销工作区修改)

④ 修改后 add并commit了,需要撤销修改时:

git reset --hard HEAD^ (版本回退)**



git reset HEAD filename 是用master里最新文件(也就是head指向的文件)覆盖 stage 的文件。

git checkout 是用 stage 的文件覆盖 工作区的文件。如果stage文件已经commit 到 master,则相当于用master 文件覆盖工作区文件。

1).从工作目录,提交到stage。2).从stage提交到master。

从工作目录提交到stage,需要用add或者rm命令,只提交到stage,而没有提交到master,是不会自动同步到master的。

从stage提交到master用commit命令。

退回也是要分两步,一个是从master退回到stage,然后再从stage退回到工作目录。

对于还没有提交到stage的,可以从stage用checkout命令退回,这一步会取stage中的文件状态,覆盖掉工作目录中文件的状态,跟master完全没关系。

对于已经到达stage的,想把state中的文件状态用master中的覆盖掉,就用reset命令,这样就把stage中修改用master的状态覆盖掉了


假定HEAD版本为版本1

1、工作区你修改了,为 版本2 ,但没add,那么 checkout 就会使你工作区回到版本1

2、工作区你修改了,为版本2,add了,stage区也为版本2,然后你又修改了工作区,为版本3,没再次add,那么checkout就会使你stage区的版本2失效,理解为清空也行,但是工作区依然版本3


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值