使用git进行分支的正确方法

时间:2012-11-20 16:04:31

标签: git version-control branching-and-merging

所以我创建了一个名为branch-a的新分支,然后切换到它。我做了一些修改,切换回master以确保自那以后没有进行任何更改,但是我看到了我在master分支中的branch-a中所做的所有修改。这是正确的吗?如果我在分支-a中制作所有我的mod而没有合并,我希望master不会有任何修改。这就是我的所作所为:

从一个干净,最新的主分支开始。

  1. git branch -b branch -a
  2. 进行修改
  3. git checkout master
  4. git status
  5. 我看到我在branch-a
  6. 中做的所有修改

    这是对的吗?是因为我在切换到master之前没有提交branch-a吗?

2 个答案:

答案 0 :(得分:2)

我想在2和3之间缺少一步。:

2a上。添加并提交更改:

git add -A
git commit -m "describe your changes" 

第一个命令将所有已更改的文件添加到索引中 第二个命令提交索引中的所有内容。

现在您可以切换回master

编辑:检出分支会更改您的更改将被提交到的存储库(并将工作目录中未更改的文件与分支的HEAD同步)。未更改的更改仍保留在工作目录中,添加的更改仍保留在索引中。在你这样说之前不会发生合并。如果这不能澄清事情,请查看the opening part of this article for a great explanation of git trees

答案 1 :(得分:0)

使用git branch将创建分支的操作​​与实际切换分开。此外,您需要在分支上存在更改之前提交更改。

git branch -b branch-a

这会创建一个名为branch-a的分支,但不会将其检出,因此您仍然在master。如果您想使用branch-a,则需要在此处执行git checkout branch-a,或将上述命令替换为git checkout -b branch-a master

make modifications

假设您在要加入的分支上,此时git add <modified files>; git commit实际上将在包含这些更改的分支上创建新提交。

git checkout master

你已经在掌握了,所以这可能没什么用。 git尝试不会丢失未提交的更改,因此您的工作目录应该仍然与之前相同 跑git checkout

git status

应报告您在master,并列出您所做的未提交的更改。

I see all the modifications that I made in branch-a

您会看到所做的所有修改,但未在branch-a中进行修改。