为什么'git checkout'仅适用于某些分支机构?

Pra*_*ati 4 git git-checkout

这是两次结账的结果:为什么第二次结账失败?'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)
Run Code Online (Sandbox Code Playgroud)

and*_*vin 5

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

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

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

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

git diff --name-only branch-0.20
Run Code Online (Sandbox Code Playgroud)