【问题标题】: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 个提交
  • 你说“我想推送这些文件以供审查”是什么意思?你想让其他人看到你的提交吗?
  • 我的代码将首先被审查然后提交。所以首先我想推送代码以供审查,但我错误地提交了

标签: git push commit


【解决方案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】:

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

      1. 做出改变。
      2. git add - 这会将您的更改分阶段提交
      3. git commit - 这会在本地提交您的分阶段更改
      4. 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
      • 这是插入符号,不是胡萝卜。
      【解决方案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 中。您可以稍后将此更改合并到主分支中

      【讨论】:

        猜你喜欢
        • 2013-04-23
        • 1970-01-01
        • 2011-01-21
        • 2022-01-04
        • 2011-01-26
        相关资源
        最近更新 更多