LINUX.ORG.RU

Как в GIT перенести состояние проекта в HEAD мастера?

 


1

2

Есть последний коммит ABC в боковой ветке.

Задача

Нужно перенести всё состояние всех файлов этого коммита ABC в HEAD ветки master. В общем, нужно как бы снять полную копию рабочей директории коммита ABC и перенести ее в HEAD master. И пофигу что в master исчезнут какие-то файлы, Нужно просто в HEAD ветки master получить копию коммита ABC.

Как это сделать?

★★★★★

если «перенести» один коммит то cherry-pick, если все изменения из ветки то rebase(или merge)

ZuBB ★★★★★
()
Ответ на: комментарий от ZuBB

git cherry-pick <коммит>" — команда создает новый коммит в текущей ветви, накладывающий изменения указанного коммита.

То есть, я переключаюсь на ветку master, даю команду:

git cherry-pick ABC

И что в результате получится? К master будут применены изменения, которые были в коммите ABC. Причем непонятно - изменения только самого коммита ABC, или изменения он начала существования боковой ветки, заканчивающиеся на коммите ABC.

То есть, получится не копия состояния проекта, в котором он находится в коммите ABC, а вообще непонятно что.

Xintrea ★★★★★
() автор топика

git reset --hard ABC в мастере

mashina ★★★★★
()
Ответ на: комментарий от ZuBB

если «перенести» один коммит то cherry-pick, если все изменения из ветки то rebase(или merge)

Кстати, заметь, я говорю про «состояния», а ты говоришь про «изменения».

Мне нужно перенести состояние ABC в HEAD master.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от q11q11

то есть тебе нужно чтоб ABC стало мастером?

Если это возможно, то да. Коммит ABC боковой ветки должен стать HEAD ветки master.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от q11q11

может подойдёт мерж мастера в ABC с последующим удалением мастера и переименованием ABC в master?

А никак более явно нельзя?

И да, я же вроде написал что ABC - это коммит, а не ветка. Как можно коммит переименовать в ветку master?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

ABC - это коммит

у тебя дерево так выглядит?


* (HEAD, origin/master, master) Merge blabla-1 into master
|\
| |
| | * ABC
| |
| * Merge blabla-2 into blabla-1
| |\
| | * blabla-2
| |/

коммит ABC висит в великом ничто?

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

В общем, не получив квалифицированной помощи, сделал полную файловую копию коммита в другую директорию, переключился на ветку master, и удалил все кхерам

rm -rf *; git rm -rf *

И вкатил в рабочую директорию сохраненную копию.

Сейчас дерево выгляди так:

* commit 95e6b09f3860197ce8273effecdff67d2a052761       refs/heads/master (HEAD, origin/master, master)
| Author: xintrea <xintrea@gmail.com>
| Date:   Sun Mar 16 22:54:27 2014 +0400
| 
|     - Полный перенос состояния коммита 65120b4186488ce9b7c8a5bcf8f47cbc79225fdd
|       в HEAD ветки master
|    
*   commit c3e8a45c806839ef448294b911dd7826b4780094     refs/heads/master
|\  Merge: a906f16 081262b
| | Author: xintrea <xintrea@gmail.com>
| | Date:   Wed Nov 27 00:09:45 2013 +0400
| | 
| |     Merge branch 'master' of bitbucket.org:***/***
| |     
| |     Conflicts:
| |             misc/config/config.php
| |             misc/css/main.css
| |   
| * commit 081262b214d515aba563ded9dc8eeb9ff0896cc6     refs/heads/try_django (try_django)
| | Author: xintrea <xintrea@gmail.com>
| | Date:   Sun Nov 17 15:28:06 2013 +0400
| | 
| |     - Попытка перехода на Django
| |     
| | * commit 65120b4186488ce9b7c8a5bcf8f47cbc79225fdd   refs/heads/detached-branch (detached-branch)
| | | Author: xintrea <xintrea@gmail.com>
| | | Date:   Sun Mar 16 16:24:46 2014 +0400
| | | 
| | |     - Начата работа над шаблоном главной страницы, шаблон сделан в первом приближении
| | |    
| | * commit 38e88a98e571c9a398600e3f868cbe837e6d089f   refs/heads/detached-branch
| |/  Author: xintrea <xintrea@gmail.com>
|/|   Date:   Mon Dec 2 00:24:22 2013 +0400
| |   
| |       Исправлен начальный макет, теперь он правильно отображает по высоте колонки
| |   
* | commit a906f16ce7147911e9f950d569f2aeeb51091970     refs/heads/recover-branch (recover-branch)
| | Author: xintrea <xintrea@gmail.com>
| | Date:   Wed Nov 27 00:02:45 2013 +0400
| | 
| |     - Добавлен начальный двухколоночный макет главной страницы
| |   
* | commit e99bd9cc6df72e57632064db849b31ac5cb3830a     refs/heads/recover-branch
|/  Author: xintrea <xintrea@gmail.com>
|   Date:   Sun Nov 17 18:35:46 2013 +0400
|   
|       - Первый коммит после отката от Django
|  
* commit 0e7b5221595c44be888b27b980ab45c6ea2dde25       refs/heads/recover-branch

Кароче, не понимаю я Git и как люди им пользуются. Такую простую операцию никто не знает как надо делать.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

В общем, не получив квалифицированной помощи
Кароче, не понимаю я Git

Вот ты сам-же и ответил...
А вообще чтоб получить ответ, нужно правильно задать вопрос.

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

Ты до этого в какой системе контроля версий работал?

Сейчас дерево выгляди так:

И где в этом дереве тот самый ABC?

q11q11 ★★★★★
()
Ответ на: комментарий от Xintrea

Сейчас дерево выгляди так:
detached-branch

это ты так ветку назвал?

и по-ходу тебе нужен был просто мерж в мастер... facepalm

q11q11 ★★★★★
()
Ответ на: комментарий от Xintrea

Ответ на сообщение:

linux.org.ru - тупое школиё.

Так и есть. Предлагаю выложить пароль и общаться анонимусом. Ты окажешься в совершенно ином мире, где ты не на равне с тупым школиём, а уровнями выше.

anonymous
()
Ответ на: комментарий от q11q11

И где в этом дереве тот самый ABC?

Дык в комментарии к последнему коммиту он и написан:

65120b4186488ce9b7c8a5bcf8f47cbc79225fdd

Чуть ниже он виден в ветке с именем detached-branch.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от q11q11

и по-ходу тебе нужен был просто мерж в мастер... facepalm

Вот скажи мне, что происходит при мерже? В итоговом состоянии кода остаются изменения исходной ветки и к ним подмешиваются изменения смержиеваемой ветки. Так это никакая не копия состояния кода из коммита ABC, а непонятное месиво.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Так это никакая не копия состояния кода из коммита ABC, а непонятное месиво.

а с чего ты решил что это должна быть копия?
в общем нагугли что такое гит и коммит в рамках гита

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

В detached HEAD такое возможно.

Наверное (если коммит делался для master который совпадает с той веткой в которой делали коммит) нужно было просто мержнуть коммит, а если на основе чего-нибудь другого - сперва reset --hard для перезаписи или merge для обединения.

rictb
()

git reset --hard ABC в мастере

В данном случае нужно было именно это.

rictb
()

Три раза уже сказали

git checkout master
git reset --hard ABC
git push --force origin master

lovesan ★★
()
Ответ на: комментарий от rictb

это слишком сложно для ТС, он сам сказал не понимает как работает гит

q11q11 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.