git的一些操作

2019-07-10  本文已影响0人  子心_

rm file.txt删除的只是工作区的,如果没有手动git add file.txt,就没有将删除操作添加到暂存区。现在直接git commit的话,新生成的版本库里面还是有file.txt的,可用git checkout -- file.txt恢复,而用git rm file.txt删除的自动将删除操作add到了暂存区。这时候如果git commit,新生成的那个版本库,里面就没有了file.txt。只能用版本id号恢复,即git reset --hard id

在任何分支的工作区修改后,不commit可以切换到其他分支包括master,也可以再切回去。
这就证明,未commit的工作区文件和stage文件是可以灵活地在且仅在任一branch存在的。这是前提。

  1. 在工作区做了修改,提交到DEV的分支,再切换回master——
    这时候,对master来说,工作区没有任何未提交的修正(因为所有修正都已经commit)。则工作区内容应该是与master分支最后一次提交的内容一致。(处于任何其他时间点,都意味着工作区可能存在修正,这就出现了矛盾)
  2. 在工作区做了修改,没有提交到DEV分支,即切换回master——
    这个时候,对master来说,工作区有了修正,那么就保持工作区的现有状态即可。

pull:本地 <-- 远程
push:本地 --> 远程
本质上都是同步commit
如果你本地落后远程,必然要pull
如果你本地超前远程,必然要push

git add test.txt 
git commit -m 'add test.txt'
rm test.txt                误删了
git checkout -- test.txt                恢复了
然而
git rm test.txt               用git命令删除一个文件
git commit -m 'remove test.txt'           并且确认了这个删除
git checkout -- test.txt           再用这个命令试图恢复是会报错
但是,
可以用下面的命令去某一个git commit之后的版本
git log --pretty=oneline           看看目前都有哪些版本? 坐时光机回去
git reset --hard HEAD^      回到上一个版本
上一篇 下一篇

猜你喜欢

热点阅读