解决本地冲突
1. 合并分支
假设你正在 main
分支上,想要合并 feature
分支。
bash
git checkout main
git merge feature
如果两个分支都对同一文件做了不同的修改,Git 会提示你有冲突,并显示冲突文件。
2. 查看冲突文件
使用以下命令查看冲突状态:
bash
git status
输出中会显示"unmerged paths",并列出冲突的文件。
3. 手动解决冲突
打开冲突文件,查找冲突标记:
plaintext
<<<<<<< HEAD
当前分支的内容
=======
合并分支的内容
>>>>>>> feature
选择合适的内容,删除标记后保存文件。
4. 标记冲突已解决
使用以下命令将已解决的文件添加到暂存区:
bash
git add <冲突文件名>
5. 提交合并
完成合并后,提交更改:
bash
git commit -m "Resolved merge conflict between main and feature"
解决远程冲突
1. 拉取远程更新
当你从远程仓库拉取更改时,如果本地也有未提交的更改,可能会出现冲突。
bash
git pull origin main
如果有冲突,Git 会提示并显示冲突文件。
2. 查看冲突文件
同样使用:
bash
git status
3. 手动解决冲突
和本地冲突一样,打开冲突文件,解决冲突标记。
4. 标记冲突已解决
添加已解决的文件:
bash
git add <冲突文件名>
5. 提交更改
提交合并:
bash
git commit -m "Resolved merge conflict after pulling from remote"
6. 推送更改到远程
最后,将更改推送到远程仓库:
bash
git push origin main
总结
无论是本地冲突还是远程冲突,步骤都是类似的。主要是:
- 尝试合并或拉取更改。
- 检查冲突文件。
- 手动解决冲突。
- 标记解决后的文件并提交。
2. 分支合并
合并命令:
bash
git checkout main
git merge feature
-
如果不需要保留历史 :
bashgit merge --squash feature
3. 版本回退
回退到某个提交:
-
查看提交历史:
bashgit log --oneline
-
选择提交后回退:
bashgit reset --hard <commit_hash> # 永久回退
或者
bashgit reset --soft <commit_hash> # 保留文件变更
使用 revert
:
bash
git revert <commit_hash> # 创建一个新的提交来撤销某个提交
4. 版本管理
查看提交历史:
bash
git log --oneline --graph
创建标签:
bash
git tag -a v1.0 -m "Version 1.0"
推送标签到远程:
bash
git push origin v1.0
5. 删除分支
删除本地分支:
bash
git branch -d feature # 删除已合并的分支
git branch -D feature # 强制删除未合并的分支
删除远程分支:
bash
git push origin --delete feature