git梳理一基础

5次阅读

共计 788 个字符,预计需要花费 2 分钟才能阅读完成。

这两天有个同事用 git push -f 把远端我的几次提交冲掉了,一脸懵逼,梳理一下相关问题。

git 基本知识

git 的详细教程推荐廖雪峰的 git 教程,这里只简单回顾一下相关知识。

git 管理的本地内容里,有工作区、暂存区、版本库的概念。

  • 工作区:其实就是我们直接能看到的文件。我们的修改都是直接体现在工作区的。
  • 暂存区:存放在 .git/index 目录,我们使用 git add 命令时,会把工作区的内容更新到暂存区。
  • 版本库:使用 git commit 时,会把暂存区的内容更新到版本库。

通常开发中总会有个远程仓库,使用 git push 命令会把本地版本库的内容推送到远程仓库。

下面这张图很好地反应了 git 的状态切换。

常用命令

提交相关

提交代码时常用命令有git addgit commitgit pull (--rebase)git push


另外几个就不多说了,这里讨论一下 pull 的时候 rebase 参数。

如果本地和远端都有新的提交,pull 时带 rebase 参数的话,本地与远端做的是 rebase,解决冲突后,相当于把本地的几次提交移动到远端提交之后,提交记录会更清晰。

pull 时不带 rebase 参数的话,做的是 merge,本地和远端的提交会分两条线,最终合并到一个新的 merge 节点。

我个人经历的项目来看,通常更推荐使用git pull --rebase,提交记录更清晰。

一般性回滚

1. 代码尚未 commit

没提交的时候怎么搞都是小事。视情况 checkoutreset --hardstash 命令都可以拿来用。

2. 代码已经 commit,尚未 push

通常使用 git reset 回滚到指定 commitID,注意区分混合合并(mix)/ 强行合并(hard),要保留代码时用混合合并(mix),不保留代码时可以强行合并。

3. 已 push 代码需要回滚

通常使用 git revert 创建一次回滚提交。基本原则就是不影响远端提交记录。

正文完
 0