git - 您的分支领先于 'origin/master' 1 次提交

Posted

技术标签:

【中文标题】git - 您的分支领先于 \'origin/master\' 1 次提交【英文标题】:git - Your branch is ahead of 'origin/master' by 1 commitgit - 您的分支领先于 'origin/master' 1 次提交 【发布时间】:2012-04-27 11:59:41 【问题描述】:

我是 git 的新手,我正在研究 git。

我在 git 中添加了一些文件:

git add <file1>
git add <file2>

然后我想推送它以供审核,但我错误地这样做了

git commit

所以我已更改的文件不会用于评论。 现在如果我输入命令:

git status

它说

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

我想恢复那个提交并且我想推送这些文件以供审查而不是提交。 谁能告诉我该怎么做?

【问题讨论】:

如果你想撤销你的提交 - 看看similar question。 我不知道你用什么来进行代码审查。如何取消提交的简单问题的简单答案是git reset HEAD^ 我确实重置了 HEAD。但是当我尝试推送时,当我尝试 psuh 时它说我 D file1.py 然后又说我你的分支比 origin/master 领先 1 个提交 你说“我想推送这些文件以供审查”是什么意思?你想让其他人看到你的提交吗? 我的代码将首先被审查然后提交。所以首先我想推送代码以供审查,但我错误地提交了 【参考方案1】:
git reset HEAD <file1> <file2> ...

从下一次提交中删除指定的文件

【讨论】:

【参考方案2】:

如果您只是想丢弃更改并恢复到最后一次提交(您想分享的那个):

git reset --hard HEAD~

您可能需要检查以确保您需要此 (git log),因为您将丢失所有更改。

一个更安全的选择是运行

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 

【讨论】:

【参考方案3】:

您无法推送尚未提交的任何内容。操作顺序为:

    做出改变。 git add - 这会将您的更改分阶段提交 git commit - 这会在本地提交您的分阶段更改 git push - 这会将您提交的更改推送到远程

如果你在没有提交的情况下推送,则不会推送任何内容。如果您不添加就提交,则不会提交任何内容。如果你在没有提交的情况下添加,什么都不会发生,git 只会记住你添加的更改应该被考虑用于下一次提交。

您看到的消息(您的分支领先 1 个提交)意味着您的本地存储库有一个尚未推送的提交。

换句话说:addcommit 是本地操作,pushpullfetch 是与远程交互的操作。

由于您工作的地方似乎有一个官方的源代码控制工作流程,您应该在内部询问应该如何处理。

【讨论】:

啊哈好吧。所以这意味着在提交之后,我必须推送它 很好的解释 - 提问者可能不想真正恢复提交,而是让人们在将提交推送到origin 存储库之前对其进行审查。我还建议在git-scm.com/documentation 上阅读一些关于 git 的教程/介绍 当我的 git 状态显示“您的分支比 'origin/develop' 领先 1 次提交。”我究竟如何查看文件已更改? git diff 似乎什么也没做 有时是其他人在那里工作。在推动之前先拉动【参考方案4】:

git reset HEAD^ --soft(保存更改,返回上次提交)

git reset HEAD^ --hard(放弃更改,返回上次提交)

【讨论】:

带有胡萝卜'^'的 HEAD 有什么意义?我也看到它是在没有胡萝卜的情况下编写的。 我认为胡萝卜会通过一次提交恢复(因此,如果您必须备份 3 次提交,那么您可以运行该命令 3 次)。同样,您可以运行 git reset HEAD~ --hard 将所有提交还原到 HEAD 这是插入符号,不是胡萝卜。 详细讨论见***.com/questions/2221658/…【参考方案5】:

我通过运行一个简单的方法解决了这个问题:

git pull

仅此而已。 现在它正在显示:

# On branch master
nothing to commit, working directory clean

【讨论】:

如果创建了多个不需要的分支,可能会导致问题。 你回到了你的远程状态并丢失了你最后的工作:D【参考方案6】:

git 重置 HEAD^

那么修改后的文件应该会显示出来。

您可以将修改后的文件移动到新分支中

使用,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

那么您应该在一个干净的分支上,并且您的更改应该存储在 newbranch 中。您可以稍后将此更改合并到主分支中

【讨论】:

以上是关于git - 您的分支领先于 'origin/master' 1 次提交的主要内容,如果未能解决你的问题,请参考以下文章

Git - '你的分支在“X”提交之前是“X”。

git rebase详解

git恢复到上次提交

Git:当我还没有提取更新时,为啥 git 会说“您的分支与 origin/main 是最新的”?

如何在 git 中标记您的分支未解决?

git:Git 简介