需要一些帮助来理解Git对分支的作用吗
我已经使用Git几个月了。我终于掌握了提交更改和将更改推送到远程的窍门,但我不清楚分支中的文件会发生什么情况。他们没有按我期望的方式工作 假设我有一个文件需要一些帮助来理解Git对分支的作用吗,git,Git,我已经使用Git几个月了。我终于掌握了提交更改和将更改推送到远程的窍门,但我不清楚分支中的文件会发生什么情况。他们没有按我期望的方式工作 假设我有一个文件index.html。如果我执行以下步骤,我希望有一个完全空白的index.html文件,但事实并非如此 在master分支机构工作 创建新分支test 签出test 打开index.html 将“测试”添加到文件中 关闭文件 再次签出master分支 删除分支test 如果我打开index.html,该test仍在我的文件中。我希望,由于我从
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!我想我已经找到了为什么它不能像我预期的那样工作。如果我创建了一个分支,进行了更改,但没有提交它,那么我的文件的行为就像我在原始问题中描述的那样。如果我在新分支中暂存并提交这些更改,签出主分支,然后删除要素分支而不合并这些更改,则我的文件将返回到其前要素分支状态。希望这对将来的人有所帮助。