Якщо ви використовуєте цю форму branch
команди (з початковою точкою), не має значення, де ви HEAD
знаходитесь.
Що ти робиш:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Спочатку ви встановлюєте свою HEAD
гілку dev
,
По-друге, ви починаєте нову гілку при коміті 07aeec98
. У цьому коміті немає файлу bb.txt (відповідно до вашого репозиторію github).
Якщо ви хочете запустити нову гілку в місці, яке ви щойно перевірили, ви можете запустити гілку без точки початку:
git branch test
або, як відповіли інші, відділення та оплата там за одну операцію:
git checkout -b test
Я думаю, що вас може збентежити той факт, який 07aeec98
є частиною галузі dev
. Це правда, що цей коміт є родоначальником dev
, його зміни потрібні для досягнення останнього коміту в dev
. Однак це інші зобов’язання, які потрібні для досягнення останнього dev
, і це не обов’язково в історії Росії 07aeec98
.
8480e8ae
(де ви додали bb.txt), наприклад, не в історії 07aeec98
. Якщо ви відділитеся від 07aeec98
, ви не отримаєте змін, введених 8480e8ae
.
Іншими словами: якщо ви об'єднаєте гілку A та гілку B у гілку C, то створите нову гілку з фіксацією A, ви не отримаєте змін, введених у B.
Те саме тут, у вас було дві паралельні гілки master і dev, які ви об’єднали в dev. Розгалуження з коміту master (старшого за злиття) не надасть вам змін dev.
Якщо ви хочете назавжди інтегрувати нові зміни від master до ваших гілок функцій, вам слід об’єднатися master
в них і продовжувати. Однак це створить коміти злиття у ваших гілках функцій.
Якщо ви не опублікували свої художні гілки, ви можете також перебазування їх на оновлених майстрів: git rebase master featureA
. Будьте готові вирішити можливі конфлікти.
Якщо вам потрібен робочий процес, де ви можете працювати над гілками функцій без комітів злиття та все одно інтегрувати з новими змінами в master, я рекомендую наступне:
- базувати кожну нову гілку функції на коміті master
- створити
dev
гілку за допомогою коміту master
- коли вам потрібно побачити, як ваша гілка об'єкта інтегрується з новими змінами в master, об'єднайте і master, і гілку функції в
dev
.
Не зобов'язуйтесь dev
безпосередньо, використовуйте його лише для об'єднання інших гілок.
Наприклад, якщо ви працюєте над функціями A та B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Об’єднайте гілки у dev
гілку, щоб перевірити, чи добре вони працюють з новим майстром:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Ви можете продовжувати працювати над своїми гілками об’єктів і продовжувати зливати нові зміни як з основних, так і з гілок об’єктів dev
регулярно.
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Коли настане час інтегрувати нові функції, об’єднайте гілки об’єктів (не dev
!) У master.