git - 一个分支和从它创建的另一个分支是否会继承彼此的更改?

标签 git

以下是我的观察:

  • 当我对分支上的某些文件进行未暂存的更改(之后不运行 git addgit commit ),然后通过 git checkout -b newbranch 创建新分支时,新分支也会“继承”我对原始分支的更改。

  • 当我在一个分支上,然后创建一个新分支,并对新分支上的一些文件进行未暂存的更改,然后通过 git checkout originalbranch 切换回原始分支时,原来的分支也会从新分支“继承”我的更改。

我不确定我的观察是否正确。

如果我的观察是正确的,它们对我来说没有意义,因为当我们从另一个分支创建一个分支时,我们通常希望对它们进行单独的工作。如果一个分支继承了另一个分支的更改,那么我们在一个分支上所做的工作将不会与另一个分支分离。那么为什么要“继承”呢?

最佳答案

So why is the "inheritance"?

Git 不会将当前工作目录(即更改)存储在分支中,每个分支也没有自己的暂存区域。两者对于 git 存储库来说都是“全局”的。因此,当您切换到另一个分支时,git 可以选择忽略所有更改并删除它们,或者尝试将它们应用到您要切换到的分支上。由于 git 不想在没有您明确要求的情况下删除您的工作,因此 git 默认保留它们并将它们重新应用到另一个分支上。您当然可以提交或 stash 它们,然后在 checkout 后您将拥有干净的分支。

关于git - 一个分支和从它创建的另一个分支是否会继承彼此的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847241/

相关文章:

GitHub 的 Atom 编辑器中的 Git 分支指示器

svn - 使用 git-svn 忽略 svn 存储库中的文件?

php - 如何使用 composer 在团队中开发 PHP 包?

Git 将 master merge 为没有提交历史的孤儿

git - 有什么办法可以撤销 "git revert head"的影响吗?

git - 如何从已知主机列表中删除永久添加的主机?

git - 使用 VSTS API 在 VSTS 中的持续集成/持续交付过程中将文件提交到 Git

node.js - 超音速框架中的项目创建错误

git - Gerrit:有没有办法将最高提交推送到同一个分支?

git - Heroku 推送被拒绝