Чому б ви не здійснили об’єднаних змін негайно?


16

Мій офіс використовує Git та SourceTree для контролю версій. Це сталося тому, що коли я приєднався, було нульове управління версіями і SourceTree була єдиною системою, яку я коли-небудь використовував. Я не є експертом будь-яким способом, але я найдосвідченіший з моїх колег, тому я фактично фахівець, який навчає всіх користуватися Git належним чином і виправляти будь-які помилки, які вони роблять.

Я готую документ підручника, який проходить через Git та SourceTree і пояснює кожен крок процесу. У процесі витягування діалог SourceTree дозволяє вибрати параметр "Зробити об'єднані зміни негайно". Я розумію, що це робить і чому це корисно. Я не розумію, чому хтось не хоче використовувати цю функцію.

Чи може хтось пояснити, чому ви ніколи не хочете, щоб ваші об’єднані зміни здійснювалися автоматично? Я намагаюся зрозуміти міркування, щоб я міг краще пояснити корисність функції та зрозуміти, на які підводні камені слід звернути увагу в майбутньому.

Редагувати: я не вважаю, що моє запитання є дублікатом пов'язаного питання. Пов'язане питання в основному задає питання про те, як часто вчиняти. Я запитую про те, чому можна було б не використовувати певну функцію, пов’язану із здійсненням злиття в SourceTree.



1
Ви хочете поважних причин? Оскільки я можу навести різні причини, щоб затримати перевірку коду, який я чув, як люди говорять у дикій природі, але мало хто з них є вагомими причинами.
whatsisname

Єдина причина, про яку я можу подумати, - це коли злиття не вдається через конфлікти злиття. Але SourceTree не бере на себе зобов'язання, якщо це все-таки станеться.
Роберт Харві

Зі сторони: Чому ви пишете власний підручник? bitbucket вже має чудовий підручник. confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace Ми не використовуємо Bitbucket; ми зберігаємо все в локальній мережі. Я посилаюся на чудовий підручник Atlassian , але мені хотілося чогось більш короткого, що я міг би подати людям, які були абсолютно новими в Git та контролі версій. Це справді більше вступу та процедурного "це те, як і чому ти робиш / натискаєш / тягнеш / тощо", щоб люди могли бити на землю.
Девід К

Відповіді:


26

Я не хотів би використовувати цю функцію.

Те, що не було конфліктів, означає майже те, що зміни, об'єднані в моєму відділенні, приблизно не відповідають тим же рядкам коду, що і ті, які я вніс. Це не означає, що ці зміни сумісні з моїми змінами. Це не означає, що код складеться, або що код буде працювати, або що тести пройдуть.

Іншими словами, використовуючи цю опцію, я потенційно закінчуюсь хибною фіксацією коду, який може бути не в хорошому стані, і який вимагає нового виправлення для виправлення. Оскільки я завжди виконую цю роботу, і тому що я ніколи не повинен підштовхувати цей хибний загін вище за течією, навіть помилково (Боже, забороняє, хтось може потім об'єднати це в якусь іншу гілку!), Я не бачу причин створювати цю команду в першій місце.


Імовірно, ви створюєте гілки функцій і не об'єднуєте кожну невелику зміну з основною гілкою. Злиття навряд чи викличуть конфлікти у відділенні функції, якщо декілька людей не працюють над одним класом у одній гілці функцій.
Роберт Харві

4
@RobertHarvey Так, але, мабуть, я часто об'єдную основну гілку у свою гілку. У вашому коментарі є приховане припущення, що різні функції природним чином торкаються різних класів / модулів, але не всім пощастило. На помилку, у вас є десь клас Бога, до якого потрібно торкатися кожного, хто робить що-небудь, і ви не можете цього багато зробити. Також є наскрізні функції (оновіть деяку бібліотеку, через яку один з кожні 10 рядків коду потрібно змінити ...) Я знаю аргумент "намагайся не потрапити туди", але що робити, якщо ти вже там? Краще перестрахуватися, ніж потім шкодувати.

2

Після об'єднання можливі зміни у файлах локального репо. Ці зміни не здійснюються автоматично для місцевих, якщо ви не встановите "Негайно здійснити об'єднані зміни".

Якщо цю опцію не встановити, файли в SourceTree відображаються як неподані зміни.

Це тому, що сам Git не виконує зобов'язання, якщо ви прямо не скажете це, а SourceTree - це графічний інтерфейс Git. «Commit злитих змін негайно» варіант не так варіанти, так як це команда швидкого доступ.

Отже, причина не хоче використовувати цю функцію очевидна: ви хочете виконувати фіксування вручну, або взагалі не потрібно.

Скажімо, ви підтягуєте майстра до своєї функції. Співробітник працює над іншою галуззю. Цей колега має історію ламання речей. Злиття містить зміни до спільного загального коду, внесеного цим співробітником. Отже, ви - разом з іншою частиною команди - не здійснюєте об'єднаних змін, поки не будете впевнені, що цього колега не зробить ніяких змін, які вплинуть на вашу роботу.

Просто тому, що немає поважних причин - теоретично - не використовувати цю функцію, насправді може бути будь-яка кількість вагомих причин. Що стосується вашого підручника, я би просто сказав, що "99 разів із 100, це варіант, який ви хочете використовувати". Я не думаю, що вам дійсно не потрібно вникати в деталі щодо того, щоб не використовувати його, особливо якщо інші користувачі не можуть контролювати версії. Все залежить від того, наскільки глибоко ви маєте намір підручник.


2

Якщо ви використовуєте гачок для публікації повідомлень для автоматичного відштовхування ваших зобов’язань (як у /programming//a/7925891/6781678 ), можливо, вам знадобиться ця опція, щоб уникнути натискання на деякі зобов'язання сумнівної якості.

Я ніколи не використовував би жодного.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.