Git - 保存正在进行的工作 - 分支后缺少更改

时间:2017-08-07 13:08:17

标签: git

我试图在实际推送之前使用Git保存我的更改。如果我的系统崩溃,我就不会失去工作。

我看了git stash,看起来不错,但看起来只是本地的,所以这没有用。

我读到我应该创建一个新的分支并推动它。嗯,这就是我在下面做的,当我回到主分支时,我的工作文件不再出现了。

我有两个问题:

  

我做错了什么?

     

在您准备推送之前,是否有更好的方法来保存更改?

我的尝试:

//在master中,我正在进行工作,创建并移动到新分支

git checkout -b branch1

//分段,然后推送新分支中的更改

git add .

git commit -m "committing changes from new local branch"

git push
  

致命:当前分支branch1没有上游分支。

//创建远程分支并将新的本地分支推送到它(现在在服务器上更改)

git push --set-upstream origin branch1

//回到主人去工作

git checkout master

//噢,改变没有出现在主人身上?他们去哪儿了?

git status
  

On branch master您的分支是“origin / master”的最新版本。   无需承诺,工作树干净

2 个答案:

答案 0 :(得分:2)

你没有做错任何事。您在Git阶段的更改已在branch1上提交并推送到服务器。因此,在您完成提交后,舞台被清理。

要将更改从branch1恢复为master,您可以尝试将branch1合并到master,例如

git checkout master
git merge branch1

我发现你直接在master分支上工作很奇怪。更典型的是,您已经在处理某个功能分支branch1,然后希望稍后将整个功能合并回master。我提到这种情况,因为它可以让操作更顺畅。您可以在branch1上进行临时提交,然后推送。当你重返工作岗位时,你可以继续工作,然后通过以下方式修改提交。

git commit --amend

现在,您将在您的功能分支上进行一次提交,其中包含您打算完成的所有工作。

答案 1 :(得分:0)

master是默认分支的名称。您创建了一个基于master的新分支,并在那里提交了您的更改。该分支现在包含master中的所有提交以及新提交。然后,您将新分支推送到远程。到目前为止一切都很好。

然后您切换回master。为什么?这不包含您正在处理的内容。您的新分支包含您正在处理的内容。继续在那个分支上工作。完成工作的这部分后,将其合并回master

另外:不要再考虑使用Git作为“保存”了。这是一种记录和传递代码库随时间变化的方法。这不是一种奇特的储蓄方式。这是初学者常犯的错误。