如何从当前状态恢复为在某个提交时创建的快照?
如果我这样做git log
,那么我得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
Run Code Online (Sandbox Code Playgroud)
如何从11月3日恢复提交,即提交0d1d7fc
?
在我的主分支中,我做了一个git merge some-other-branch
本地,但从未将更改推送到原始主.我不是故意合并,所以我想撤消它.在git status
合并后执行操作时,我收到此消息:
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
Run Code Online (Sandbox Code Playgroud)
git revert HEAD -m 1
Run Code Online (Sandbox Code Playgroud)
但现在我收到这条消息git status
:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
Run Code Online (Sandbox Code Playgroud)
我不希望我的分支通过任何数量的提交领先.我该如何回到那一点?
我有一个远程Git服务器,这是我想要执行的场景:
对于每个bug /功能,我创建了一个不同的Git分支
我继续使用非官方的Git消息在Git分支中提交我的代码
在顶级存储库中,我们必须使用官方Git消息对一个错误进行一次提交
那么如何将我的分支合并到远程分支,以便他们只为我的所有签到提交一个提交(我甚至想为此提供提交消息)?
我已经在SO上阅读了关于git merge和git rebase的相关问题,但我仍然无法完全理解幕后发生的事情.
这是我们的分支情况:
MASTER------------------------
\ \
\ \----Feature B---
\ \
\-----Feature A----------\---Feature A+B
Run Code Online (Sandbox Code Playgroud)
我们有2个功能分支,它们来自不同时间的master,现在我们想要组合2个分支.我们希望遵循这种first rebase then merge
做法,但是当我们将功能A重新命名为功能B时,我们会遇到冲突.这是预期的,因为两个功能(和主人)在相同的区域都有变化.但奇怪的是,同样的冲突在此之后不断出现git rebase --continue
.这让我们疯狂,所以我们最终中止了rebase,并使用了git merge
.事实证明,冲突实际上很容易解决.
我的问题是双重的:
git rebase
适合我们situtation?或者,只有少数(1或2)变化才能改变?rebase
解决一个冲突,但通过比较哪个提交到什么?关于SO的相关帖子:
git ×5
git-merge ×3
git-checkout ×1
git-rebase ×1
git-reset ×1
git-revert ×1
git-squash ×1
merge ×1
undo ×1