Git学习
· 阅读需 3 分钟
Git 使用技巧汇总
测试 git diff 功能
git diff
:查看未暂存文件与上次提交之间的差异。git diff --staged
:查看已暂存文件与上次提交之间的差异。
✅ 一句话总结:如果文件在未暂存区,使用 git diff
;如果文件已暂存,使用 git diff --staged
。
提交操作
git commit -a
:跳过git add
阶段,一键暂存并提交所有修改。git commit --amend
:撤销最近一次提交,并允许:- 使用
git add
补充遗漏的文件; - 编辑或保留原有的提交信息后重新提交。
- 使用
🔁 适用于刚提交完发现还有文件没添加,或者需要修改提交信息的情况。
文件重命名操作
git mv <原文件名> <新文件名>
:用于重命名 Git 跟踪的文件。
示例:
git mv test1.txt test.txt
撤销暂存操作
git reset HEAD <文件名>
:取消某个文件的暂存状态。
示例:
git reset HEAD README.md
📌 常用于误将某些文件加入暂存区后想将其移出的情况。
放弃本地修改
git restore <文件名>
:放弃对该文件的所有本地修改。
⚠️ 注意:该操作不可逆,请确保确实不需要这些修改后再执行。
分支切换与紧急修复流程
假设你现在正在解决问题53,当前处于 iss53
分支上,而 main
分支突然出现了问题,需要马上修复。
✅ 处理步骤如下:
-
切换回
main
分支:git switch main
-
创建一个临时分支
hotfix
来修复问题:git checkout -b hotfix
-
修复完成后,提交更改。
-
切换回
main
分支并合并修复内容:git checkout main
git merge hotfix -
删除临时分支(问题已修复):
git branch -d hotfix
-
回到
iss53
分支继续开发:git switch iss53
合并冲突说明及解决方法
⚠️ 冲突原因
当 main
和 iss53
分支同时修改了同一个文件的相同部分(例如 README.md
),Git 无法判断应该保留哪边的内容,就会提示冲突。
示例场景
- 在
main
分支下修改了README.md
并提交; - 然后切换到
iss53
分支,在此分支下也修改了README.md
并提交; - 最后切换回
main
分支,尝试合并iss53
,出现冲突。
🔧 解决步骤
-
打开冲突文件(如
README.md
),你会看到类似如下内容:<<<<<<< HEAD
This is the content from main.
=======
This is the content from iss53.
>>>>>>> iss53 -
手动编辑文件,选择你想要保留的内容,删除冲突标记。
-
添加修改后的文件到暂存区:
git add README.md
-
提交合并结果:
git commit -m "Fixed conflict"
💡 如何避免冲突?
- 保持分支同步:在修改前先拉取最新代码;
- 及时合并分支:避免两个分支长时间不合并;
- 明确分工:团队协作时尽量避免多人修改同一文件的关键区域;
- 使用 Pull Request 审查机制:提前发现潜在冲突。
✅ 实际测试说明
这是一个测试内容,当前文本是在 iss53
分支下编写完成的。之前已经与 main
分支合并。
按照预期,切换回 main
分支后,再合并 iss53
分支不会产生冲突,也就是说,在 main
分支下也能看到这段新增内容。