NexxDigital - компьютеры и операционные системы

Если вы хотите получше узнать те части git, про которые раньше боялись спросить, то этот список для вас. Тут собраны наиболее типичные ситуации и способы их решения как из личного опыта автора, так и собранные по всему Интернету.

Ошибка в комментарии к коммиту

Если коммит еще не был отправлен на сервер (push), то можно воспользоваться простой командой, позволяющей редактировать текст сообщения к последнему коммиту.

Отслеживание фильтра, карты Канбана, спринтеры и запросы

Запрос на мобильную версию рабочего элемента. Наряду с хорошей средой, он поддерживает оптимизированные элементы управления для всех типов полей. Мобильная версия формы рабочего элемента. Все сетки отслеживания заготовки теперь используют наш регулярный и последовательный фильтрующий компонент. В дополнение к использованию фильтрации ключевых слов в отображаемых столбцах и выборе тегов теперь вы можете фильтровать типы, статусы и назначения, чтобы быстро перейти к работам, которые вы ищете.

git commit --amend

Как отменить последний коммит?

Можно использовать git reset, вот так:

git reset --hard HEAD~1

HEAD~1 означает один коммит до HEAD т.е. до текущего положения. Стоит заметить, что это “ядерный” способ, который отменит все изменения. Если вам нужно сохранить всё, что вы сделали, но еще не успели закоммитить, используйте:

git reset --soft HEAD~1

Разверните и отобразите пустые поля на вкладке Канбан

До сегодняшнего дня у вас есть возможность добавлять поля на карту, а затем скрывать пустые поля в настройках карты, чтобы избавиться от ненужной ненужной информации на карте. Недостатком этой функции было то, что после скрытия пустого поля вы могли обновить ее только путем открытия формы рабочего элемента. Просто переместите указатель мыши на карту и нажмите двойную стрелку вниз в нижней части карты, чтобы обновить скрытое поле. Скрытое поле на вкладке Канбан.

Блокирование записей задания по расширению

Нажмите кнопку двойного стрелка вниз в нижней части вкладки, чтобы обновить поле. Пользовательские элементы управления, группы и страницы в форме рабочего элемента теперь могут использоваться для проверки данных и обеспечения того, чтобы пользователь заполнял всю необходимую информацию перед сохранением формы рабочего элемента.

Удалить ветку на сервере

git push origin --delete имя_ветки

В чём разница между “git pull” и “git fetch”?

git pull - это по сути git fetch после которого сразу же следуюет git merge . git fetch получает изменения с сервера и сохраняет их в refs/remotes/ . Это никак не влияет на локальные ветки и текущие изменения. А git pull уже вливает все эти изменения в локальную копию.

Непосредственно добавляется в планы доставки

Новые идеи могут появиться в любое время, поэтому мы добавили новые функции в ваши планы доставки. Просто нажмите кнопку «Новый элемент», которая появляется при перемещении мыши, введите имя и нажмите «Ввод». Новая функция с контуром области и итерационным путем создается, как вы ожидаете.

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

Как отменить “git add” до коммита?

Вы выполнили git add имя_файла случайно и хотите отменить добавление этого файла. Если коммит еще не был сделан, то поможет:

git reset имя_файла

Как разрешать конфликты слияния?

Используйте git mergetool , которая предоставляет удобный интерфейс для разрешения конфликтов.

Удалить все локальные файлы и директории, которые не отслеживаются гитом из вашей текущей копии

Осторожно! Лучше сделайте бэкап перед этим.

Идентификация устаревших филиалов

Когда вы удаляете ветви, которые вам больше не нужны, и сохраняйте ваше хранилище в чистоте, команды смогут найти нужные им ветви и установить фавориты на правильный уровень детализации. Однако, если у вас много филиалов в магазине, может быть трудно определить, какие из них неактивны и которые можно удалить. Теперь нам стало легче идентифицировать «устаревшие» ветви. Устаревшие филиалы можно просмотреть, перейдя в раздел «Устаревший стержень» на странице «Филиалы».

Найдите удаленную ветку и создайте ее снова

Когда ветвь случайно удаляется с сервера, может быть трудно понять, что с ней произошло. Теперь вы можете найти удаленную ветку, узнать, кто и когда она была удалена, и при необходимости заново создать ее. Чтобы найти удаленную ветвь, введите имя всей ветки в поле поиска филиала. Поиск возвращает все существующие ветви, соответствующие тексту поиска. Вы также увидите возможность найти точное совпадение в списке удаленных филиалов. Вы можете искать удаленные ветки, щелкнув ссылку.

Клонировать все ветки с сервера

Скорее всего, вы это уже сделали, а ветки просто скрыты. Вот команда, чтобы показать их все:

Можно использовать git checkout origin/имя_ветки, чтобы посмотреть на нужную ветку. Или git checkout -b имя_ветки origin/имя_ветки, чтобы создать локальную ветку, соответствующую удалённой.

Переименовать локальную ветку

git branch -m oldname newname

Найти подтверждения в строках, начинающихся с префикса

Поиск удаленных филиалов. Если есть совпадение, вы увидите информацию о том, кто и когда удалена ветка. Вы также можете восстановить ветвь. Восстановите удаленную ветку снова в подтверждении последнего. Однако принципы или привилегии не продлеваются. Если у вас есть строковая структура в иерархическом формате, где все строки имеют префикс в виде текстовой строки, эта функция поможет вам найти подтверждение во всех строках, начинающихся с текстовой строки.

Большие выноски пузыря, чтобы принять изменения на странице с информацией о подтверждении

Найти подтверждение. На этикетках пузырьков для принятия изменений на странице сведений о подтверждении отображается более релевантная информация, которая поможет вам улучшить диагностику. Теперь первый вызов изменений также отображается на ярлыке пузырька, в котором указано подтверждение для всех ветвей, и запрос на принятие изменений, связанных с ветвью по умолчанию.

Вернуться к любому коммиту

Можно использовать reset, как показано ранее, но это будет означать, что вы хотите навсегда вернуться к тому состоянию, в котором вы были, а не просто посмотреть на него (для этого надо сделать checkout). Идентификатор коммита должен быть такой, как он прописан в выводе команды git log .

git reset --hard идентификатор_коммита

Просмотр дерева фильтров в коде

Теперь вам не нужно просматривать все файлы, которые могут изменить подтверждение, чтобы получить нужные файлы. Древовидная информация на странице сведений о подтверждении, запрос запросов на изменение, детали отложенных наборов и данные об изменениях теперь поддерживают фильтрацию файлов и папок. Это интеллектуальный фильтр, который показывает файлы дочерних папок при фильтрации по имени папки и свернутое древовидное представление при фильтрации по имени файла, чтобы сделать файловую иерархию видимой.

Еще раз повторим, что это отменит все текущие изменения, так что убедитесь, что это действительно то, что вам нужно. Или используйте --soft вместо --hard .

Удалить подмодуль (submodule)

Создание подмодулей используется довольно редко, но иногда они всё таки нужны. Так что вот что вам нужно:

git submodule deinit submodulename
git rm submodulename
git rm --cached submodulename
rm -rf .git/modules/submodulename

Измените страницу обновления филиала на страницу «Вставка»

Найти файл или папку. Отфильтрованное отображение в дереве подтверждения. Страница «Обновления деревьев» предлагает отличные варианты. Но он был скрыт в форме стержня в центре Истории. Теперь страница обновления филиала будет видна как раздел «Вставить» в разделе «Код», а также подтверждения, ветви, теги и запросы об изменениях.

В то же время Центр истории переименовывается в «Подтверждение», потому что в центре отображается только подтверждение. Мы получили обратную связь о том, что люди испытывают трудности с копированием вопросов подтверждения, потому что в окне списка подтверждения содержится только подробное время перехода.

Перезаписать локальные файлы во время git pull

Вам снова поможет git reset:

git fetch --all
git reset --hard origin/master

Как добавить пустую директорию в репозиторий?

Никак! Это просто не поддерживается и считается, что вам это не нужно. Но есть один трюк. Можно создать файл.gitignore в нужной директории со следующим содержимым:

# Игнорируем всё в этой директории
*
# Кроме самого файла.gitignore
!.gitignore

Сохраняйте имя файла при переходе от файлов к подтверждению

Страница подтверждения. Из-за этого пользователям приходится загружать несколько файлов и фильтровать контент, чтобы найти нужный файл. Разработчики обычно работают в одном каталоге, и они хотят сохранить каталоги, над которыми они работают, когда отслеживают изменения. Теперь имя файла изменяется на код, когда центральные опорные точки перемещаются, независимо от количества файлов, которые были изменены в подтверждении.

На странице «Бренды» вы можете увидеть все теги в магазине. Если вы управляете всеми тегами, выпущенными, пользователь может посетить страницу тега, чтобы получить полный обзор всех выпущенных версий продукта. Разница между упрощенной и аннотированной меткой здесь на первый взгляд, потому что аннотированные теги вместе с подтверждением показывают маркер и дату создания, тогда как для упрощенных меток вы найдете только информацию о подтверждении.

Экспортирование исходников, аналогично “svn export”

Используйте git archive , например так:

git archive --format zip --output /путь/к/файлу/файл.zip master

Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит

git checkout -- .

Создать новую ветку на сервере из текущей локальной ветки

git config --global push.default current
git push -u

Восстановить удалённый файл

Сначала нужно найти последний коммит, где файл еще существовал.

Могут быть случаи, когда вы хотите удалить тег из удаленного репозитория. Это может быть опечатка во имя тега или неправильное подтверждение. Вы можете легко удалить теги в веб-интерфейсе пользователя, щелкнув маркер метки на странице «Теги» и выбрав «Удалить отметку».

Вы должны удалить предупреждающие знаки из удаленных репозиториев. В старых хранилищах количество брендов со временем может значительно увеличиться. Также могут быть хранилища, в которых создаются метки иерархии, что может затруднить создание бренда. Теперь вы можете предоставить пользователям хранилища точное разрешение на управление тегами. Вы можете разрешить пользователям удалять или управлять тегами из этого интерфейса.

Удалённые ветки - это ссылки на состояние веток в ваших удалённых репозиториях. Это локальные ветки, которые нельзя перемещать; они двигаются автоматически всякий раз, когда вы осуществляете связь по сети. Удалённые ветки действуют как закладки для напоминания о том, где ветки в удалённых репозиториях находились во время последнего подключения к ним.

Автоматическое заполнение рабочих элементов при заполнении запросов о принятии изменений

Если вы связываете рабочие элементы с запросами о принятии изменений, вам будет проще обновлять всю информацию. Теперь, когда вы выполнили запрос на изменение, у вас есть возможность автоматически завершить связанные рабочие элементы после успешного присоединения к запросу на изменение. После завершения запроса на изменение вам больше не нужно помнить, что вам нужно вернуться к рабочим элементам, когда вы хотите обновить их статус.

Сброс голосов при вставке или повторном повторе

Это будет сделано автоматически для вас. Завершение связанных рабочих элементов. Команды, которые требуют более строгого одобрения в своих запросах принять изменения, могут теперь выразить свое согласие и сбросить голоса при внесении новых изменений. Настройка речевого сброса.

Они выглядят как (имя удал. репоз.)/(ветка) . Например, если вы хотите посмотреть, как выглядела ветка master на сервере origin во время последнего соединения с ним, проверьте ветку origin/master . Если вы с партнёром работали над одной проблемой, и он выложил ветку iss53 , у вас может быть своя локальная ветка iss53 ; но та ветка на сервере будет указывать на коммит в origin/iss53 .

Когда вы установите этот параметр, все голоса от всех рецензентов будут сброшены каждый раз, когда обновляется ветка источника запроса для принятия изменений. Временная шкала запроса на изменение создает запись всякий раз, когда голоса сбрасываются в результате использования этой опции.

Фильтрация дерева запросов для принятия изменений по имени файла

Сброс голосов на временной шкале. Поиск конкретного файла в запросе на изменение проще, чем когда-либо прежде. Новое поле фильтрации в представлении «Файлы» позволяет пользователям фильтровать список файлов в древовидном представлении. Найти файл или папку в запросе на изменение.

Всё это, возможно, сбивает с толку, поэтому давайте рассмотрим пример. Скажем, у вас в сети есть свой Git-сервер на git.ourcompany.com . Если вы с него что-то склонируете (clone), Git автоматически назовёт его origin , заберёт оттуда все данные, создаст указатель на то, на что там указывает ветка master , и назовёт его локально origin/master (но вы не можете его двигать). Git также сделает вам вашу собственную ветку master , которая будет начинаться там же, где и ветка master в origin, так что вам будет с чем работать (см. рис. 3-22).

Другие варианты фильтрации комментариев по запросам на изменения

Фильтр ищет совпадение во всех частях пути файла в запросе на изменение, чтобы вы могли искать по имени папки, частичному пути, имени файла или суффиксу. Оба комментария в обзоре запросов на принятие изменений и в виде файла одинаковы. Вы также можете отфильтровать только те обсуждения, в которых вы участвовали.

Просмотрите исходную разницу для комментариев кода в деталях запросов о принятии изменений

Отфильтровать комментарии к запросам об изменениях. Иногда бывает сложно комментировать запрос запроса на изменение при изменении кода, на который ссылается комментарий. Просмотр первоначальной разницы. Когда это произойдет, вы увидите новый значок с номером обновления, который вы можете щелкнуть, чтобы посмотреть, как выглядит код, когда пользователь изначально создал комментарий.

Рисунок 3-22. Клонирование Git-проекта даёт вам собственную ветку master и origin/master, указывающий на ветку master в origin.

Если вы сделаете что-то в своей локальной ветке master , а тем временем кто-то ещё отправит (push) изменения на git.ourcompany.com и обновит там ветку master , то ваши истории продолжатся по-разному. Ещё, до тех пор, пока вы не свяжетесь с сервером origin, ваш указатель origin/master не будет сдвигаться (см. рис. 3-23).

Сводные комментарии к запросам об изменениях

Обновить значок. Изменения кода являются неотъемлемой частью процесса запроса на изменение, и мы добавили новые функции, которые делают рецензентов более легко сосредоточенными на самом коде. Пользователи обзора кода могут просто скрывать комментарии, чтобы не мешать первой ревизии нового кода.

Когда вы скрываете комментарии, вы скрываете их в древовидном представлении и сворачиваете поток комментариев в представлениях файла. Сведенные комментарии. Вы можете легко распаковать свернутые комментарии, щелкнув значок границы, а затем просто нажмите еще раз, чтобы свернуть. С описаниями вы можете быстро взглянуть на комментарий, не просматривая весь поток.



Рисунок 3-23. При выполнении локальной работы и отправке кем-то изменений на удалённый сервер каждая история продолжается по-разному.

Для синхронизации вашей работы выполняется команда git fetch origin . Эта команда ищет, какому серверу соответствует origin (в нашем случае это git.ourcompany.com); извлекает оттуда все данные, которых у вас ещё нет, и обновляет ваше локальное хранилище данных; сдвигает указатель origin/master на новую позицию (см. рис. 3-24).


Рисунок 3-24. Команда git fetch обновляет ваши удалённые ссылки.

Чтобы продемонстрировать то, как будут выглядеть удалённые ветки в ситуации с несколькими удалёнными серверами, предположим, что у вас есть ещё один внутренний Git-сервер, который используется для разработки только одной из ваших команд разработчиков. Этот сервер находится на git.team1.ourcompany.com . Вы можете добавить его в качестве новой удалённой ссылки на проект, над которым вы сейчас работаете с помощью команды git remote add так же, как было описано в главе 2. Дайте этому удалённому серверу имя teamone , которое будет сокращением для полного URL (см. рис. 3-25).



Рисунок 3-25. Добавление дополнительного удалённого сервера.

Теперь можете выполнить git fetch teamone , чтобы извлечь всё, что есть на сервере и нет у вас. Так как в данный момент на этом сервере есть только часть данных, которые есть на сервере origin , Git не получает никаких данных, но выставляет удалённую ветку с именем teamone/master , которая указывает на тот же коммит, что и ветка master на сервере teamone (см. рис. 3-26).



Рисунок 3-26. У вас появилась локальная ссылка на ветку master на teamone-е.

Отправка изменений

Если у вас есть ветка serverfix , над которой вы хотите работать с кем-то ещё, вы можете отправить её точно так же, как вы отправляли вашу первую ветку. Выполните git push (удал. сервер) (ветка) :

$ git push origin serverfix Counting objects: 20, done. Compressing objects: 100% (14/14), done. Writing objects: 100% (15/15), 1.74 KiB, done. Total 15 (delta 5), reused 0 (delta 0) To [email protected]:schacon/simplegit.git * serverfix -> serverfix

Это в некотором роде сокращение. Git автоматически разворачивает имя ветки serverfix до refs/heads/serverfix:refs/heads/serverfix , что означает “возьми мою локальную ветку serverfix и обнови из неё удалённую ветку serverfix”. Мы подробно обсудим часть с refs/heads/ в главе 9, но обычно её можно опустить. Вы также можете выполнить git push origin serverfix:serverfix - произойдёт то же самое - здесь говорится “возьми мой serverfix и сделай его удалённым serverfix”. Можно использовать этот формат для отправки локальной ветки в удалённую ветку с другим именем. Если вы не хотите, чтобы ветка называлась serverfix на удалённом сервере, то вместо предыдущей команды выполните git push origin serverfix:awesomebranch . Так ваша локальная ветка serverfix отправится в ветку awesomebranch удалённого проекта.

$ git fetch origin remote: Counting objects: 20, done. remote: Compressing objects: 100% (14/14), done. remote: Total 15 (delta 5), reused 0 (delta 0) Unpacking objects: 100% (15/15), done. From [email protected]:schacon/simplegit * serverfix -> origin/serverfix

Важно отметить, что когда при получении данных у вас появляются новые удалённые ветки, вы не получаете автоматически для них локальных редактируемых копий. Другими словами, в нашем случае вы не получите новую ветку serverfix - только указатель origin/serverfix , который вы не можете менять.

Чтобы слить эти наработки в свою текущую рабочую ветку, выполните git merge origin/serverfix . Если вам нужна своя собственная ветка serverfix , над которой вы сможете работать, то вы можете создать её на основе удалённой ветки:

$ git checkout -b serverfix origin/serverfix Branch serverfix set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "serverfix"

Это даст вам локальную ветку, на которой можно работать. Она будет начинаться там, где и origin/serverfix .

Отслеживание веток

Получение локальной ветки с помощью git checkout из удалённой ветки автоматически создаёт то, что называется отслеживаемой веткой . Отслеживаемые ветки - это локальные ветки, которые напрямую связаны с удалённой веткой. Если, находясь на отслеживаемой ветке, вы наберёте git push , Git уже будет знать, на какой сервер и в какую ветку отправлять изменения. Аналогично выполнение git pull на одной из таких веток сначала получает все удалённые ссылки, а затем автоматически делает слияние с соответствующей удалённой веткой.

При клонировании репозитория, как правило, автоматически создаётся ветка master , которая отслеживает origin/master , поэтому git push и git pull работают для этой ветки "из коробки" и не требуют дополнительных аргументов. Однако, вы можете настроить отслеживание и других веток удалённого репозитория. Простой пример, как это сделать, вы увидели только что - git checkout -b [ветка] [удал. сервер]/[ветка] . Если вы используете Git версии 1.6.2 или более позднюю, можете также воспользоваться сокращением --track:

$ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "serverfix"

Чтобы настроить локальную ветку с именем, отличным от имени удалённой ветки, вы можете легко использовать первую версию с другим именем локальной ветки:

$ git checkout -b sf origin/serverfix Branch sf set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "sf"

Теперь ваша локальная ветка sf будет автоматически отправлять (push) и получать (pull) изменения из origin/serverfix.

Удаление веток на удалённом сервере

Скажем, вы и ваши соавторы закончили с нововведением и слили его в ветку master на удалённом сервере (или в какую-то другую ветку, где хранится стабильный код). Вы можете удалить ветку на удалённом сервере, используя несколько бестолковый синтаксис git push [удал. сервер] :[ветка] . Чтобы удалить ветку serverfix на сервере, выполните следующее:

$ git push origin:serverfix To [email protected]:schacon/simplegit.git - serverfix

Хлоп. Нет больше ветки на вашем сервере. Вам может захотеться сделать закладку на текущей странице, так как эта команда вам понадобится, а синтаксис вы, скорее всего, забудете. Можно запомнить эту команду вернувшись к синтаксису git push [удал. сервер] [лок. ветка]:[удал. ветка] , который мы рассматривали немного раньше. Опуская часть [лок. ветка] , вы, по сути, говорите “возьми ничто в моём репозитории и сделай так, чтобы в [удал. ветка] было то же самое”.



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы