Git-branch切换所有未提交的更改都消失了

时间:2014-09-05 14:21:09

标签: git-branch git-commit git-stash github-for-mac git-status

我在本地git repo中的许多文件中做了很多更改。

但是当我使用mac Git-Client切换分支而没有提交更改时,会出现一个警告窗口,说明有未提交的更改,因此它将中止操作。

我以为在没有提交的情况下我无法切换到其他分支。但发生的事情是我的所有变化都消失了。

我看到使用git status终端的状态,其响应是

  

On branch branchname您的分支机构与“origin / branchname'”保持同步。

     

无需提交,工作目录清理

我试图知道Git-Client是否使用git stash将其存储为存储,并且响应为

  

没有保存的本地更改

我无法恢复该分支的未提交更改!

3 个答案:

答案 0 :(得分:3)

我想指出你应该使用 git stash list 来查看git客户端将任何内容放入存储中。 git stash git stash save

的简写

答案 1 :(得分:2)

根据这个blog,您必须在git stashing之前将任何新文件添加到索引中。

  

在开始git stashing之前,请确保添加到工作目录的所有新文件都已添加到索引中:git stash不会在工作目录中存储(保存)文件,除非正在跟踪文件(某些版本的文件)文件已添加到索引中。

This question似乎也很重要,特别是答案和评论。

  

“你需要一个干净的状态来改变分支。”仅当分支更改影响“脏文件”时才为真。

然后这个

  

对于stash方法,我输入“git stash save”,“git checkout otherbranch”,最后输入“git stash pop”。

我不熟悉GitHub Mac客户端,但它应该使用下面的git命令,这就是它中止的原因。在文件脏的时候切换分支的唯一方法是git checkout -f <branch>

我测试了GitHub Mac客户端,并在切换分支时发现它神奇地自动存储。这是confirmed in the documentation

答案 2 :(得分:0)

我遇到了同样的问题。我是git的新手...我创建了一个分支,第二天发现我没有在branchI创建中工作。我的更改未提交。我确实尝试过提交它们(git add。和git commit -m“......”)但是我得到了“你已经知道了,没有什么可以提交的。”我想这可能是因为我的工作在第二天离开了分店。在这一点上,我的工作在那里,只是没有承诺。所以我将分支切换到我的初始分支。当我这样做时 - 项目更新了,我的所有工作都没了。 git stash list 什么都不返回

切换回master,没有我的更改。我的分支没有我的更改......我只丢失了大约一天的代码。

我唯一记得的是当我做git branch时 它把HEAD列为我的位置。

我想我的工作已经不见了,我不确定我做错了什么......我意识到我在第1天开始在分公司工作,而且我不能确保我当天还在那个分店2 ...但在某些地方,我正在一个无法提交它的地方编写代码。