2016-05-04 16 views
1

如何结账而不修改文件?Git - 如何结账无需修改文件?

有没有可以做以下事情的git命令?

~/target-dir (some-branch)$ mkdir /tmp/tmp-target-dir 
~/target-dir (some-branch)$ cp -r * /tmp/tmp-taregt-dir 
~/target-dir (some-branch)$ git checkout -f master 
~/target-dir (master)$ cp -r /tmp/tmp-target-dir/* . 
+1

您可以藏匿,退房,然后在弹出的藏匿 – Rob

+0

我会,如果我使用藏匿解决冲突。 –

+0

是的,但在解决冲突时,您始终可以选择正确的版本 – Rob

回答

1

我必须解决冲突,如果我用藏匿

然后另一个方法是:

  • create a second working treegit worktree(GIT 2.5+,最好的git 2.8 +):

    cd /targetdir 
    git worktree add ../master master 
    
  • 从某些分支工作树到主工作树添加文件

    cd ../master 
    git --work-tree=../targetdir add -A . 
    

这样一来,你可以做一个git diff,看看通过导入some-branch工作树添加/修改/删除的内容,进入master工作树。

1

使用复位(--soft不触及索引文件或工作树,不过在头复位到<提交>):

git reset --soft master

它重置当前分支(如果是不是主人)不接触文件。

但似乎更接近你问是头移动到另一个分支,而藏在心里的是,只是简单地说:

git symbolic-ref HEAD refs/heads/master

0

正如我从你写的代码看,你想所有的东西复制从some-branchmaster,所以实际上要合并到some-branchmaster

~/target-dir (master)$ git merge --no-ff some-branch 

--no-ff标志让英语新你会得到合并提交,你将能够清楚地区分它。

如果在合并过程中你面对冲突 - 你只需要处理他们