Изменить коммит пользователя между git remotes - PullRequest
0 голосов
/ 29 ноября 2018

Я передал некоторые задачи другим пользователям.Сделал копию основного репозитория (работы) на другой удаленный (частный).Коллега передал изменения на частный пульт, и я хотел бы передать эти коммиты на работу с моим пользователем.Есть ли встроенный способ для этого в Git или некоторые обходные пути?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете сделать интерактивный перебаз с правкой:)

Перед тем, как вы нажмете (вероятно, вы хотите скрыть эту информацию;)), пожалуйста, подтвердите автор& commiter в git , чтобы не попасть в беду;)

Также учтите, что вы можете force push , если допустили ошибку.

Пример 2 коммитов:

* cd6b0ac (HEAD -> master) Fix test file
* e3e822e Add test file

Длинная версия (git log)

commit cd6b0ac5a33283743f524463d0e78a2d3e335e4d (HEAD -> master)
Author: Bob <bob@git.com>
Date:   Thu Nov 29 10:26:12 2018 +0000

    Fix test file

commit e3e822e89397fdadbd1c6e1ac6710d96590d92c6
Author: Bob <bob@git.com>
Date:   Thu Nov 29 10:25:53 2018 +0000

    Add test file

Теперь я сделаю ребаз с правкой.git rebase -i e3e822e89397fdadbd1c6e1ac6710d96590d92c6

Теперь в консоли я увижу:

pick cd6b0ac Fix test file

# Rebase e3e822e..cd6b0ac onto e3e822e (1 command)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
... (more I don't want paste)

Так что для этого коммита я выбираю e и сохраняю-> quit.

e cd6b0ac Fix test file

ТакТеперь ваше рабочее дерево будет проверено для этого коммита.Теперь вам нужно сделать 2 шага:

  1. git commit --amend --author="Dawid <dawid@git.com>"
  2. git rebase --continue перейти к следующему коммиту, который вы выбрали для редактирования или закончить перебазирование.

Теперь git log для проверки

commit ec0949d075626ed9416d74c02bcbed721b8be2fe (HEAD)
Author: Dawid <dawid@git.com>
Date:   Thu Nov 29 10:26:12 2018 +0000

    Fix test file

commit e3e822e89397fdadbd1c6e1ac6710d96590d92c6
Author: Bob <bob@git.com>
Date:   Thu Nov 29 10:25:53 2018 +0000

    Add test file

Если вы хотите выбрать больше коммитов для перебазирования, вы можете написать такую ​​вещь: git rebase -i HEAD^^ (выбрать последние 2 коммита)


Для проверкииспользуйте git log --pretty=full

commit ec0949d075626ed9416d74c02bcbed721b8be2fe (HEAD)
Author: Dawid <dawid@git.com>
Commit: Dawid <dawid@git.com>

    Fix test file

commit e3e822e89397fdadbd1c6e1ac6710d96590d92c6
Author: Bob <bob@git.com>
Commit: Bob <bob@git.com>

    Add test file

Читайте о git rebase

Другие вопросы по Simlar SO

0 голосов
/ 29 ноября 2018

Локально клонируйте репо своего коллеги и выполните, как в следующей команде:

git filter-branch --env-filter 'export GIT_AUTHOR_NAME="Super Man"; export GIT_AUTHOR_EMAIL="man@superfamily.org"'

(укажите желаемое имя пользователя и почту вместо вымышленных символов)

Предупреждение: это изменит дерево и все идентификаторы коммитов изменится

Теперь вы можете нажать его.

См. Также Изменение информации об авторе на GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...