以下是两次结账的结果:为什么第二次结账失败? 'git status'显示某些文件已被修改,但我确定我没有触及这些文件。
praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git checkout branch-0.21
Switched to branch 'branch-0.21'
praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git checkout branch-0.20
error: The following untracked working tree files would be overwritten by checkout:
CHANGES.txt
LICENSE.txt
README.txt
bin/hadoop
bin/hadoop-daemon.sh
bin/hadoop-daemons.sh
Please move or remove them before you can switch branches.
Aborting
praveensripati@MyMini:~/Hadoop/Git/hadoop-common$ git status
# On branch trunk
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# CHANGES.txt
# LICENSE.txt
# README.txt
# bin/
# build.xml
# conf/
# lib/
# site/
# src/
nothing added to commit but untracked files present (use "git add" to track)
答案 0 :(得分:5)
这是因为您想要更改的分支正在跟踪当前分支上未跟踪的部分或全部文件。
例如,分支可能包含CHANGES.txt。因为git不想覆盖您工作区中的文件,如果给出此错误以允许您备份本地文件。你可以:
存储不适用于当前分支上未跟踪的文件。您可以使用git diff来确定哪些文件在0.20但不在0.21上。例如:
git diff --name-only branch-0.20
答案 1 :(得分:3)
如果有过滤器,可以在结帐时自动更改这些文件的内容。如:
core.autocrlf=true
(见Why should I use core.autocrlf=true in Git?)
例如,如果自动更改eol样式,您将在工作树中修改文件 这足以阻止使用常见修改文件进行另一次结账。
答案 2 :(得分:0)
git stash
git checkout branch-0.20
git stash apply
尝试上面