git-您的分支比“ origin / master”提前1次提交


107

我是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)

我想还原该提交,并且想要推送这些文件以供查看,而不是提交。谁能让我知道我该怎么做?


如果要撤消提交,请查看类似的问题
ДМИТРИЙМАЛИКОВ

1
我不知道您在使用什么进行代码审查。关于如何取消提交的简单问题的简单答案是git reset HEAD^
Anonymoose 2012年

我没有重置HEAD。但是,当我尝试推送时,当我尝试psuh时,它说我D file1.py,然后又说我,您的分支领先1次提交,超过了起源/主服务器
sam 2012年

当您说“我要推送这些文件以供审核”时,您是什么意思?您是否希望其他人看到您的提交?
杰克·格林

我的代码将先经过审核,然后再提交。所以首先我想推送代码进行审查,但我错误地提交了
sam

Answers:


128

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

  1. 进行更改。
  2. git add -这会分阶段提交您的更改
  3. git commit -这会在本地提交您已分阶段的更改
  4. git push -这会将您所做的更改推送到远程

如果您推送而不提交,则不会推送任何内容。如果您提交而未添加,则不会提交任何内容。如果您添加时没有提交,则什么也没有发生,git只记得您为以后的提交考虑添加的更改。

您所看到的消息(您的分支前面有1个提交)表示您的本地存储库中有一个尚未推送的提交。

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

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


4
好的 所以这意味着提交后,我必须将其推入
萨姆

4
很好的解释-发问者可能不想实际还原提交,而是让人们在将提交推送到origin存储库之前对其进行审核。我也建议你阅读几本教程/片头混帐git-scm.com/documentation
DBR

1
当我的git状态显示“您的分支比'origin / develop'提前1次提交”。我如何准确地查看文件已更改?git diff似乎什么也没做
Tom

有时是其他人在那里工作。拉动之前拉一下
Adrian P.18年

67

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

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


3
胡萝卜为'^'的HEAD的意义是什么?我也看到它是在没有胡萝卜的情况下编写的。
Mugen

29

如果您只想放弃所做的更改并恢复到上一次提交(您要共享的提交):

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 

21

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

git pull

而已。现在显示:

# On branch master
nothing to commit, working directory clean

如果将创建多个分支(不需要),则会导致问题。
Anil Kumar Arya'3

1
您回到了偏远的州,却丢失了上一份工作:D
Gucho Ca

13

git reset HEAD ^

修改后的文件就会显示出来。

您可以将修改后的文件移至新分支

用,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

那么您应该位于干净的分支上,并且所做的更改应存储在newbranch中。您稍后可以将更改合并到master分支中


4
git reset HEAD <file1> <file2> ...

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.