我有两个工作分支:master
和features
。我做了git checkout features
,并在我的features
分支上工作。我喜欢这些更改,但什么都没提交。
然后我回到主分支(git checkout master
),并在完成git status
之后,我在features
分支的暂存区域中所做的所有更改也都在我的master
分支。当我从master
分支运行我的应用程序并且所做的更改在那里时,这一点得到了进一步证明。
问题是分支机构如何在不合并的情况下交换信息?首先使用分支的目的是,如果我搞砸了,我可以简单地删除分支,不用担心。发生的是,我在features
分支上所做的更改已自动转移到master
分支,而无需我手动执行。
答案 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
)关注的文件(或什至是文件的一部分-在这里我不确定)在features
和master
分支之间尚未修改的文件(即,这两个文件在两个文件中都相同)分支),git checkout
根本不会更改,而是让您更改分支(否则git可能会抱怨)。
您现在想要做的是:
git checkout features
git commit