git如何在不提交更改的情况下切换分支

时间:2017-05-03 21:21:22

标签: git branching-and-merging

我在branchX中工作,它有十几个我不想提交的配置文件。所以我将所有配置文件标记为--skip-worktree。现在我想改为branchY。我该怎么做?

我试过

var array = [
    [0,0,0],
    [0,0,0],
    [0,0,0]
];

function changeArray(i,j) {
    array[i][j] +=1;
}

changeArray(1,1); //after 1 second
changeArray(1,1); //after 2 seconds
changeArray(0,0); //after 3 seconds
changeArray(0,0); //after 4 seconds

console.log(array);

它说

git checkout branchY

所以我试图用

来藏匿它们
Please commit your changes or stash them before you switch branches.

但它说

git stash save

非常讨厌 。显然唯一的解决方案是

  1. 使用No local changes to save 获取所有skip-worktree文件的列表
  2. 对于每个文件,删除skip-worktree
  3. git ls-files -v
  4. git stash save
  5. git checkout branchY
  6. 手动解决与git stash pop
  7. 的任何冲突
  8. 对于每个文件,再次添加skip-worktree标志
  9. 有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我正在使用git 1.9.1,可以用树中已有文件的更改切换分支,然后用git update-index --skip-worktree filename跳过。

切换后文件未更改(即,未更改为我切换到的分支中的版本)。

(我会以为这是自1.7.7版本以来的行为,因为它的发行说明声明为* "git stash" learned an "--include-untracked option".,但是1.7.7版本是在您问问题之前发布的,所以我不知道。)

请注意,当尝试切换到没有文件的分支时,git仍然会抱怨

  

错误:您对以下文件的本地更改将被签出覆盖:           f1.config