标签: git-rebase

恢复交互式git rebase

完成功能分支后,git rebase -i我意外删除了所有提交.我不完全确定,但我怀疑不是压缩我的提交,而是用提交消息替换整个条目.

http://shafiulazam.com/gitbook/4_interactive_rebasing.html说:

交互式rebase可以做的最后一个有用的事情就是为你删除提交.如果不是为提交行选择"选择","压缩"或"编辑",只需删除该行,它将从历史记录中删除提交.

我的问题是:有没有办法恢复/撤消这个?

git git-rebase

28
推荐指数
2
解决办法
1万
查看次数

如何使用过去的提交日期压缩git中的提交?

所以,我有一个非常简单的用例; 我想从我的'今日工作'分支中压缩所有需要重新进入master的提交.

到目前为止,我一直在使用git rebase -i它,但它不能正常工作; 最终提交的时间戳不正确.

这是一个这样做的例子:

[work1] git checkout master
Switched to branch 'master'

[work1] git rebase today
First, rewinding head to replay your work on top of it...
Fast-forwarded master to today.

[work1] git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
5ad95ff Doug    Wed Nov 7 10:12:42 2012 +0800   Updated TODO again
abb891c Doug    Wed Nov 7 10:12:24 2012 +0800   Added more work
c5fd35c Doug    Wed Nov 7 10:11:50 2012 +0800   Added more work
a98facd Doug    Wed Nov 7 10:11:22 2012 …
Run Code Online (Sandbox Code Playgroud)

git git-rebase

28
推荐指数
3
解决办法
5002
查看次数

Git:由于未提交的更改,无法重新绑定

Git不会让我从任何地方变装.

Cannot rebase: Your index contains uncommitted changes.
Please commit or stash them.
Run Code Online (Sandbox Code Playgroud)

按照以下答案的说明操作:https://stackoverflow.com/a/13694625/618450

$ git update-index -q --ignore-submodules --refresh
$ git diff-files --ignore-submodules
Run Code Online (Sandbox Code Playgroud)

两者都不产生任何输出但是那个输出:

$ git diff-index --cached --ignore-submodules HEAD --
:100644 000000 cab819f1e5ed6cc7cff374eecae273e1d6ae6a01     0000000000000000000000000000000000000000 D  .idea/codeStyleSettings.xml
:100644 000000 2953f353d2c65dd62e36926accb7f645a600b7e0 0000000000000000000000000000000000000000 D  .idea/dictionaries/roxy.xml
:100644 000000 0e7ecef362d8a77067edf4bae5972f33185bd986 0000000000000000000000000000000000000000 D  .idea/inspectionProfiles/Project_Default.xml
:100644 000000 3b312839bf2e939fea3ebdef15630a4b33e57caf  0000000000000000000000000000000000000000 D    .idea/inspectionProfiles/profiles_settings.xml
:100644 000000 e31af55b33d82e28f471a2ba51b63c2a91fa53b7 0000000000000000000000000000000000000000 D  .idea/php.xml
:100644 000000 9c25e8d4f1169b5d3103b14fdb60e7d7c3975b70 0000000000000000000000000000000000000000 D  db/sfront.sql
Run Code Online (Sandbox Code Playgroud)

我无法删除这些文件:

$ git rm --cached .idea/php.xml
fatal: pathspec '.idea/php.xml' …
Run Code Online (Sandbox Code Playgroud)

git git-rebase

28
推荐指数
2
解决办法
5万
查看次数

Git rebase失败了

我试图改变一位同事的工作.

首先,我得到了大量的冲突,其中<<<<<头部接缝包含新代码.

然后过了一会儿我得到以下错误:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref     'refs/heads/dev_504': ref refs/heads/dev_504 is at
 XXXXXXX 
 but expected     XXXXXXXX
Could not move back to refs/heads/dev_504
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试继续,我得到以下错误:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题,以便rebase不会出错?

git version-control github rebase git-rebase

28
推荐指数
3
解决办法
2万
查看次数

git pull --rebase --preserve-merges

简短版本:只有在执行本地提交后明确合并时,是否需要保留合并?究竟会发生什么?它是否将您提交的代码重新应用于合并的分支?

请解释什么时候git pull --rebase --preserve-merges对常规有用git pull --rebase?我git pull --rebase在这里阅读了一个问题:http: //notes.envato.com/developers/rebasing-merge-commits-in-git/ 这可能会导致代码更改重复.

我在这里读到:什么时候`git pull --rebase`让我陷入困境?

只有在你提交了一些提交后才基本上进行了修改,才会发生这种情况.

所以我不确定我什么时候需要git pull --rebase --preserve-merges,如果使用它就不好了 git pull --rebase.

git git-rebase

27
推荐指数
1
解决办法
1万
查看次数

如何在交互式rebase压缩后保留提交gpg-signature?

当我想通过交互式压缩一些提交时rebase:

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

然后:

pick cbd03e3 Final commit (signed)
s f522f5d bla-bla-bla (signed)
s 09a7b7c bla-bla (signed)

# Rebase c2e142e..09a7b7c onto c2e142e
...
Run Code Online (Sandbox Code Playgroud)

尽管所有提交都具有相同的签名,但最终提交还没有gpg签名.交互式rebase压缩后是否可以保留提交gpg-signature?

git version-control gnupg git-rebase

26
推荐指数
4
解决办法
6031
查看次数

如何为一系列提交git rebase -i?

我可以使用不包含最新提交的rebase来压缩本地功能/主题分支的一系列提交吗?这是我想在合并并推送到公共回购之前准备的提交.

我正在快速地工作并用糟糕的标题和描述进行了一些小的改动,我想要将两个或三个单独的逻辑提交压缩成一个很好的评论.我可以选择329aed9和af39283之间的一系列提交,这些提交可能在此功能分支的短历史中的任何一点吗?

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID
Run Code Online (Sandbox Code Playgroud)

谢谢!

git commit rebase git-rebase git-branch

25
推荐指数
1
解决办法
1万
查看次数

rebase - 如果rerere解决所有冲突,则自动继续

Git rerere提供了在rebase期间重用以前的冲突解决方案,甚至可以通过设置来解析已解析的文件rerere.autoupdate = True(如另一个问题中所详述).但是,即使解决了所有冲突并且所有文件都已暂存,我仍然必须运行git rebase --continue以继续rebase操作.

如果已解决所有冲突并暂停所有更改,我该如何自动继续rerere

git git-rebase git-rerere

25
推荐指数
2
解决办法
998
查看次数

撤消在rebase中完成的git rerere解析

好的,所以我真的很喜欢git rerere命令.虽然,我还没有真正使用它,除了让它自动神奇地记录我的冲突并为我解决它们.但是,我确实搞砸了我的冲突解决方案中的一个很大的rebase(使用最新版本重新定义了一个非常陈旧的功能分支).

feature -> a - b - c - d

release -> e - f - g - h

rebase/feature -> e - f - g - h - a' - b' - c' - d'
Run Code Online (Sandbox Code Playgroud)

所以,比方说b'有一个不正确的合并(感谢我!),我想重新录制它.我该怎么办?我已经看过在Rerere Your Boat中提到的git checkout --conflict选项,但是我不太清楚它是如何工作的,如果它适用于这里.也许我必须检查合并冲突状态并在我正确解决此冲突后运行git rerere?

通常情况下,我只会提交rebase分支的提示,但这是一个扔掉.我只是提前处理冲突,因此当我与该功能团队同步时,我们将所需的时间最小化.合理?

git git-rebase git-rerere

24
推荐指数
1
解决办法
8830
查看次数

撤消Git Rebase

git rebase master在我的分支上执行了一次,直到我将它推到遥控器之后才意识到它不是我想要的.只有我自己和另外一个人参与这个项目,所以我知道他们没有采取最新的变化.

在StackOverflow上阅读其他问题,它说要使用git reflog然后git reset --hard HEAD@{n}再到rebase之前.我这样做是为了转到我在rebase之前创建的一个提交,但它没有恢复到以前的状态.

我错过了一步吗?有没有办法让对方强行推回他的回购以恢复他们的状态?

谢谢

git assembla git-rebase

24
推荐指数
1
解决办法
3万
查看次数