添加的更改在“意外”之后消失;git push“;

添加的更改在“意外”之后消失;git push“;,git,Git,使用GitHub比较新,我遇到了一个恼人的问题 我创建了一个新分支,添加了我的更改,并提交了它们。然后我使用了git-push而不是git-push-origin-master,收到了一个错误: 致命:当前分支名称没有上游分支。 现在,当我键入git status时,我的更改消失了,当我尝试git push origin master时,它告诉我一切都是最新的。我已经检查了master和我当前的工作分支,但它们仍然不同。我不知道如何恢复更改,以便将分支添加到GitHub。您需要使用 git re

使用GitHub比较新,我遇到了一个恼人的问题

我创建了一个新分支,添加了我的更改,并提交了它们。然后我使用了
git-push
而不是
git-push-origin-master
,收到了一个错误:

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


现在,当我键入
git status
时,我的更改消失了,当我尝试
git push origin master
时,它告诉我一切都是最新的。我已经检查了master和我当前的工作分支,但它们仍然不同。我不知道如何恢复更改,以便将分支添加到GitHub。

您需要使用

git reset --soft HEAD~1

如果您进行了多个提交,则将
1
替换为#个提交。

首先,您误解了
git状态的输出。它并不是告诉你你的改变已经消失了。它告诉您,您当前的索引和工作树相对于上一次提交没有改变——这仅仅是因为您提交了更改

要查看您的更改是否仍然存在,可以使用类似于
git show
(查看当前提交相对于上一次提交的更改)或
git log-p
(查看当前历史中更改的运行历史)的内容

是的,您的第一次推送失败,但这只意味着您仍然需要完成正确的
push
命令。将读取来自失败命令的完整错误消息

fatal: The current branch foo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin <branch-name>
致命:当前分支foo没有上游分支。
要推送当前分支并将远程分支设置为上游,请使用
git push——设置上游原点
其中
是分支机构的名称

git-push-origin-master
之所以说一切都是最新的,是因为您没有对
master
进行任何更改。如果您想做的是将更改添加到
master
,然后将它们推送到
master
上的远程,那么最简单的方法是将它们合并到本地
master
,然后
git push origin master
将起作用


但是,如果您只是想让远程用户了解您的分支(同时仍然将其与
主控
分开),那么您可以使用
git push--设置上游源

来恢复我的提交,但是当我在添加和提交后执行
git push origin主控
时,它仍然告诉我一切都是最新的。你知道这是为什么吗?查看
target
分支,看看它是否有你最后的提交?你可能想重新定位到目标分支。我不确定是谁投了反对票,但这是正确的答案。顺便说一句,很抱歉,这并不及时,但我只是注意到你已经遵循了Pankaj Gadge的答案中的建议。。。毫无疑问,这导致
状态
再次开始显示您的更改(因为他的重置让git或多或少表现得像没有提交更改一样)。在这种情况下,您必须重新提交更改,然后才能推送它们。