相关疑难解决方法(0)

"git filter-branch"成功用于更改提交者/作者,但更改不反映在github上

我最近使用以下命令替换了所有本地提交中的作者,提交者和电子邮件:

git filter-branch -f --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldname" ];
then
    GIT_COMMITTER_NAME="newname";
    GIT_COMMITTER_EMAIL="newaddr";
    GIT_AUTHOR_NAME="newname";
    GIT_AUTHOR_EMAIL="newaddr";
fi

if [ "$GIT_AUTHOR_NAME" = "oldname" ];
then
    GIT_COMMITTER_NAME="newname";
    GIT_COMMITTER_EMAIL="newaddr";
    GIT_AUTHOR_NAME="newname";
    GIT_AUTHOR_EMAIL="newaddr";
fi
' -- --all
Run Code Online (Sandbox Code Playgroud)

更新在本地立即显现(例如在我的SourceTree环境中).但是,在将修改后的存储库强制推送到GitHub之后......

git push -f origin master
Run Code Online (Sandbox Code Playgroud)

......两个单独的项目顽固地拒绝让他们的提交者和作者更新:Gemfile.lock文件和一个Views目录.

还请注意:

  1. 这是我第二次在此存储库上执行此类操作.我相信我第一次遇到这样的问题.

  2. 在存储库中搜索我的旧名称...

    $ find . "<oldname">
    
    Run Code Online (Sandbox Code Playgroud)

... 确实产生了一堆结果,这意味着oldname仍然潜伏在许多存储库文件中 - 包括在GitHub和本地都出现更新的文件.

我的问题是:如何更改GitHub上两个"顽固"文件的提交者/作者?

git github git-filter-branch

6
推荐指数
1
解决办法
3755
查看次数

如何更改 GitHub 中提交的作者?

我想知道是否有办法更改在 GitHub 存储库中推送更改的人员(帐户)。

例如:我以不同的名称(不是电子邮件)推送到我的私人存储库,但我拼错了我名字的一个字母,GitHub 将提交标记为用户名而非用户名提交;

git github git-push git-commit pull-request

6
推荐指数
1
解决办法
7478
查看次数

Windows上的Git用户名和电子邮件不正确

我在Windows上使用Git并设置用户名和电子邮件:

git config --global user.name "hydRAnger"
git config --global user.email "armyiljfe@gmail.com"
Run Code Online (Sandbox Code Playgroud)

我用的时候:

git config --global --list
Run Code Online (Sandbox Code Playgroud)

我得到输出:

user.name = hydRAnger
user.email=armyiljfe@gmail.com

但是,当我使用git log作者信息应该是:

作者:hydRAnger <armyiljfe@gmail.com>

但事实上我得到了输出:

作者:未知 <hydRAnger@hydRAnger-PC.(none)>

我不知道为什么作者信息会发生变化.

windows git

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

为Python subprocess.Popen打印执行的命令

我有一个脚本,可以自动在多个git存储库上重写作者.

def filter_history(old, new, name, repoPath):

command = """--env-filter '
        an="$GIT_AUTHOR_NAME"
        am="$GIT_AUTHOR_EMAIL"
        cn="$GIT_COMMITTER_NAME"
        cm="$GIT_COMMITTER_EMAIL"

        if [[ "$GIT_COMMITTER_NAME" = "|old|" ]]
        then
            cn="|name|"
            cm="|new|"
        fi

        if [[ "$GIT_AUTHOR_NAME" = "|old|" ]]
        then
            an="|name|"
            am="|new|"
        fi

        export GIT_AUTHOR_NAME="$an"
        export GIT_AUTHOR_EMAIL="$am"
        export GIT_COMMITTER_NAME="$cn"
        export GIT_COMMITTER_EMAIL="$cm"
'
"""

#DO string replace
command = command.replace("|old|", old)
command = command.replace("|new|", new)
command = command.replace("|name|", name)

print "git filter-branch -f " + command

process = subprocess.Popen(['git filter-branch -f', command],cwd=os.path.dirname(repoPath), shell=True)
process.wait()
Run Code Online (Sandbox Code Playgroud)

该命令执行正常,但告诉我在repo历史记录中没有任何变化.但是,如果我接受打印出来的命令(应该是正在执行的命令),将其放在shell脚本中并执行它,它会改变历史记录.我认为该命令在某种程度上没有被正确执行.有没有办法可以确切地看到子进程模块正在执行什么命令?

python

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

GitHub 用户名更改(使用 noreply 作为提交的电子邮件)

看到GitHub有改名的功能,丢掉对我来说好像问题不大。然而,我意识到我一直在使用我的旧名字@users.noreply.github.com 来提交和一切。因此,那封旧电子邮件将我之前的所有提交链接在一起。有没有办法解决这个问题?

我一直在想,也许我可以用我以前的名字创建一个帐户,让感兴趣的人通过该链接?在这种情况下,重新定位 repo 或类似的东西不太适用,因为我已经向其他存储库贡献了代码,所以我的旧提交仍然在那里未完成,没有名称或电子邮件来链接帐户。

我一直在想的另一种方法是把我的名字改回来,但我想这是最后的手段。这有点不幸,但我想由于 Git 的工作方式,它必须如此。(我现在已切换到我的 gmail 电子邮件,以防将来发生这种情况)

git account rename github

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

告诉git cvsimport后两个用户是等价的

做完之后

git cvsimport
Run Code Online (Sandbox Code Playgroud)

我以前的提交列出属于用户"user"(用户是我的unix用户名).

我怎么能告诉git这些提交是我的(即,定义从"user"到我的"First Lastname <first@last.com>"git-user的映射?

git

4
推荐指数
1
解决办法
387
查看次数

移动远程分支

重写提交树重命名作者和更改电子邮件,我的本地回购和远程起源是不同步的.我是唯一的开发人员,并希望将我的本地仓库推送到原点,将origin/master更新到我的本地主分支.这是我尝试过的没有任何成功:

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$ git push
Password:
To ssh://codeguru@git.code.sf.net/p/bbct/code
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://codeguru@git.code.sf.net/p/bbct/code'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

LibGuest08@LBP-NW0345QZMH1 /e/devel/src/java/bbct (swing.0.5.2)
$ …
Run Code Online (Sandbox Code Playgroud)

git version-control

4
推荐指数
1
解决办法
2418
查看次数

使用GitKraken:GIT提交作者显示为未知

我使用Gitkraken作为我的Github源代码控件.我遵循这种方法但仍然失败了.

但是当我键入下面的命令时,我可以得到我的名字显示.

$ git config --global user.name我的名字

但是,它仍然在我的GitKraken中显示未知.我知道SourceTree的那个可以使用这个git config --global user.name "Name"技巧.

请帮忙,谢谢!

git gitkraken

4
推荐指数
1
解决办法
3425
查看次数

如何在 gitlab 上更改提交作者?

我为我的朋友制作项目,但经过几次提交后,我发现了问题。我想如果我登录他的帐户,它会像他一样创建。但它是我的另一个作者(我)创造的。我可以在 gitlab 上改变这个吗?如果是在不更改数据提交的情况下更改它的选项。

git gitlab

4
推荐指数
1
解决办法
3635
查看次数

Git:批量更改提交日期

当我需要更改各种提交的提交日期时,我使用交互式变基并一一更改它们。

我怎样才能用一个命令来改变它们呢?换句话说,我需要将给定命令应用于交互式变基中列出的所有提交。

谢谢

git git-rewrite-history

4
推荐指数
1
解决办法
2450
查看次数