From d394ba1fdf2765c920205b200751910661772bc1 Mon Sep 17 00:00:00 2001 From: LCJ-MinYa <1049468118@qq.com> Date: Fri, 7 Nov 2025 11:04:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20git=E4=BD=BF=E7=94=A8=E6=8A=80=E5=B7=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/demo/git/git.md | 159 +++++++++++++++++++++++++++++++++++ src/views/demo/git/index.vue | 18 ++++ 2 files changed, 177 insertions(+) create mode 100644 src/views/demo/git/git.md create mode 100644 src/views/demo/git/index.vue diff --git a/src/views/demo/git/git.md b/src/views/demo/git/git.md new file mode 100644 index 0000000..bb02bee --- /dev/null +++ b/src/views/demo/git/git.md @@ -0,0 +1,159 @@ +# git merge xxx --no-ff 合并分支的时候有大量冲突文件,我想要以当前分支为准,应该怎么处理 + +## 解决方案: + +在使用 `git merge xxx --no-ff` 合并分支时,如果遇到大量冲突文件,并且你希望 **以当前分支(即你所在的分支)的内容为准**,可以按照以下步骤操作: + +--- + +### ✅ 方法:以当前分支内容为准,自动接受当前分支的修改 + +#### 步骤 1:执行合并(会触发冲突) +```bash +git merge xxx --no-ff +``` + +> 此时 Git 会停止合并,提示有冲突文件。 + +#### 步骤 2:使用 `git checkout --ours` 保留当前分支的版本 +```bash +git checkout --ours . +``` + +> ✅ 这会 **自动将所有冲突文件中当前分支(HEAD)的内容保留下来**,并标记为已解决。 + +#### 步骤 3:标记冲突为已解决 +```bash +git add . +``` + +> 这会将所有“已用当前分支内容解决”的文件加入暂存区。 + +#### 步骤 4:完成合并 +```bash +git commit -m "Merge branch 'xxx' into current branch, keeping current branch changes" +``` + +--- + +### 🔍 补充说明: +- `--ours`:表示“我这边的版本”(当前分支) +- `--theirs`:表示“对方分支的版本”(你要合并进来的分支) +- `git checkout --ours .` 是最高效的方式,尤其适用于你 **只想保留当前分支内容,不关心对方变更** 的场景。 + +--- + +### 🛠️ 小技巧(可选):合并后检查是否所有冲突都解决 +```bash +git status +``` +如果输出中没有 `Unmerged paths`,说明已全部解决。 + +--- + +### ⚠️ 注意事项: +- 此方法会 **丢弃对方分支的修改**,请确保你确实不需要对方分支的内容。 +- 若你只想保留部分文件的当前分支内容,可逐个文件处理: + ```bash + git checkout --ours path/to/file.js + git add path/to/file.js + ``` + +--- + +✅ 总结: +> 用 `git checkout --ours .` 快速以当前分支为准解决所有冲突,然后 `git add .` + `git commit` 完成合并。 + +--- + +如你希望保留对方分支的某些文件,再使用 `git checkout --theirs ` 单独处理即可。 + +
+
+
+
+
+ +# git add .之后应该怎么取消这个操作 + + +## 解决方案: +如果你执行了 `git add .` 后想 **恢复**,需要根据你当前的状态来判断如何恢复。以下是常见场景及对应的恢复方法: + +--- + +### ✅ 场景 1:你只是把文件加到了暂存区(staging area),但还没有提交(commit) + +#### 想要恢复:**取消暂存,但保留工作区修改** +```bash +git reset HEAD . +``` + +> ✅ 这会把所有被 `git add .` 加入暂存区的文件 **移出暂存区**,但保留它们在工作区的修改。 + +--- + +#### 想要恢复:**完全丢弃所有修改(包括工作区)** +```bash +git reset --hard HEAD +``` + +> ⚠️ 注意:此操作会 **彻底删除所有未提交的修改**,包括工作区和暂存区,不可逆,请谨慎使用。 + +--- + +### ✅ 场景 2:你已经执行了 `git add .`,然后又执行了 `git commit`,想回退 + +#### 想要恢复:**撤销最近一次提交,保留修改在工作区** +```bash +git reset --soft HEAD~1 +``` + +> ✅ 这会撤销提交,但保留所有修改在暂存区,你可以重新 `git add` 和 `git commit`。 + +#### 想要恢复:**撤销提交,且丢弃所有修改** +```bash +git reset --hard HEAD~1 +``` + +> ⚠️ 会彻底删除提交和所有修改,不可逆。 + +--- + +### ✅ 场景 3:你误操作了 `git add .`,但还没 `commit`,想恢复到某个特定版本 + +#### 恢复到某个特定提交(比如上一个提交): +```bash +git checkout HEAD -- . +``` + +> ✅ 这会将工作区的所有文件 **恢复为上一次提交时的状态**,相当于撤销所有未暂存的修改。 + +--- + +### 🧠 总结:常用恢复命令 + +| 想要的效果 | 命令 | +|-----------|------| +| 取消暂存(保留修改) | `git reset HEAD .` | +| 恢复工作区修改(丢弃暂存) | `git checkout HEAD -- .` | +| 撤销提交,保留修改(暂存区) | `git reset --soft HEAD~1` | +| 撤销提交,丢弃所有修改 | `git reset --hard HEAD~1` | + +--- + +### 💡 小贴士: +- 用 `git status` 查看当前状态,判断你处于哪种情况。 +- `git add .` 只是把文件加入暂存区,不会影响历史提交。 +- 一旦 `commit` 了,就只能通过 `reset` 或 `revert` 回退。 + +--- + +✅ 举个例子: +```bash +# 误执行了 git add . +# 想恢复工作区为上一个提交的状态 +git checkout HEAD -- . +``` + +> 这是最安全的恢复方式,不会丢失任何历史。 \ No newline at end of file diff --git a/src/views/demo/git/index.vue b/src/views/demo/git/index.vue new file mode 100644 index 0000000..a715a59 --- /dev/null +++ b/src/views/demo/git/index.vue @@ -0,0 +1,18 @@ + + +