相关疑难解决方法(0)

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

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

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

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

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

为什么git-filter-branch没有重写标签?

我需要将我的git repo分成两部分.我使用了这里显示的步骤:Detach(move)子目录到单独的Git存储库中

我使用的命令是:

 git filter-branch --subdirectory-filter ABC HEAD -- --all
Run Code Online (Sandbox Code Playgroud)

这似乎很好,并留下了ABC作为根.

但是现在,如果我尝试检查在拆分回购之前存在的标记:

 git checkout an-old-tagname
Run Code Online (Sandbox Code Playgroud)

它正在重新创建旧的目录结构 - 所以重新创建ABC作为子目录,以及XYZ1和XYZ2.

我知道回购真正看到了那个时间点 - 但我希望标签只引用ABC位,好像它们当时已经在根部.我认为这是filter-branch在重写历史时所做的事情,但显然我并没有正确地理解它.

如何重新编写标签,以便我可以回到过去,同时仍然将ABC作为回购的根源?

git git-filter-branch

9
推荐指数
1
解决办法
4103
查看次数

如何在git存储库中重写提交者名称?

我使用git svn将Subversion存储库转换为Git,但遗憾的是现在只注意到一些作者信息是错误的.转换后的存储库尚未与任何人共享,因此我想重写其中的提交日志 - 如果可能的话.

如何重写git存储库,以便所有提交的日志显示,例如

Author: John Doe <john.doe@example.com>
Run Code Online (Sandbox Code Playgroud)

代替

Author: John Do <john.do@example.com>
Run Code Online (Sandbox Code Playgroud)

我自己尝试这样做,似乎git-filter-branch是我需要的.不过,我无法做到这一点.

git

7
推荐指数
1
解决办法
2046
查看次数

更改先前提交的作者姓名:快进推送被拒绝

我最近在GitHub上开了一个回购.我是Git的新手.和新手一样,我承诺使用默认名称和电子邮件,我在最好的noob传统中发现了五次提交为时已晚.现在开始有趣了,因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息.精细.我基本上找到了以下信息和很多副本:

  1. http://help.github.com/change-author-info/

  2. 从Git中的分支中删除提交

  3. 如何在保持更改的同时从Git存储库中删除选定的提交日志条目?

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

  5. 在一个特定的提交中更改提交作者

  6. 用Git更改项目的第一次提交?

  7. 我可以在之前的所有提交中更改我的姓名吗?

这个问题似乎并不少见.我只能说没有一个解决方案有效.其中一半是同一git filter-branch -f --env-filter剧本的变体.我尝试多次处理该脚本.问题是在应用脚本后,我无法推送."快进推动被拒绝"或类似的东西.好吧,唯一的方法就是拉.拉动后,所有旧信息再次出现+带有新信息的新分支.我已经坐在这里有四个分支,以最恶劣的方式合并,都包含不同作者姓名的相同信息,包括我想删除的那个.

可以简短地删除它,我也试图删除选定的提交,这会产生我无法解决的令人毛骨悚然的冲突(如何???),并使用正确的作者信息将一些提交压缩到更新的提交中,导致当前项目状态遭到破坏.更好的是,我在执行后有时会出现分段错误git rebase -i,我在此通知:http://lists-archives.org/git/729800-rebase-i-segmentation-fault-and-another-problem.html完全是逻辑.(谢天谢地)唯一有用的是git rebase --abort,它多次保存了我的屁股.

我希望我的挫折感不会被击退,而是逗你,激励你去帮助我.我想要:

  • 最后删除所述作者信息

  • 奖励:摆脱包含相同信息的所有分支.

但是我对第一个也很满意,如果在没有破坏当前状态的情况下删除过去的分支的障碍对于一个git新手来说太过分了.提前致谢.

git github

7
推荐指数
1
解决办法
9483
查看次数

Git命令可以破坏/重写历史记录

你能提供一个(全部或最常见的)操作或命令列表,这些操作或命令会危害git中的历史记录吗?

什么应该绝对避免?

  1. 推送此提交后修改提交(git commit/ git push/ git commit --amend)
  2. 重新启动已经推动的东西

我希望这个问题(如果它还没有在其他地方之前提出过)成为关于git常见的可避免操作的某种参考.

此外,我使用git reset了很多,但我还没有完全意识到我可以对存储库(或其他贡献者副本)造成的损害.可能git reset有危险吗?

git github git-rewrite-history

6
推荐指数
3
解决办法
1472
查看次数

Git 变基和签名提交

让我们假设一个 git 存储库满足以下条件:

  • 大多数提交都已签名。
  • 经常使用变基,以便拥有干净的历史记录。
  • 有时多人在同一分支机构工作。
  • 假设签署提交意味着签署等效的差异,而不是签署存储库的整个状态(尽管签署的提交也签署了祖先的哈希值)

现在,我想重新建立一个分支,我在那里完成了部分工作,并且一位同事推送了一些提交;我想“保留”我所做的提交上的签名(即重新签署我用新历史记录所做的所有提交,即使在合并冲突的情况下),但不签署不是由我编写的工作(即。我更喜欢丢失同事提交的签名,而不是签署它们)。

我可以使用(就像在回答这个问题git rebase -S时提出的那样);但这也会签署我同事的承诺。

有没有办法做到这一点?

git version-control sign

5
推荐指数
1
解决办法
3928
查看次数

删除所有 git 提交的时间和时区,但保留日期

我想删除在存储库中创建的所有提交的时间,尤其是时区信息。那可能吗?如果不是,是否可以简单地将时间00:00和时区设置为+0000
(顺便说一句,我想保留日期。这只是我不想要的时间和时区。)

我只发现了关于更改所有提交的作者的问题,但没有发现关于仅更改所有提交中的属性以保留剩余信息的问题。

是的,我知道人们可以通过其他方式找到我住的地方等,但这对我来说已经足够了。

git git-commit

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