需要一些帮助来理解Git对分支的作用吗

需要一些帮助来理解Git对分支的作用吗,git,Git,我已经使用Git几个月了。我终于掌握了提交更改和将更改推送到远程的窍门,但我不清楚分支中的文件会发生什么情况。他们没有按我期望的方式工作 假设我有一个文件index.html。如果我执行以下步骤,我希望有一个完全空白的index.html文件,但事实并非如此 在master分支机构工作 创建新分支test 签出test 打开index.html 将“测试”添加到文件中 关闭文件 再次签出master分支 删除分支test 如果我打开index.html,该test仍在我的文件中。我希望,由于我从

我已经使用Git几个月了。我终于掌握了提交更改和将更改推送到远程的窍门,但我不清楚分支中的文件会发生什么情况。他们没有按我期望的方式工作

假设我有一个文件
index.html
。如果我执行以下步骤,我希望有一个完全空白的
index.html
文件,但事实并非如此

  • master
    分支机构工作
  • 创建新分支
    test
  • 签出
    test
  • 打开
    index.html
  • 将“测试”添加到文件中
  • 关闭文件
  • 再次签出
    master
    分支
  • 删除分支
    test
  • 如果我打开
    index.html
    ,该
    test
    仍在我的文件中。我希望,由于我从未向文件提交更改,也没有将
    test
    分支合并到
    master
    分支中,因此我的
    index.html
    文件应该恢复到创建
    test
    分支之前的状态

    我一定想错了。有人能启发我吗

    如果使用
    git reset--hard MASTER
    git checkout--force
    重置本地更改,“index.html”将被还原。这些操作实际上修改了工作树

    否则,将保留工作树中的更改


    看看这个问题,我们可以了解“头”、“工作树”等术语:

    git在切换分支时的行为是保持修改后的文件不变。这使得切换到分支并将更改提交到目标分支变得很容易。从文件中

    保留对工作树中文件的本地修改,以便将其提交到工作树。()

    如果您想让您的工作区域进入master的当前状态,那么您可以在签出master后执行以下操作

    git reset --hard 
    

    谢谢那么,分支的意义是什么呢?我的理解是,您可以创建一个分支,进行修改,这些修改在您将它们合并到主分支之前不适用于您的主分支?分支点很好阅读并记住对特定提交的引用。也许在您的流程中,您忘记了执行
    git commit
    将设置保存到修改后的文件中?如果您理解正确,此提交将仅在
    test
    分支中进行,而不是在
    master
    中进行。谢谢。所以,如果我想创建一个新的分支来修改一个文件,测试它,然后决定我基本上想“撤销”我在该分支中所做的一切,我就使用git reset——难吗?如果是这样的话,是我对分支的想法不正确,还是我的工作流程值得怀疑?@Bardo_J我不想说你对分支的想法不正确。更可能的是,git与您以前使用过的大多数其他SCC系统不同。它需要一种不同的思维方式。我自己花了3个月的时间才有了正确的心态。@Bardo_J如果你想撤销更改,那么
    git reset
    是要执行的命令,如果你想更改你提交的分支,那么
    git checkout
    。但在许多方面,您可以使用这两个命令来实现非常相似的endsOK!我想我已经找到了为什么它不能像我预期的那样工作。如果我创建了一个分支,进行了更改,但没有提交它,那么我的文件的行为就像我在原始问题中描述的那样。如果我在新分支中暂存并提交这些更改,签出主分支,然后删除要素分支而不合并这些更改,则我的文件将返回到其前要素分支状态。希望这对将来的人有所帮助。