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 个提交)意味着您的本地存储库有一个尚未推送的提交。
换句话说:add
和 commit
是本地操作,push
、pull
和 fetch
是与远程交互的操作。
由于您工作的地方似乎有一个官方的源代码控制工作流程,您应该在内部询问应该如何处理。
【讨论】:
啊哈好吧。所以这意味着在提交之后,我必须推送它 很好的解释 - 提问者可能不想真正恢复提交,而是让人们在将提交推送到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 次提交的主要内容,如果未能解决你的问题,请参考以下文章