我试图在实际推送之前使用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”的最新版本。 无需承诺,工作树干净
答案 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作为“保存”了。这是一种记录和传递代码库随时间变化的方法。这不是一种奇特的储蓄方式。这是初学者常犯的错误。