Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git分支影响主机_Git_Git Branch - Fatal编程技术网

Git分支影响主机

Git分支影响主机,git,git-branch,Git,Git Branch,我正在android上做一个谷歌地图项目,我需要将地图更新到新的v2版本,因此我创建了一个带有 git add -u git commit -m 'xxxyyyzzz' git checkout -b MapsV2 然后我意识到我需要在主分支上快速修复一些东西,所以我跑了 git checkout master 在结帐后,我发现我在MapsV2分支中的所有更改在主分支上都完好无损 为了提供更多的上下文,master是我们的主要分支,而MapsV2是新mapsapi的研究分支 我做错了什么?默

我正在android上做一个谷歌地图项目,我需要将地图更新到新的v2版本,因此我创建了一个带有

git add -u
git commit -m 'xxxyyyzzz'
git checkout -b MapsV2
然后我意识到我需要在主分支上快速修复一些东西,所以我跑了

git checkout master
在结帐后,我发现我在MapsV2分支中的所有更改在主分支上都完好无损

为了提供更多的上下文,master是我们的主要分支,而MapsV2是新mapsapi的研究分支


我做错了什么?

默认情况下
git checkout
不会重置工作目录的状态,为此,您需要在签出后使用
git reset--hard
。注意,这将重置您的索引和工作目录,这样您可能会丢失所有未提交的更改

默认情况下,
git checkout
不会重置工作目录的状态,为此,您需要在签出后使用
git reset--hard
。注意,这将重置您的索引和工作目录,这样您可能会丢失所有未提交的更改

(我假设在开始发出命令序列之前,您在
master
分支上。)

您在创建新分支之前进行了提交。因此,对
master
进行了这些更改。然后,您从
master
创建了新的
MapsV2
分支,因此该分支也有更改。

(我假设您在开始执行您发出的命令序列之前在
master
分支上。)


您在创建新分支之前进行了提交。因此,对
master
进行了这些更改。然后,您从
master
创建了新的
MapsV2
分支,因此,该分支也有更改。

为什么在提交后创建分支?因为我也向master提交了一些我希望在MapsV2分支上进行的更改。为什么在提交后创建分支?因为我向master提交了一些我希望在MapsV2分支上进行的更改。或者,在签出master之前,您可以
git隐藏在分支上。这意味着如果我想在分支之间交换,我必须在重置之前隐藏我的工作或提交它?有点违反直觉,但我想它有它的reason@Machinarius:Git只能记住您提交的内容(将其存储在单独的存储中类似于提交)——如果您不提交更改并将更改保存到另一个分支,那么您希望Git如何处理未提交的内容?是的,您绝对正确。这就是git stash在这里的原因,因此当您迫切需要切换到其他内容时,您可以保存更改以供以后提交。或者,您可以在签出master之前
git stash
在分支上。这意味着如果我想从一个分支切换到另一个分支,我必须在重置之前隐藏我的工作或提交它?有点违反直觉,但我想它有它的reason@Machinarius:Git只能记住您提交的内容(将其存储在单独的存储中类似于提交)——如果您不提交更改并将更改保存到另一个分支,那么您希望Git如何处理未提交的内容?是的,您绝对正确。这就是为什么git stash在这里,所以当您迫切需要切换到其他内容时,您可以保存更改以供以后提交。我可能还不够清楚:在切换到MapsV2之后,我做了一些更改,然后当它们在那里时,我又切换回master。那么anydot的答案是正确的。处理这种情况的标准方法是在切换回master之前
git stash
。这正是
stash
的设计目的。我可能还不够清楚:在切换到MapsV2后,我做了一些更改,然后在它们出现时切换回master。那么anydot的答案是正确的。处理这种情况的标准方法是在切换回master之前
git stash
。这正是
stash
设计的目的。