Git 常见使用错误
文章目录
错误的撤消操作
其实很多教程在讲解命令时,大都忽略了讲解如何中断操作,该如何恢复到操作前的状态。
而且大部人都是使用 GUI 客户端,客户端中更是很难找到这些撤消操作,因此很多人错误地认为撤消操作就是将所有文件的改动撤消,使工作目录变得干净,最起码是在 GUI 客户端界面内。
但实际问题是 Git 在做某些操作时,不光是修改了工作目录,还修改了其他东西,比如记录当前合并状态、变基状态等等。而这些操作都需要正确地调用 --abort
命令才能中断操作。
Git 中支持中断操作的命令
运行以下命令在帮助文件中找到所有带有 --abort
选项的命令:
- Git for Windows
|
|
- Git
|
|
以下是找到的结果:
|
|
遗漏的命令
其实有一个命令,使用频率很高,就是 git pull
。这个命令实际上等同于 git fetch
+ git merge
。
所以在执行这个命令时,如果出现问题时,需要使用 git merge --abort
来中断操作。
正确的使用方式
在做以上操作时,如果要中断操作,一定要使用对应命令的 --abort
选项。
错误的操作方式
Git 在做合并、变基等操作时,会使用暂存区与工作目录来处理。
典型的错误操作
在合并时,如果使用 git reset --hard HEAD
重置后再使用 git commit
,这次提交会是一个合并提交,同时会丢失合并分支的所有改动。
因为合并是以合并提交的形式引入其他分支的改动,这次合并提交中有另一个分支的所有改动!所以要谨慎操作。
建议
所以在做这些操作时,建议将所有工作目录中的内容清空,有以下几种处理方式:
- 使用
git stash
储藏文件改动,注意:只能储藏已追踪文件,未追踪的文件需要先git add
加入到暂存区。 - 使用
git commit
提交,可以在提交前使用git checkout -b [branch]
新建分支。 - 使用
git checkout .
重置已追踪文件;使用git clean -fd
清理未追踪文件。
总结
建议初学者在学习时,先尽量使用命令行熟悉所有操作,了解操作背后都做了什么,然后再去使用图形界面。 其实以上问题可以说是因为使用 GUI 客户端而对命令使用细节不了解导致的。