相关疑难解决方法(0)

如何在Git中更改多个提交的作者和提交者名称以及电子邮件?

我正在学校的计算机上编写一个简单的脚本,并将更改提交给Git(在我的pendrive中的repo中,从我家里的计算机克隆).几次提交后,我意识到我正在以root用户身份提交东西.

有没有办法将这些提交的作者改成我的名字?

git version-control git-filter-branch git-rewrite-history

2282
推荐指数
30
解决办法
80万
查看次数

推送后更改git commit消息(假设没有人从远程拉出)

我做了一个git提交和随后的推送.我想更改提交消息.如果我理解正确,这是不可取的,因为有人可能在我进行此类更改之前从远程存储库中取出.如果我知道没有人拉过怎么办?

有没有办法做到这一点?

git push commit

919
推荐指数
13
解决办法
49万
查看次数

如何在Git中更改旧提交的时间戳?

如何修改现有的,未删除的提交的答案描述了一种修改先前尚未向上游推送的提交消息的方法.新消息继承原始提交的时间戳.这似乎合乎逻辑,但有没有办法重新设定时间?

git timestamp commit git-rewrite-history

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

在重新定位git分支时更改时间戳

我已经重新组织了一个分支中的提交,然后它将被公开,导致提交的时间戳处于混合顺序.我宁愿让他们今天只有几秒钟.

显然,这些时间戳也不正确,但由于这是事情上市的时候,我更喜欢在时间上混淆历史.

那么如何告诉git在重新定位时创建新的时间戳?

git git-rebase

83
推荐指数
4
解决办法
2万
查看次数

git commit - 将时间戳设置为未来

我需要使用Git进行一些提交,但我希望将来git-log中的时间戳.

如何在git中进行提交,导致将来的时间戳记在git-log中注册?

git

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

如何在git rebase期间通过哈希识别冲突提交?

当我遇到使用合并冲突时git rebase,如何根据提交识别冲突的来源,而不仅仅是文件差异?

我已经知道如何使用(git mergetool或基本)使用或git add之前git rebase --continue,但有时文件之间的差异是不够的:我想看到提交的提交日志和差异,但未能应用于工作树.

我已经读过其他问题,git log --merge如果我使用的话会显示父提交git merge.当我遇到冲突并被告知时,我还是尝试过fatal: --merge without MERGE_HEAD?.

如何识别有问题的提交?

git merge git-rebase

40
推荐指数
4
解决办法
6625
查看次数

真的压扁了git merge

关于StackOverflow上的"flattening merge"的问题很少,答案通常是"git rebase".这些答案虽然错过了一个关键点 - 提交顺序.

假设有一个分支A,其中包含6月1日和8月1日的提交,而分支B具有7月1日的提交(更新以恢复下面描述的用例:分支是完全独立的,没有共同的祖先,例如来自2个不同的存储库).将B合并到A中时,会有以下历史记录(每个git日志):

Merged branch 'B'
Aug 1
Jul 1
Jun 1
Run Code Online (Sandbox Code Playgroud)

现在,我正在寻找的是获得相同结果的方法,但是没有合并提交(因此具有基础线性历史的顺序,是的,这意味着重新提交提交).git rebase在这里没有用,就像它一样,你会得到以下历史:

Jul 1
Aug 1
Jun 1
Run Code Online (Sandbox Code Playgroud)

要么

Aug 1
Jun 1
Jul 1
Run Code Online (Sandbox Code Playgroud)

换句话说,git rebase总是将一个分支堆叠在另一个分支之上,而我正在寻找解决方案,它将按作者的提交日期排序提交.

显然,对于简单的情况,可以通过使用git rebase -i手动后处理git rebase来实现所需的安排,但这对大型历史来说并不实用,所以我一直在寻找自动命令/脚本.

用例?如果A和B代表同一个项目的不同部分碰巧在不同的回购中,并且时间已经通过将它们合并在一起来纠正,那么很自然地希望线性历史以实际的开发顺序展开.

git merge rebase git-rewrite-history

11
推荐指数
1
解决办法
2439
查看次数

什么git钩子适用于'git rebase --continue'?

我正在尝试为我的组织构建一组git hook脚本,我想使用的一个(对于我自己的多个项目)将检查git rebase --continue我的代码中没有任何冲突标记. (<<<<<,=====,或>>>>>).

我已经预先提交了这样一个脚本,但是什么脚本适用于rebase --continue

git githooks

11
推荐指数
1
解决办法
956
查看次数

Git rebase 保留最新提交日期

我一直在开发一个已准备好推送到远程的功能分支。它有 5 个左右的提交,其中一些是非常快的提交,不值得它自己的提交。我希望该功能在我将其推送到远程进行审查之前总共是一次提交。

我通常会这样做:

git rebase -i HEAD~5

然后将这些提交折叠到之前的提交中。这将给我一个我想要的提交,但是,提交日期是第一次提交的日期。我想要一次提交,并将提交日期作为最后一次提交。

如何将提交折叠到最后一次提交而不是第一次提交?

git

10
推荐指数
1
解决办法
2881
查看次数

如何组合两个不相关的git存储库,保留历史

我不太了解git.: - /

背景

我有两个不相关的基于git的文档存储库,我想将它们合并到一个存储库中.我想保留原始时间戳(可追溯到2005年)和单个文件历史记录.这两个repos不包含分支,没有文件夹,并且在文件命名方面没有重叠.

在ASCII-land中,它看起来像这样:

REPO A    |-------------------------|
REPO B                    |===============|
Run Code Online (Sandbox Code Playgroud)

重叠表示时间.

目标

我的目标是"拉上"重叠的时间戳,以便两个回购看起来像一个完整的历史记录:

REPO A+B  |-------------------==--=---============|
Run Code Online (Sandbox Code Playgroud)

我试过的

再一次,我不太了解git,所以我可以把事搞砸了.

首先,我尝试将较新的较小的repo添加为较大的旧repo的远程,获取更改并提交结果.在旧的回购后,我结束了所有新的回购变更集中在一个分支:

MERGE  |-------------------------                 -|
                                 \===============/
Run Code Online (Sandbox Code Playgroud)

接下来我尝试了rebasing(with --committer-date-is-author-date),我认为它可以工作,但最后我得到一个长的提交历史,只是将两个repos堆叠在一起.

REBASE |-------------------------===============|
Run Code Online (Sandbox Code Playgroud)

我无法找到一种"重播"组合历史的方法.我真的希望rebase能成为答案.

我看过的答案

git git-rebase

9
推荐指数
2
解决办法
2607
查看次数