分支交换更新而不合并

时间:2018-07-19 15:16:21

标签: git git-checkout

我有两个工作分支:masterfeatures。我做了git checkout features,并在我的features分支上工作。我喜欢这些更改,但什么都没提交。

然后我回到主分支(git checkout master),并在完成git status之后,我在features分支的暂存区域中所做的所有更改也都在我的master分支。当我从master分支运行我的应用程序并且所做的更改在那里时,这一点得到了进一步证明。

问题是分支机构如何在不合并的情况下交换信息?首先使用分支的目的是,如果我搞砸了,我可以简单地删除分支,不用担心。发生的是,我在features分支上所做的更改已自动转移到master分支,而无需我手动执行。

2 个答案:

答案 0 :(得分:1)

从文档中

git checkout <branch>

To prepare for working on <branch>, switch to it by updating the index and the files 
in the working tree, and by pointing HEAD at the branch. Local modifications to the 
files in the working tree are kept, so that they can be committed to the <branch>.

所以你去了。您的本地修改将保留,并移至新分支,因为不需要合并。

如果您的更改发生冲突并需要合并,则不可能。在这种情况下,您会收到一条消息:

error: Your local changes to the following files would be overwritten by checkout:
        <your files here>
Please, commit your changes or stash them before you can switch branches.
Aborting

答案 1 :(得分:0)

如果您在暂存区中有未提交的更改(在分支上时)  features)关注的文件(或什至是文件的一部分-在这里我不确定)在featuresmaster分支之间尚未修改的文件(即,这两个文件在两个文件中都相同)分支),git checkout根本不会更改,而是让您更改分支(否则git可能会抱怨)。

您现在想要做的是:

  1. git checkout features
  2. git commit