4

这是两次结帐的结果:为什么第二个结帐失败?'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)
4

3 回答 3

5

发生这种情况是因为您要更改到的分支正在跟踪当前分支上未跟踪的部分或全部文件。

例如,分支可能包含 CHANGES.txt。因为 git 不想覆盖您在工作区中拥有的文件,如果出现此错误以允许您备份本地拥有的文件。您可以:

  1. 将这些文件移到安全的地方
  2. 如果您确定不需要这些文件,可以执行 checkout -f 切换到分支(这将覆盖任何冲突的文件)

暂存不适用于当前分支上未跟踪的文件。您可以使用 git diff 确定哪些文件在 0.20 上,但不在 0.21 上。例如:

git diff --name-only branch-0.20
于 2011-09-26T11:30:26.640 回答
3

如果有一个过滤器,就会发生这种情况,在结帐时自动更改这些文件的内容。如:

core.autocrlf=true

(请参阅为什么我应该在 Git 中使用 core.autocrlf=true?

例如,如果 eol 样式自动更改,您将修改工作树中的文件。
这足以防止再次检出常见的修改文件。

正如Kit 建议的那样,您可以隐藏更改,但我建议首先了解为什么会发生这些更改。

于 2011-09-26T08:01:02.283 回答
0
git stash 
git checkout branch-0.20
git stash apply

试试上面

于 2011-09-26T08:01:49.100 回答