我在本地git repo中的许多文件中做了很多更改。
但是当我使用mac Git-Client切换分支而没有提交更改时,会出现一个警告窗口,说明有未提交的更改,因此它将中止操作。
我以为在没有提交的情况下我无法切换到其他分支。但发生的事情是我的所有变化都消失了。
我看到使用git status
终端的状态,其响应是
On branch branchname您的分支机构与“origin / branchname'”保持同步。
无需提交,工作目录清理
我试图知道Git-Client是否使用git stash
将其存储为存储,并且响应为
没有保存的本地更改
我无法恢复该分支的未提交更改!
答案 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 ...但在某些地方,我正在一个无法提交它的地方编写代码。