1.修改文件后,操作git status
显示==红色==的modified
git add .
提交暂存区,“.”可以替换为指定文件git restore .
恢复,本地文件会撤销改动的内容,“.”可以替换指定文件
2.git add后,操作git status
显示==绿色==的modified
git reset HEAD 1.txt
某个文件回滚到上一次操作,==不加文件名==则是整体回到上一次操作。此时操作git status
绿色的modified变回==红色==的modified,本地文件不会动,==代码不变,回到了步骤2之前==git checkout .
从库中取出文件,覆盖当前修改,“.”可以替换指定文件。此时操作git status
没有modified文件了,本地文件改变恢复,==代码改变,回到了步骤1之前==
3.git commit后,操作git status
显示==ahead(领先)==1个提交
-
git reset --mixed HEAD^
撤销了commit,撤销了add。==代码不变,回到了步骤2之前==。 -
git reset --soft HEAD^
撤销了commit,没有撤销add。==代码不变,回到了步骤3之前==。 git reset --hard HEAD^
本地文件改变恢复,==代码改变,回到了步骤1之前==
- HEAD^ 表示上一个版本,即上一次的commit,几个^代表几次提交,如果回滚两次就是HEAD^^。
- 也可以写成HEAD\~1,如果进行两次的commit,想要都撤回,可以使用HEAD\~2。
- git log查看提交信息,也可以是(git reset --mixed 版本号、git reset --soft 版本号、git reset --hard 版本号)
如果commit后面的注释写错了,先别急着撤销,可以运行==git commit --amend==,进入vim编辑模式,修改完保存即可。
4.git push后
与git commit后的操作一模一样,有三个操作方向(git reset --mixed 版本号
、git reset --soft 版本号
、git reset --hard 版本号
)。要理解git仓库的原理:git commit过后就是本地数据提交了仓库了,git push是提交到远程仓库,可以理解为远程仓库也做了同样的操作并且git commit了,所以两个仓库的数据保持了一致。
撤销以后再次修改本地数据,远程仓库的提交记录就与本地不一致了。要远程仓库同步需要强制提交,通过==git push origin master --force==强制提交当前版本号。