Chinaunix首页 | 论坛 | 博客
  • 博客访问: 807114
  • 博文数量: 296
  • 博客积分: 5376
  • 博客等级: 大校
  • 技术积分: 2298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 19:02
文章分类

全部博文(296)

文章存档

2023年(2)

2020年(2)

2018年(2)

2017年(26)

2016年(4)

2015年(19)

2014年(12)

2013年(26)

2012年(84)

2011年(50)

2010年(41)

2009年(28)

分类: LINUX

2016-12-21 16:59:04

http://lmbj.net/blog/how-do-i-change-the-author-of-a-commit-in-git/

这个问题来源于我的实际应用中的需求,在得问发起提问:,具体如下:

修改上一次提交的用户名和Email可以用以下命令:

git commit –amend –author=‘Your Name you@example.com’

我现在的需求是这样的:项目中git初始化时未指定name和email,使用了全局的name和email设置,已经提交过N次,假设10次。但是我希望这个项目使用自己的name和email,而不是全局的。那么该如何修改N次已提交的name和email?

我明确的知道肯定有这样一个操作,可以一次完成,但是苦于不知道这是怎样一个操作。有兄弟回答,给出答案:,大概明白了意思,感觉要写一个脚本,但是只是用过简单的git命令,自己写不出,然后顺着这个方向找,找到。可以说是一模一样的需求(怎么没想到用英文搜索答案??估计想到,也拼装不出这句吧?)。这里的答案给出了具体的脚本,其中github上的 解决方案比较完美,或者说扩展了这个需求,不仅仅解决这个问题。以下是实现代码:



点击(此处)折叠或打开

  1. # !/bin/sh
  2. git filter-branch --env-filter '
  3. an="$GIT_AUTHOR_NAME"
  4. am="$GIT_AUTHOR_EMAIL"
  5. cn="$GIT_COMMITTER_NAME"
  6. cm="$GIT_COMMITTER_EMAIL"
  7. if [ "$GIT_COMMITTER_EMAIL" = "your@email.to.match" ]
  8. then
  9. cn="Your New Committer Name"
  10. cm="Your New Committer Email"
  11. fi
  12. if [ "$GIT_AUTHOR_EMAIL" = "your@email.to.match" ]
  13. then
  14. an="Your New Author Name"
  15. am="Your New Author Email"
  16. fi
  17. export GIT_AUTHOR_NAME="$an"
  18. export GIT_AUTHOR_EMAIL="$am"
  19. export GIT_COMMITTER_NAME="$cn"
  20. export GIT_COMMITTER_EMAIL="$cm"
  21. '


阅读(1251) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~