我是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)
我想恢复该提交,我想推送这些文件进行审核而不是提交。 谁能告诉我怎么做?
答案 0 :(得分:117)
你无法推送任何尚未提交的内容。操作顺序为:
git add
- 这会暂停您提交的更改git commit
- 这会在本地提交您的分阶段更改git push
- 这会将您提交的更改推送到远程如果你在没有提交的情况下推动,就不会推动任何东西。如果您提交而不添加,则不会提交任何内容。如果你在没有提交的情况下添加,一切都没有发生,git只会记住你添加的更改应该考虑用于以下提交。
您看到的消息(您的分支提前1次提交)意味着您的本地存储库有一个尚未推送的提交。
换句话说:add
和commit
是本地操作,push
,pull
和fetch
是与远程交互的操作。
由于在您工作的地方似乎有一个官方的源代码控制工作流程,您应该在内部询问应该如何处理。
答案 1 :(得分:49)
git reset HEAD^ --soft
(保存更改,返回上次提交)
git reset HEAD^ --hard
(放弃更改,回到最后一次提交)
答案 2 :(得分:27)
如果您只想丢弃更改并恢复到上次提交(您要共享的那个):
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 :(得分:17)
我只是运行一个简单的解决方法:
git pull
没有更多。 现在它显示:
# On branch master
nothing to commit, working directory clean
答案 4 :(得分:5)
git reset HEAD ^
然后应该显示已修改的文件。
您可以将修改后的文件移动到新分支
使用,git checkout -b newbranch git checkout commit -m“文件已修改” git push origin newbranch
git checkout master
然后你应该在一个干净的分支上,你的更改应该存储在newbranch中。您可以稍后将此更改合并到主分支
答案 5 :(得分:4)
git reset HEAD <file1> <file2> ...
从下次提交中删除指定的文件
答案 6 :(得分:0)
第一次运行:
git pull
然后:
git push
你可以走了。