4

2 回のチェックアウトの結果を次に示します。「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. これらのファイルが必要ないことが確実な場合は、チェックアウト -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 に答える