我不小心在我的存储库中通过"unknown"创建了提交,并决定尝试从这里运行命令:
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "unknown" ];
then
GIT_COMMITTER_NAME="..";
GIT_AUTHOR_NAME="..";
GIT_COMMITTER_EMAIL="...";
GIT_AUTHOR_EMAIL="...";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
Run Code Online (Sandbox Code Playgroud)
起初我觉得一切都很好,直到我在gitk中注意到,在运行之前的每个提交都是重复的,而不是像我原先想的那样简单地编辑.
有可能清理它吗?
编辑:好的,gitk显示旧的提交(混合了"未知"的提交者)和新提交(重写的提交),在中途分开一定点.想想一堆提交,然后复制(和编辑),并堆叠在原始提交之上.我想要做的就是尽可能删除原来的.
我第一次犯时犯了一个错误.我在另一个人的计算机上并用他们的user.name而不是我的推送了一个版本.我怎么能删除这个?
我将树重写到我的git存储库以修复作者姓名和电子邮件地址中的错误.现在,我正在尝试将固定树推送到Source Forge上的repo.CharlesB告诉我如何更新Source Forge服务器上的配置文件.我的配置文件如下所示:
[codeguru@shell-24003 bbct]$ cat config
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedrepository = 2
[receive]
denyNonFastforwards = false
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试强制推送时,我收到以下错误:
$ git push -f
Password:
Counting objects: 464, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (148/148), done.
Writing objects: 100% (452/452), 470.65 KiB, done.
Total 452 (delta 268), reused 417 (delta 247)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To ssh://codeguru@git.code.sf.net/p/bbct/code
! [remote rejected] master …Run Code Online (Sandbox Code Playgroud) 有一个 git repo,其中包含不正确的贡献者及其贡献。Repo 很少有来自不同电子邮件和别名的提交,我们已添加.mailmap以解决此问题。
Shortlog 会相应地识别.mailmap和分组贡献,但它不会反映在 GitHub 上。GitHub 是否考虑.mailmap文件,或者我们应该等待 GitHub 重新运行图表。
git shortlog -sne
Run Code Online (Sandbox Code Playgroud)
注意:我们已经等了24小时
我已经知道如何更改提交的作者(作者和提交字段),
git rebase --root --exec "git commit --amend --reset-author --no-edit"
Run Code Online (Sandbox Code Playgroud)
但随着作者的变化,日期(作者日期和提交日期)从当前日期开始发生变化。如何保存旧日期并同时更改作者?
我使用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是我需要的.不过,我无法做到这一点.
我最近在GitHub上开了一个回购.我是Git的新手.和新手一样,我承诺使用默认名称和电子邮件,我在最好的noob传统中发现了五次提交为时已晚.现在开始有趣了,因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息.精细.我基本上找到了以下信息和很多副本:
这个问题似乎并不少见.我只能说没有一个解决方案有效.其中一半是同一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新手来说太过分了.提前致谢.
当我从windows github客户端推送提交到github repo时,我可以在历史记录中看到我的github用户名并链接到我的个人资料,如下所示:
初始提交[ 用户名 ]
但是,当我从SourceTree推送更改时,在提交历史记录中,它看起来像:
初始提交[mac_username]
我希望我在github.com上的历史看起来像第一个例子(使用github用户名和链接到配置文件)我应该在SourceTree中启用哪些设置来获取它?
如果提交已经完成并推送到存储库,并且如果想要为某个特定提交更改作者,我可以这样做:
git commit --amend --reset-author
Run Code Online (Sandbox Code Playgroud)
但是,这将改变原始的承诺日期.
如何重置作者,但保留原始提交者日期?
如果我有 gitlab 帐户,\n用户名:account1\nemail:email1@outlook.con
\n\n终端中的初始设置:
\n\ngit config --global user.name account1\ngit config --global user.email email1@outlook.con\nRun Code Online (Sandbox Code Playgroud)\n\n如果我有另一个 gitlab 帐户,\n用户名:account2\nemail:email2@outlook.con
\n\n当我更改用户信息时:
\n\ngit config --global user.name account2\ngit config --global user.email email2@outlook.con\nRun Code Online (Sandbox Code Playgroud)\n\n我将文件推送到 gitlab ,“活动”信息仍然显示 account1。
\n\n我通过 https 路径通过 tortoisegit 推送文件。
\n\n我发现即使删除了gitlab中的SSH KEY,仍然可以通过https路径推送文件。
\n\n我需要重置?\n我该怎么办?
\n\n\xef\xbc\x8a我删除了git并重新安装,发现用户信息仍然存在...
\n