首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不覆盖数据的情况下进行git签出

在不覆盖数据的情况下进行git签出
EN

Stack Overflow用户
提问于 2009-08-18 02:16:52
回答 4查看 46.1K关注 0票数 32

git-checkout 如何在不覆盖数据的情况下实现?

我跑

代码语言:javascript
复制
 git checkout master

我得到了

代码语言:javascript
复制
error: Entry 'forms/answer.php' would be overwritten by merge. Cannot merge.

这是令人惊讶的,因为我不知道Git在我git-checkout时合并。我总是在命令后面单独运行git merge new-feature。如果Git在结帐时合并,这显然是不必要的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-18 02:21:31

Git警告您,窗体/responers.php在工作副本或索引中有未提交的更改。

您可以使用藏匿物保存您的更改,然后使用git-stash应用来恢复它们。

git-stash的常见用例是,您正在处理更改,但必须临时签出另一个分支以进行错误修复。因此,您可以将您的更改存储在索引和工作副本中,签出另一个分支,使bug修复、提交、签出原始分支,并且git-存储应用来恢复您的更改并在您停止的地方提取。

票数 60
EN

Stack Overflow用户

发布于 2009-08-18 09:26:30

当切换分支(使用git checkout <branch>)时,Git会对未完成的更改进行双向合并,但通常只进行简单的(树级)合并。

除了git-stash 卡尔·沃伊特兰的解决办法之外,您还可以向git结帐提供其他选项,选择以下选项之一:

  • 告诉,尝试用-m / --merge选项将未添加的更改合并到您切换到的分支。使用此选项,将完成当前分支、工作树内容和新分支之间的三路合并,您将位于新分支上。
  • 告诉git 覆盖未添加的更改,用-f选项丢弃本地更改。警告:未完成的更改将丢失!
票数 19
EN

Stack Overflow用户

发布于 2019-05-26 09:20:49

您可以执行一个git reset --soft来使您的HEAD指向新分支,但保留所有文件的原样(包括在新分支中更改的文件)。然后,您可以使用git checkout签出新分支真正需要的文件。

代码语言:javascript
复制
       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.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1291459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档