git-checkout 如何在不覆盖数据的情况下实现?
我跑
git checkout master我得到了
error: Entry 'forms/answer.php' would be overwritten by merge. Cannot merge.这是令人惊讶的,因为我不知道Git在我git-checkout时合并。我总是在命令后面单独运行git merge new-feature。如果Git在结帐时合并,这显然是不必要的。
发布于 2009-08-18 02:21:31
Git警告您,窗体/responers.php在工作副本或索引中有未提交的更改。
您可以使用藏匿物保存您的更改,然后使用git-stash应用来恢复它们。
git-stash的常见用例是,您正在处理更改,但必须临时签出另一个分支以进行错误修复。因此,您可以将您的更改存储在索引和工作副本中,签出另一个分支,使bug修复、提交、签出原始分支,并且git-存储应用来恢复您的更改并在您停止的地方提取。
发布于 2009-08-18 09:26:30
当切换分支(使用git checkout <branch>)时,Git会对未完成的更改进行双向合并,但通常只进行简单的(树级)合并。
除了git-stash 卡尔·沃伊特兰的解决办法之外,您还可以向git结帐提供其他选项,选择以下选项之一:
-m / --merge选项将未添加的更改合并到您切换到的分支。使用此选项,将完成当前分支、工作树内容和新分支之间的三路合并,您将位于新分支上。-f选项丢弃本地更改。警告:未完成的更改将丢失!发布于 2019-05-26 09:20:49
您可以执行一个git reset --soft来使您的HEAD指向新分支,但保留所有文件的原样(包括在新分支中更改的文件)。然后,您可以使用git checkout签出新分支真正需要的文件。
git reset [<mode>] [<commit>]
This form resets the current branch head to <commit> and possibly updates the index (resetting it to the
tree of <commit>) and the working tree depending on <mode>. If <mode> is omitted, defaults to --mixed.
The <mode> must be one of the following:
--soft
Does not touch the index file or the working tree at all (but resets the head to <commit>, just like
all modes do). This leaves all your changed files "Changes to be committed", as git status would put
it.https://stackoverflow.com/questions/1291459
复制相似问题