Короткий ответ
Иногда. git checkout -B <branch_name>
выполняет сброс, если branch_name
уже существует.
Подробности
Почему это произошло именно?
Как указано, git checkout -B <shared>
перезагружается shared
к HEAD
фиксации и проверки из shared
. Что именно это делает?
- Точка
shared
в вашем текущей ГОЛОВЕ совершить. (Это отвечает на ваш первый вопрос).
- Очистить все, что вы недавно добавили из своего индекса.
- Оформить заказ
shared
.
Другими словами, вы сбросили shared
в соответствии с feature
. Вот пример, который показывает, как вы были до checkout -B
:
> git log --oneline --decorate --all --graph
* d0d0d0d (HEAD, feature) Some commit message.
* e0e0e0e Some commit message.
* f0f0f0f Some commit message.
* g0g0g0g Some commit message.
* h0h0h0h Some commit message.
* i0i0i0i Some commit message.
| * z0z0z0z (origin/shared) Some commit message.
| * y0y0y0y (origin/shared) Some commit message.
| * x0x0x0x (origin/shared) Some commit message.
| ---- 120 more commits ----
| * w0w0w0w (origin/shared) Some commit message.
| * v0v0v0v (origin/shared) Some commit message.
| * u0u0u0u (origin/shared) Some commit message.
| /
|/
* a0a0a0a (shared) Some commit message.
* b0b0b0b Some commit message.
* c0c0c0c Some commit message.
А вот как ты после checkout -B
:
> git checkout -B shared
> git log --oneline --decorate --all --graph
* d0d0d0d (HEAD, feature, shared) Some commit message.
* e0e0e0e Some commit message.
* f0f0f0f Some commit message.
* g0g0g0g Some commit message.
* h0h0h0h Some commit message.
* i0i0i0i Some commit message.
| * z0z0z0z (origin/shared) Some commit message.
| * y0y0y0y (origin/shared) Some commit message.
| * x0x0x0x (origin/shared) Some commit message.
| ---- 120 more commits ----
| * w0w0w0w (origin/shared) Some commit message.
| * v0v0v0v (origin/shared) Some commit message.
| * u0u0u0u (origin/shared) Some commit message.
| /
|/
* a0a0a0a Some commit message.
* b0b0b0b Some commit message.
* c0c0c0c Some commit message.
shared
теперь будет иметь все изменения из feature
, вашего shared will have 6 different commits that
происхождения/общие `, а также он будет иметь 126 различных коммитов, чем ваш.
Имеет ли «перезагрузка» другое значение в этом контексте?
Сброс имеет то же значение, что и всегда. Вы в основном сделал следующее:
git checkout shared
git reset --mixed feature
Хороший Fix
Все, что я хотел сделать, было тянуть вниз совместно и сливаются в особенности. Есть ли способ отменить это?
Комментарий @ kdopen предлагает хорошее исправление. Хотя оба варианта fetch
и --hard
на reset
являются необязательными (подробности см. В комментариях к вопросу). Вот мое измененное исправление.
git checkout shared
git reset origin/shared
Это должно тебя в таком положении, из которого можно объединить в вашей feature
отрасли, как предполагалось.
* d0d0d0d (feature) Some commit message.
* e0e0e0e Some commit message.
* f0f0f0f Some commit message.
* g0g0g0g Some commit message.
* h0h0h0h Some commit message.
* i0i0i0i Some commit message.
| * z0z0z0z (HEAD, shared, origin/shared) Some commit message.
| * y0y0y0y (origin/shared) Some commit message.
| * x0x0x0x (origin/shared) Some commit message.
| ---- 120 more commits ----
| * w0w0w0w (origin/shared) Some commit message.
| * v0v0v0v (origin/shared) Some commit message.
| * u0u0u0u (origin/shared) Some commit message.
| /
|/
* a0a0a0a Some commit message.
* b0b0b0b Some commit message.
* c0c0c0c Some commit message.
Вы в основном принудительно обновляете 'shared', чтобы указать на' feature', а затем изменить его. Восстановление через reflog кажется подходящим. –
Если вы хотите, чтобы ваша ветка 'shared 'вернулась в соответствие с' origin/shared', просто выполните git checkout shared && git fetch && git reset --hard origin/master' – kdopen
@kdopen Ваше предложение выше будет просто сделайте мою локальную ветку '' shared'' соответствующей удаленной. И тогда я могу просто слиться в '' feature'', как обычно? Будет ли последняя команда '' git reset --hard origin/shared'' – Jeff