git还原操作
下面是对这两个命令的详细解释:
1. git reset --hard
作用:
- 将当前分支的所有文件和提交记录还原到指定的某个提交(默认为最新提交)。
- 所有未保存的修改和未提交的内容会被清除,无法恢复!
常见用法:
bash
git reset --hard HEAD
- 把本地仓库还原到最新提交状态,所有本地的修改(包括已暂存但未提交的)都会被丢弃。
例子: 假如你改了代码还没提交,或者提交了但觉得不对,都可以用 git reset --hard HEAD
回到最近一次提交的状态。
注意:
- **不会删除未跟踪(untracked)的文件。**未被 git 管理的新文件需要用
git clean -fd
清理。
2. git pull
作用:
- 从远程仓库获取最新的代码,并把它合并到你当前的分支。
- 相当于依次执行了:
git fetch
(拉取最新远程代码)git merge
(合并到本地分支)
常见用法:
bash
git pull origin main
- 从远程
origin
仓库的main
分支拉取代码并合并到本地的当前分支。
例子: 你和同事一起开发时,同事提交了新代码到远程仓库,你需要用 git pull
把最新代码同步到你的本地仓库。
注意:
- 如果本地和远程代码有冲突,需要手动解决冲突后再提交。
总结
git reset --hard
:强制还原代码到某个状态,不可恢复,危险操作。git pull
:同步远程最新代码到本地,安全常用。
下面是一些同步最新远程分支代码的常用 Git 命令,以及它们的功能简要说明:
常用同步远程分支代码的 Git 命令
命令 | 功能说明 | 适用场景 |
---|---|---|
git fetch | 获取远程最新分支信息和提交,但不自动合并到本地分支 | 只想更新远程信息,不影响本地代码 |
git pull | 获取远程最新分支代码,并自动合并到当前分支 | 本地分支需要和远程分支保持同步,推荐常用 |
git pull --rebase | 获取远程最新分支代码,并将本地提交“挪到”远程提交之后,避免多余的 merge commit | 本地有提交但想保持提交历史整洁 |
git merge origin/<branch> | 把远程分支代码合并到本地当前分支,需要先 git fetch | 需要手动控制合并流程 |
git rebase origin/<branch> | 把本地提交“移动”到远程分支最新提交之后,提交历史更线性 | 习惯用 rebase 保持干净历史 |
实用命令示例
仅获取远程分支最新信息(不合并)
bash
git fetch origin
拉取并合并远程分支(常用)
bash
git pull origin <branch>
拉取并用 rebase 合并(让提交历史更整洁)
bash
git pull --rebase origin <branch>
先 fetch 后 merge(手动合并)
bash
git fetch origin git merge origin/<branch>
先 fetch 后 rebase(手动 rebase)
bash
git fetch origin git rebase origin/<branch>
补充知识
<branch>
通常是你要同步的分支名,比如main
、master
、develop
或功能分支名。pull
=fetch
+merge
;而pull --rebase
=fetch
+rebase
。