Получение git, чтобы никогда не нажимать ни одного коммита?

Я не думаю, что это возможно, но подумал, что у кого-то может быть отличное представление о том, как это сделать:

У меня есть проект, который я проверил, который существовал задолго до того, как я его принял. У меня около десятка изменений в различных файлах, которые я никогда не хочу проверять (все они изменяются в конфигурации).

Есть ли способ зафиксировать этот набор изменений, а затем никогда не нажимать на это одно сообщение? Я знаю, это звучит странно:)

уточнение:

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

Это похоже на то, что я бы хотел:

  • выбор вишни и печать этой фиксации
  • переустановите команду commit
  • толчок
  • повторно примените этот штамп к моей кодовой базе

Ответы

Ответ 1

Это аналогичный шаблон для поддержки локального набора патчей для восходящего проекта, который вы не контролируете. Самый простой способ справиться с этим - иметь промежуточную ветвь, с которой все изменения объединяются, например:

___________________________ master
\__________________________ config-changes
     \_____________________ daily-work

master содержит все, что нужно использовать. Единственными вещами, совершенными в config-changes, являются изменения, которые вы хотите легко восстановить при их совместном использовании. daily-work - это ветка, в которой вы выполняете всю свою работу. Чтобы настроить ее, выполните следующие действия:

# (no local config changes should be in master at this point)
git checkout -b config-changes master
# Make your config-related changes that you don't want to share
git commit -am "Made local config changes"
git checkout -b daily-work
# Work and commit like normal

Когда вы будете готовы поделиться своими изменениями, выполните следующие действия:

git rebase --onto master config-changes daily-work
git checkout master
git merge daily-work

Это вернет все изменения, сделанные в config-changes, но в противном случае сделайте так, чтобы вы были разветвлены непосредственно из master. Обратите внимание, что после того, как вы сделаете эту перезагрузку, если вы хотите продолжить работу в daily-work, вам нужно вернуть ее обратно на config-changes, но лучше создать новую ветку для каждого изменения.

Если вам нужно снять новые изменения с master, выполните:

git checkout master
git pull
git checkout config-changes
git merge master

Слияние повторно использует локальные изменения конфигурации для последнего мастера. Затем вы можете создать новую ветвь daily-work или объединить config-changes в старую, если это необходимо. В принципе, вы никогда не сливаетесь непосредственно из master в daily-work. Вы всегда проходите через config-changes.

Сначала кажется, что много работы, но как только вы это сделаете один или два раза, вы увидите это намного проще, чем сохранить изменения вручную.

Ответ 2

Используйте git update-index --assume-unchanged в этих файлах, чтобы git считал, что файлы не изменены.

После комментариев альтернатива состоит в том, что у вас есть отдельная ветка. Записи в этой ветке выбираются вишней и т.д. Из рабочей ветки. Поэтому, когда вы хотите нажать, переключитесь на ветвь "push", вишневый захват совершает "работу" и нажимает.

Ответ 3

Да, просто создайте отдельную ветку и сохраните эти изменения там:

git checkout -b your-new-branch
git commit -a

После того, как вы закончите совершать транзакции, вернитесь к исходной ветке и забудьте об этих изменениях.