git checkout -b newbranch在当前分支上丢失了更改

时间:2014-02-21 05:10:29

标签: git github git-branch

基本上,这就是我发生的事情:

  1. 我正在分支机构工作,我们称之为'dev'
  2. 我还没有上演或提交我的更改。但是,我需要为新分支中的某个人快速测试一些东西。
  3. 所以我在命令行上执行了git checkout -b testbranch dev
  4. 这创建了一个名为'testbranch'的分支,关闭'dev'并检出该分支
  5. 但是,我在'dev'分支中修改过的所有文件(我在执行第3点之前没有存储,暂存和提交)都列在终端中,旁边有一个M表示已修改。
  6. 我在testbranch工作,一旦工作完成,上演并提交我的更改并切换回'dev'分支。
  7. 不幸的是,当我在xcode中查看项目时,看起来我在创建/切换testbranch之前在dev分支中所做的所有更改都丢失了。
  8. 所以我的问题是:我有什么方法可以恢复文件吗?请注意,我的终端会话仍在运行,我将继续运行,直到我得到一个恢复我的更改的解决方案,或者我发现这些更改永远丢失。帮助!

    谢谢,

    -Vivek Kinra

2 个答案:

答案 0 :(得分:1)

您的更改不会丢失。

在第3步之后,他们第一次在新的testbranch上,这是因为更改未提交到分支dev

接下来,当您将这些提交到testbranch时,提交已与testbranch相关联,因此在明确告知dev之前,git分支上将无法使用该提交这样做。

在这种情况下,在我看来,您可以将testbranch中的所有代码引入dev分支,因此您可以执行简单的merge

git checkout dev
git merge testbranch

这会将您的所有更改带到dev分支。

答案 1 :(得分:0)

我认为您之前在 dev 中的工作与 testbanch中的测试工作混合在一起。

我不确定您在 testbranch 中完成了多少测试工作。如果你还没有完成很多工作,你可以:

首先通过git log选择testbranch中的commit标签。

git checkout testbranch
git diff "tag" > /location/out/of/repo

编辑/ location / out / of / repo,删除您为测试所做的工作。

git checkout dev
git apply /location/out/of/repo