feat: git使用技巧

master
LCJ-MinYa 2 months ago
parent b254d008fc
commit d394ba1fdf

@ -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 <file>` 单独处理即可。
<br/>
<br/>
<br/>
<br/>
<br/>
# 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 -- .
```
> 这是最安全的恢复方式,不会丢失任何历史。

@ -0,0 +1,18 @@
<template>
<div
class="markdown-body"
v-html="htmlStr"
/>
</template>
<script setup>
import { ref } from 'vue';
import { marked } from 'marked';
import { getMarkdownContent } from '@/utils/tools';
const htmlStr = ref('');
getMarkdownContent('./md/git.md').then((res) => {
htmlStr.value = marked(res);
});
</script>
Loading…
Cancel
Save