通过跟踪文件和最佳实践来解决
有时,未跟踪的文件是不可丢弃的;它们是你想要保留的工作。在这种情况下,正确的方法是通过提交将文件添加到 Git 的跟踪系统。本节还涵盖了防止此错误首次发生的最佳实践。
首先,让我们回到 main 分支并重新创建我们的冲突文件。
cd ~/project/git-checkout-demo
git checkout main
echo "## My local changes to feature documentation" > feature.md
方法:跟踪文件
如果未跟踪的文件很重要,你应该将其提交到当前分支。
-
将文件添加到暂存区。
git add feature.md
-
提交暂存的文件。
git commit -m "Add local version of feature.md"
现在你的更改已安全提交到 main 分支,Git 可以处理切换操作。当你检出 feature-branch 时,Git 将简单地用该分支的版本替换工作区文件。
git checkout feature-branch
检出成功。你的已提交更改安全地保存在 main 分支的历史记录中。
最佳实践:使用 .gitignore
为了防止某些文件(如日志、构建产物或环境文件)被跟踪,你应该使用 .gitignore 文件。Git 将忽略任何匹配 .gitignore 中模式的文件或目录,从而防止它们成为冲突的未跟踪文件。
让我们创建一个 .gitignore 文件来忽略所有 .log 文件。
## 切换回 main 以添加 .gitignore 文件
git checkout main
## 创建 .gitignore 文件
echo "*.log" > .gitignore
现在,创建一个日志文件。
touch app.log
检查状态。
git status
请注意,app.log 没有显示为未跟踪文件。但是,.gitignore 文件本身是未跟踪的。
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
你应该始终提交你的 .gitignore 文件,以便规则在整个项目中共享。
git add .gitignore
git commit -m "Add .gitignore to ignore log files"
通过频繁提交和有效使用 .gitignore,你可以显著降低遇到此检出错误的几率。