我正在学校的计算机上编写一个简单的脚本,并将更改提交给Git(在我的pendrive中的repo中,从我家里的计算机克隆).几次提交后,我意识到我正在以root用户身份提交东西.
有没有办法将这些提交的作者改成我的名字?
我做了一个git提交和随后的推送.我想更改提交消息.如果我理解正确,这是不可取的,因为有人可能在我进行此类更改之前从远程存储库中取出.如果我知道没有人拉过怎么办?
有没有办法做到这一点?
如何修改现有的,未删除的提交的答案?描述了一种修改先前尚未向上游推送的提交消息的方法.新消息继承原始提交的时间戳.这似乎合乎逻辑,但有没有办法重新设定时间?
我已经重新组织了一个分支中的提交,然后它将被公开,导致提交的时间戳处于混合顺序.我宁愿让他们今天只有几秒钟.
显然,这些时间戳也不正确,但由于这是事情上市的时候,我更喜欢在时间上混淆历史.
那么如何告诉git在重新定位时创建新的时间戳?
我需要使用Git进行一些提交,但我希望将来git-log中的时间戳.
如何在git中进行提交,导致将来的时间戳记在git-log中注册?
当我遇到使用合并冲突时git rebase,如何根据提交识别冲突的来源,而不仅仅是文件差异?
我已经知道如何使用(git mergetool或基本)使用或git add之前git rebase --continue,但有时文件之间的差异是不够的:我想看到提交的提交日志和差异,但未能应用于工作树.
我已经读过其他问题,git log --merge如果我使用的话会显示父提交git merge.当我遇到冲突并被告知时,我还是尝试过fatal: --merge without MERGE_HEAD?.
如何识别有问题的提交?
关于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 hook脚本,我想使用的一个(对于我自己的多个项目)将检查git rebase --continue我的代码中没有任何冲突标记. (<<<<<,=====,或>>>>>).
我已经预先提交了这样一个脚本,但是什么脚本适用于rebase --continue?
我一直在开发一个已准备好推送到远程的功能分支。它有 5 个左右的提交,其中一些是非常快的提交,不值得它自己的提交。我希望该功能在我将其推送到远程进行审查之前总共是一次提交。
我通常会这样做:
git rebase -i HEAD~5
然后将这些提交折叠到之前的提交中。这将给我一个我想要的提交,但是,提交日期是第一次提交的日期。我想要一次提交,并将提交日期作为最后一次提交。
如何将提交折叠到最后一次提交而不是第一次提交?
我不太了解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能成为答案.