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

sam*_*sam 96 git push commit

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

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

git add <file1>
git add <file2>
Run Code Online (Sandbox Code Playgroud)

然后我想推动审查,但我错了

git commit
Run Code Online (Sandbox Code Playgroud)

所以我改变的文件不用于评论.
现在,如果我输入命令:

git status
Run Code Online (Sandbox Code Playgroud)

它说

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

我想恢复该提交,我想推送这些文件进行审核而不是提交.谁能让我知道我怎么能这样做?

tda*_*ers 121

你不能推动任何尚未提交的东西.操作顺序是:

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

如果你在没有提交的情况下推动,就不会被推动.如果您提交而不添加,则不会提交任何内容.如果您在未提交的情况下添加,则根本不会发生任何事情,git只会记住您添加的更改应考虑用于以下提交.

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

换句话说:add并且commit是本地操作push,pull并且fetch是与远程交互的操作.

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

  • 啊哈哈.所以这意味着在提交之后,我必须推动它 (4认同)
  • 好的解释 - 问题'可能不想实际还原提交,而是让人们在将其提交到`origin`存储库之前查看提交.我还建议在http://git-scm.com/documentation上阅读一些教程/介绍来git (4认同)
  • 当我的 git status 显示“您的分支比 'origin/develop' 领先 1 次提交时。” 我究竟如何查看文件已更改?git diff 似乎没有做任何事情 (2认同)

Jua*_*tas 55

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

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

  • 这是插入符,不是胡萝卜。 (9认同)
  • 胡萝卜为'^'的HEAD的意义是什么?我也看到它是在没有胡萝卜的情况下编写的。 (2认同)

She*_*hep 29

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

git reset --hard HEAD~
Run Code Online (Sandbox Code Playgroud)

您可能需要检查以确保您想要这个(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 
Run Code Online (Sandbox Code Playgroud)


kar*_*gen 19

我只是运行一个简单的解决了这个问题:

git pull
Run Code Online (Sandbox Code Playgroud)

而已.现在它显示:

# On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

  • 你回到了远程状态并丢失了你最后的工作:D (4认同)

小智 13

git reset HEAD ^

那么修改后的文件就应该出现了.

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

使用,git checkout -b newbranch git checkout commit -m"文件已修改"git push origin newbranch

git checkout master

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