рабочий процесс git, включающий много, но не все коммиты из многих форков - PullRequest
3 голосов
/ 11 февраля 2010

У меня есть git-репо. Он был разветвлен несколько раз, и на нем было сделано много независимых коммитов. Все нормально, как то, что происходит во многих проектах, размещенных на github.

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

Рабочий процесс, которому я следовал, который не является оптимальным, состоит в том, чтобы создать ветку имени github-username и объединить изменения с моим мастером и отменить любые изменения в коммите, которые мне не нужны (их немного, поэтому работал).

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

Каков рабочий процесс для этого? И какой графический интерфейс (gitk?) Позволяет мне видеть все разные отдельные коммиты.

Я понимаю, что слияние должно быть основной частью рабочего процесса, а не вишневым выбором, поскольку оно создает другой коммит (с точки зрения git). Даже перебрасывание других изменений поверх моих, возможно, не сохранит историю на графике, чтобы указать, что это его коммиты, которые я перебил. Итак, как мне игнорировать всего несколько коммитов из многих из них?

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

1 Ответ

2 голосов
/ 15 апреля 2010

Обычно это то, для чего вы будете использовать пульты. Для каждой вилки вы можете добавить новый пульт: git remote add <name> <url>. Затем вы можете получить все их удаленные коммиты: git fetch <name>. Затем вы можете использовать любой инструмент визуализации, который вы хотите на удаленных ветвях. Также как у вас есть источник / мастер, у вас будет / мастер. Оттуда вишня с другого пульта так же легка, как вишня с ветки по происхождению.

Исходный пульт никоим образом не является частным случаем удаленного репо. Это просто имя по умолчанию для удаленного репо, с которого вы изначально клонировали. Его можно переименовать, если вам не нравится название источника.

Если вы не знаете, все инструменты графического интерфейса позволяют увидеть больше, чем просто историю вашей текущей ветки. Когда вы запускаете что-то вроде tig, qgit или gitk, вам просто нужно передать - все, чтобы оно показывало вам каждую ветку, о которой он знает, локальную и удаленную.

...