可能重复:
Git undo last commit
我有这样的文件夹结构..
~/git
......all repos of my github account
.....play
.....emacs.d
.....dummy
.....etc
Run Code Online (Sandbox Code Playgroud)
我已经创建了虚拟仓库以熟悉git命令.因此,我没有初始化虚拟文件夹,而是git init在git文件夹中发布并发布git add .,并提交给我的本地仓库.
我想回到我之前的状态,并且不想放弃我所做的任何改变.我怎样才能做到这一点?
是否有一个命令可以让我根据它与当前提交的距离而不是使用提交ID来签出提交?
基本上我正在考虑设置一个cron作业类型脚本来在构建服务器上执行以下操作:
我对这将如何合在一起有一个粗略的想法,但除非我能定期返回一个提交,否则它将无法工作.
如果没有特定的命令,我想我可以grep提交日志,每次都拿第一个?
我感谢任何想法或帮助!
不像: 如何撤消Git中的最后一次提交?
我想回去"N"次提交.
当我git lg在本地开发分支上运行时,最新的提交如下所示:
* 7d21213 - (1 hours ago) update business rules - developer1 (HEAD, origin/develop, origin/HEAD, develop)
Run Code Online (Sandbox Code Playgroud)
但是,如果我通过运行git stash然后运行来存储本地更改git lg,我会得到以下内容:
* at12334 - (13 seconds ago) WIP on develop: 7d21213 update business rules - developer1 (refs/stash)
|\
| * ef9a11b - (14 seconds ago) index on develop: 7d21213 update business rules - developer1
|/
* 7d21213 - (1 hours ago) update business rules - developer1 (HEAD, origin/develop, origin/HEAD, develop)
Run Code Online (Sandbox Code Playgroud)
这是什么意思?看来,两个新的提交(标记index和WIP)的积攒后创建.是这样的,如果是这样,这些提交背后的逻辑是什么? …
我做了一个Git提交和推送,但在评论中写了完全错误的东西.
如何更改评论?我已经将提交推送到遥控器.
我的问题类似于Git - 已经提交的文件中的unchange行结尾,虽然接受的答案似乎主要是沉思,但对我的情况没有帮助.
我有几个相当大的提交.在我的编辑器和我当时的git配置之间,我提交了许多行结束更改
例如,我在一个文件中更改了行,但我的提交更改了文件中数千个其他行的行结尾.
我没有推动提交.如何在推送之前删除行结束更改?
我试过了
git rebase [last_good_commit]
Run Code Online (Sandbox Code Playgroud)
但它只是说
current branch *** is up to date.
Run Code Online (Sandbox Code Playgroud) 在git中进行合并时,我意外地覆盖了另一个开发者的更改.我知道如何撤消上次提交,即我的合并.
我的问题是我已经将这些提交推送到我们的在线存储库中.因此,如果我回滚,再次进行合并合并(这次是他的修改)并尝试再次推送它,会发生冲突(对吗?).处理这个问题的方法是对的?
编辑 澄清一下,情况如下:
commit A --- commit B --- merge
Run Code Online (Sandbox Code Playgroud)
但在合并中,我不小心丢弃了在提交A中进行的修改.这不是一个真正的问题.我知道如何在本地进行更改(撤消合并).但我的问题是整个事情已被推入我们的共享存储库(想想github或bitbucket).
据我所知,当你想在Git中撤消一些东西时,你必须明确地找到命令来撤消你已经完成的任何事情并发布它.例如,许多撤消提交和重做它的方法之一是遵循这里的示例,
$ git commit ...
$ git reset --soft HEAD^
$ edit
$ git add ....
$ git commit -c ORIG_HEAD
Run Code Online (Sandbox Code Playgroud)
或者要撤消拉动,您可以按照此处的说明操作,
$ git reset --hard
Run Code Online (Sandbox Code Playgroud)
但是这些命令不一定可以互换.有没有理由为什么Git不允许简单的撤销和重做命令?它与背后的哲学有什么关系?另外,我对其他版本控制系统没有太多经验,但是它们中的任何一个都提供了简单的撤销和重做命令吗?
我在其中一个提交中犯了一个错误.现在我想完全删除这个提交,所以看起来它从来就不存在.我不想在日志中看到这个.
我已经尝试了这个问题的所有提示(" 如何删除'git commit' "),但我可以在日志中看到提交.我怎么能完全删除它?
- 编辑 -
好的,我没有提供完整的信息.凯文巴拉德是对的.
到现在为止,我没有推动这个提交,它只在我的机器上.该ouah答案工作,命令
git log
Run Code Online (Sandbox Code Playgroud)
不会显示,但命令是什么
git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
do是"chekout last commit并将分支更改为this",所以我继续看到使用SmartGit等图形程序进行提交.
- 编辑2--
不,这是一个SmartGit漏洞!!!! 提交真的消失了.我必须关闭日志窗口,然后再打开.提交不再存在.
有没有办法回滚最后一次提交并将其放入一个单独的分支以供以后测试?我做了一些我不想完全抛弃的更改,我只想将它们放在另一个分支中进行进一步测试.
谁能帮我这个?
git ×10
git-commit ×3
automation ×1
git-branch ×1
git-log ×1
git-push ×1
git-reset ×1
git-stash ×1
line-endings ×1
undo ×1
undo-redo ×1