git流程控制


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之前==
  1. HEAD^ 表示上一个版本,即上一次的commit,几个^代表几次提交,如果回滚两次就是HEAD^^。
  2. 也可以写成HEAD\~1,如果进行两次的commit,想要都撤回,可以使用HEAD\~2。
  3. 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==强制提交当前版本号。