Используя МЕРЗАВЦА, как я могу выборочно объединить изменения от одной фиксации на другом 'ветвлении'?

Выезд log4net. С log4net можно настроить консоль и файл appenders, что желание может произвести сообщения журнала к обоим местам с единственным оператором журнала.

79
задан vas 7 October 2018 в 21:30
поделиться

3 ответа

После троллинга волн мира IRC, кто-то дал отличное решение:

git cherry-pick SHA1 --no-commit
git add --patch

Надеюсь, это поможет кому-нибудь еще с тем же вопросом!

РЕДАКТИРОВАТЬ: Хорошо, может быть, это не так. совсем так просто. Вот полные шаги:

  1. Сначала вы должны войти в свой репозиторий, выполнить необходимый cd -ing, чтобы попасть в рабочий каталог.

  2. Теперь вам нужно добавить удаленную ветку, и затем принеси это. Для этого выполните:

    git remote add someUser git: //github.com/someUser/someRepo.git

    git fetch someUser

  3. Теперь вы можете запускать такие команды, как git log someUser / master , чтобы найти коммит SHA1, который вы хотите объединить «частично».

  4. После того, как у вас есть SHA, вы можете запустить:

    git cherry-pick -n SHA1

    где SHA1 это SHA фиксации, да!

  5. Вполне возможно, что будут конфликты, в зависимости от того, сколько лет фиксации и как часто меняется эта конкретная область проекта. Извините, но вам нужно вручную решить эти проблемы с помощью надежного редактора. Так что вытащите VIM или что-то еще, что вы используете, и устраняйте конфликты, пока не дойдете до стадии, когда вам нравятся изменения.

  6. Теперь вам нужно сбросить индекс до версии HEAD, затем вы можете использовать надежный GIT add --patch команда, чтобы выбрать и выбрать, какие изменения вы хотите:

    git reset HEAD

    git add --patch или git add -p

  7. Ура! Время фиксации:

    git commit -m «Я объединил выбранное количество изменений»

  8. Чтобы убрать беспорядок (то, что вы сказали «нет» в git add --patch ) и оставьте только выбранные изменения в вашем рабочем репозитории, запустите:

    git reset --hard HEAD

    По-видимому, git checkout -f также является другим вариантом.

117
ответ дан 24 November 2019 в 10:17
поделиться

Я не понимаю, что вы хотите . Если вы хотите ввести только определенные коммиты из других форков, вы можете использовать git cherry-pick SHA . Полное описание gitready .

2
ответ дан 24 November 2019 в 10:17
поделиться

Если вам нужен только порт для фиксации, вам, вероятно, лучше всего выбрать нужный коммит и сбросить файлы, которые вы не хотите трогать.

git cherry-pick SHA1
git checkout HEAD file1 file2 ... fileN

Конечно, если у вас есть несколько измененных частей в файл, и вы хотите сохранить только некоторые из них, у вас нет другого выбора, кроме как отредактировать файл вручную, исключив их изменения.

1
ответ дан 24 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: