Ответы пользователя по тегу Git
  • Можно ли не копировать на флэшку весь проект, чтобы перенести его из дома на работу, а просто скопировать папку .git?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Можно ли не копировать на флэшку весь проект, чтобы перенести его из дома на работу, а просто скопировать папку .git?

    Можно, если все нужные файлы закоммичены.
    Скопируешь .git в нужное место и напишешь git reset --hard чтобы восстановить рабочий каталог.
    Ответ написан
    Комментировать
  • Наверняка уже спрашивалось не раз, но все же, как?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Для начала -- добавить remote в репозиторий на другом компе:
    git remote add <имя remote> <URL>
    Если история на github совпадает с локальной историей, просто короче, то можно сразу пушить:
    git push <имя remote> <имя ветки>
    Если нет -- надо выкачивать и мёржить:
    git fetch <имя remote> <имя ветки>
    git merge <имя remote>/<имя ветки>
    <магия разрешения конфликтов>

    после чего можно пушить обратно.
    Ответ написан
    1 комментарий
  • Где хранится пароль от git clone https://user:pass@server?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Подскажите пожалуйста, где git хранит логин и пароль от данного url клонирования?

    Так прямо в remote и хранит. Набери git remote -v и полюбуйся. Или загляни в .git/config.
    Ответ написан
    Комментировать
  • Не пушится клон в оригинальную папку?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Вот он же тебе пишет возможный вариант решения:
    You can set the 'receive.denyCurrentBranch' configuration variable
    to 'ignore' or 'warn' in the remote repository to allow pushing into
    its current branch


    Зайди на свой удалённый сервер и в этот репозиторий в .git/config добавь
    [receive]
    denyCurrentBranch = ignore


    А если соберёшься работать с вычекнутой веткой на удалённом сервере -- не забудь сделать git reset --hard перед началом, чтобы синхронизировать рабочий каталог.
    Ответ написан
    1 комментарий
  • Как применить изменения к НЕ последнему коммиту?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Есть ветка и три коммита в ней AAA-BBB-CCC...
    Далее были сделаны правки, но их надо применить к коммиту BBB

    git commit -a -m fixes
    git rebase -i AAA

    перенести fixes после BBB, заменить pick перед fixes на fix.

    Всё то же самое, но автоматически:
    git commit -a --fixup BBB
    git rebase --autosquash AAA
    Ответ написан
    1 комментарий
  • Как убрать кучу лишних веток в GitHub-репозитории?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Теперь в репозитории куча веток, от которых надо избавиться. Как?

    git push <remote> :<branch-name-1-to-delete> :<branch-name-2-to-delete> ...
    Ответ написан
    2 комментария
  • Как правильней всего писать сообщения в команде /git comit -m""?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Обычно в хорошем описании можно выделить две части. Одна описывает зачем это изменение нужно: в чём была проблема/чего не хватало/что работало не так. Вторая описывает решение и документирует, почему именно это решение было выбрано.
    И это правило работает в обе стороны: если невозможно описать зачем было сделано изменение или почему оно именно такое -- это скорее всего плохое изменение.

    1 вариант: Добавляет элемент block__element3 блоку block;
    2 вариант: Добавляет текст с описанием блоку block;

    Оба в равной мере бесполезны, как и сам этот коммит, судя по всему.
    Ответ написан
    4 комментария
  • Как делать релиз при hotfix?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Существует ли в git(или на github) возможность отображать только теги мажорной и минорной версии с последним исправлением?

    Тег -- это просто строчка, смысл в неё вкладывает пользователь.
    git tag может выводить теги по маске с ключом -l.
    Ответ написан
    Комментировать
  • Есть ли возможность узнать информацию по ветке на удалённом сервере без fetch?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Есть ли возможность узнать информацию по ветке на удалённом сервере без fetch?

    Ограниченная. См. git ls-remote.

    как из консоли узнать имя последнего коммита в ветке на сервере?

    Можно узнать хеш:
    $ git ls-remote origin refs/heads/master
    2595646791c319cadfdbf271563aac97d0843dc7        refs/heads/master
    Ответ написан
    Комментировать
  • Как восстановить ветку из слияния?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    есть 2 ветки dev и feature-3. я слил ветку dev с feature-3 и запушил dev ветку на remote.
    Можно ли ветку feature-3?

    Если первая половина выглядела так:
    $ git checkout dev
    $ git merge --no-ff feature-3
    $ git push remote HEAD

    либо git merge feature-3 на втором шаге, и мёрж при этом не был фаст-форвардом, то вторую половину можно сделать так:
    $ git checkout dev
    $ git pull remote dev
    $ git checkout HEAD^2 -b feature-3

    Идея в том, что <id-мёржа>^<N> -- это голова ветки № N участвовавшей в этом мёрже.

    Если мёрж был фаст-форвардом, то dev и feature-3 -- это одно и то же.
    Ответ написан
    1 комментарий
  • Как можно запретить merge ветки staging в ветку master?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Так-же если допустим нечаянно смержили ветку staging в master, как этот косяк откатить.

    git revert -m 1 <id-of-merge-commit>
    -m 1 означает, что при мёрже мастер был первой смёрженной веткой.

    По сути в master появилась куча разбросанных по времени коммитов, а как откатить я не знаю.

    Это только выглядит так, потому что по умолчанию git log сортирует коммиты по времени. Но содержимое смёрженных веток на самом деле нигде не перемешивается, git reset или git revert коммита соответствующего мёржу отменяет все коммиты из смёрженной ветки.
    Ответ написан
    Комментировать
  • Как смержить slave ветку в master с заменой всего содержимого?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Подскажите новичку, как смержить второстепенную (допустим slave) ветку в master, чтобы она заменила все содержимое master своим, а данные из master удалились.


    Чтобы был честный мёрж и непрерывная история:
    git checkout slave
    git merge -s ours master # смёржить master в slave, оставив только содержимое slave
    git checkout master
    git merge slave
    Ответ написан
    Комментировать
  • Как сделать squash коммитов по функ. блокам внутри ветки?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Задача слохпнуть все в 5 коммитов по основным блокам. Как это сделать?

    В общем случае, не потеряв работоспособность между коммитами (если она была) -- никак.
    Если это не важно, то можно сделать git reset на начало ветки, а потом руками добавить нужные изменения и закоммитить.
    Ответ написан
    Комментировать
  • Как сказать шторму что я разрешил конфликт?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    GIT говорит что конфликт есть. Как ему сказать что я всё разрешил уже?

    Сказать гиту (после git stash pop) -- git reset [<имя файла>].
    Ответ написан
  • Как победить detached HEAD state?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Я (Петя ) пробовал так:
    1. Удалил свой проект локально усебя на компе.
    2. Клонировал проект Васи с гитхаба себе на комп.
    3. git checkout хэш_8_го_коммита_Васи

    Вот в этот момент случился detached HEAD.

    5. git remote set-url origin url_на_репозиторий_Пети.git

    Не нужно, т.к. шаг 2 уже это сделал.

    Как сделать?

    Зависит от того, как вы решите поступить с историей. Есть несколько вариантов:
    - выкинуть два ненужных коммита совсем и переписать историю начная с этого места. Для этого на шаге 3 нужно было сделать git reset --hard хэш_8_го_коммита_Васи, а при пуше в репозиторий пушить с ключом -f

    - откатить два ненужных коммита, оставив их в истории. Для этого на шаге 3 нужно было сделать
    git revert хэш_10_го_коммита; git revert хэш_9_го_коммита


    - родить новую ветку от 8-го коммита и разрабатывать дальше в ней. Для этого на шаге 3 нужно было сделать
    git checkout хэш_8_го_коммита_Васи -b имя_новой_ветки


    Ну и дальше в IDEA при попытке: VCS --> Commit... --> Commit and push... получаю сообщение "The Git repository C:\project2018wm is in the detached HEAD state"


    В вашем текущем состоянии я бы сделал следующее:
    git stash
    git checkout master # или имя ветки в которой были 8 хороших коммитов
    действия из выбранного варианта из перечисленных выше
    git stash pop
    Ответ написан
    Комментировать
  • Как в git откатить rm, порождённый merge?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Решил откатить последний merge: git reset HEAD~1
    Как вернуть состояние мастера до merge и вообще этот merge отменить?

    git reset --hard HEAD~1
    Ответ написан
    Комментировать
  • Как в git посмотреть файловую базу проекта на момент опредлённого комита?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    что вернёт его чекаут, не делая сам чекаут

    git ls-tree -r --name-only tree-ish
    Ответ написан
    Комментировать
  • Github некоторые вопросы по работе с ветками?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    И вот сам вопрос: на предыдущем скрине правильный-ли ход моих мыслей, дерево должно быть такое?

    Да.

    нужно сместить исток ветки foo на 5 коммит ветки мастер, тип такого:

    git rebase master foo
    Ответ написан
    Комментировать
  • Как удалить смерженную ветку?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Как видите, ответвление 91d2463, 3e391bf по-прежнему существует. Помогите пожалуйста от него избавиться.

    От него нельзя избавиться не переписывая истории master. Удаление ветки -- это удаление линии истории, которая заканчивается коммитом 91d2463. Но этот коммит уже замёржен в master, удаление ветки на вид master никак не повлияет.

    Я хотел бы избавиться от ответвления: 91d2463, 3e391bf чтобы история выглядела как одна линия.

    Если хочется переписать master и получить линейную историю можно сделать git rebase 3a0067f.
    Ответ написан
    Комментировать
  • Потерял весь код через git --reset merge. Как вернуть?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Хочу вернуть до состояния HEAD@{1}: commit: finished
    Проконсультировался с одним человеком, он мне сказал ввести git reset --hard HEAD~1.

    Куда хотел вернуть -- так и надо было написать:
    git reset --hard HEAD@{1} или git reset --hard 8276ba2
    Ответ написан
    Комментировать