Каковы распространенные ошибки Git и как их исправить?



Устраните наиболее распространенные ошибки при управлении версиями кода с помощью инструмента системы управления версиями git и защитите целостность данных.

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

Должен признаться, управление версиями моих данных в Git позволяет мне быть более экспериментальным в разработке моего проекта. Если я ошибаюсь, я знаю, что у git всегда есть способ отменить и / или вернуть ту версию моего проекта, которая была до того, как я облажался. Каждый Слой предназначен для просмотра, модификации и / или исправления изменений данных перед перемещением данных на следующий этап. Итак, в этом блоге описаны следующие ошибки:





Удалить файлы / каталоги из индекса

При добавлении и / или изменении файлов вы часто склонны использовать поведение по умолчанию команды «git add», которое заключается в добавлении всех файлов и каталогов в индекс.Часто вы чувствуете необходимость деактивировать определенные файлы или изменить их в последний раз перед их фиксацией.



Синтаксис: git сбросить


удалить файлы из индекса - распространенные ошибки git - Edureka

Удаление файлов из области индекса дает вам еще один шанс переделать свои данные перед фиксацией в локальном репо.



Редактировать последнее зафиксированное сообщение

Команда: git commit --amend
Вы можете редактировать последнее сообщение фиксации, не создавая новое. Чтобы перечислить журналы фиксации, я установил псевдоним 'hist':
Команда: git config --global alias.hist 'log --pretty = format: '% C (желтый)% h% Creset% ad | % C (зеленый)% s% Creset% C (красный)% d% Creset% C (синий) [% an] '--graph --decorate --date = short'x


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

Забыл некоторые изменения в последней фиксации

Допустим, вы забыли внести некоторые изменения и уже зафиксировали свой снимок, а также не хотите делать еще одну фиксацию, чтобы подчеркнуть свою ошибку.
Команда: git commit --amend


Я подчеркнул, как был воссоздан и изменен идентификатор sha-1 недавнего объекта фиксации. Я сделал вид, что сделал одну фиксацию, смешав оба изменения в одно.

Отменить локальные изменения

Итак, вот случай, когда я изменил файл «README» и разместил его. Затем я изменил тот же файл во второй раз, но понял, что не хочу второго изменения.

Теперь, позвольте мне не отменять все изменения вручную, я могу просто вытащить поэтапную версию файла.
Синтаксис:
git checkout -–Локальные изменения в файле
git checkout -–Локальные изменения во всех файлах в каталоге & shy & shy

Команда: git checkout - README

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

Переданные личные данные в локальный репозиторий

Я хочу удалить определенные данные из локального репозитория, но оставить файлы в рабочем каталоге.
Синтаксис:
git reset - смешанная ГОЛОВКА ~
git reset - смешанный

Команда: git reset --mixed HEAD ~ 1
HEAD ~ 1 указывает на фиксацию непосредственно перед последней фиксацией, на которую указывает HEAD текущей ветки.

разница между qtp и селеном

Файлы текущего снимка удалены как из локального репозитория, так и из промежуточной области. Добавьте следующие шаблоны в глобальный файл .gitignore, чтобы исключить их отслеживание git.
vim ~ / .gitignore_global
# файлы паролей #
*.проходят
* .key
* .passwd

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

Осторожно: Если вы их потеряете, git не сможет их восстановить, так как не знает об этом.

Замените последний коммит новым коммитом

Синтаксис: git reset --soft [/ HEAD ~ n>]

Параметр «–soft» просто удаляет зафиксированные файлы из локального репозитория, пока они все еще находятся в индексе, и вы можете повторно зафиксировать их после проверки. - это sha-1 снимка, который вы хотите удалить из локального репо. где n - количество коммитов перед фиксацией HEAD

Команда :git reset - мягкая ГОЛОВКА ~ 1


Измените файлы и создайте их снова

Команда: git commit -m 'Добавление index.html и style.css'
Теперь ваша история коммитов выглядит так:

Совершил неверные данные

Синтаксис:
git reset --hard HEAD ~ n–Сбросить проект на «n» перед последним зафиксированным моментальным снимком
git reset --hard–Сбросить проект на данный моментальный снимок идентификатора фиксации

Команда: git reset --hard HEAD ~ 1


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

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

Вернуться к моему старому состоянию проекта

Вы можете перейти к более старому состоянию вашего проекта в истории времени. Если вы ошиблись в последней версии или вам нужны улучшения в старом коде, вы можете создать еще одну ветвь из этого снимка старого проекта, чтобы не мешать вашей текущей работе. Посмотрим, как:
а. Перечислите историю проекта и выберите более старый идентификатор фиксации, команда:иди
б. Создайте еще одну ветку из идентификатора фиксации:git checkout -b старое состояние e7aa9a5
c. Продолжайте работать над кодом, а затем выполните слияние / перебазирование с «главной» веткой.

Восстановить удаленную локальную ветку

Можно восстановить потерянную работу на эталонной ветви. Скажем, я удалил ветку «old_code», не сливаясь с основной веткой, и потерял работу. И нет, я тоже ветку в удаленный репозиторий не пихал, что тогда? Что ж, git отслеживает и ведет журнал всех изменений, внесенных в каждую ссылку, давайте посмотрим на мою:иди рефлог

Итак, HEAD @ {2} - это указатель, когда я перешел на ветвь «old_code», давайте восстановим это:

Синтаксис:git checkout -b
Команда:git checkout -b old_code HEAD @ {2}

Теперь вы должны находиться в ветке 'old_code' со своей последней работой на момент ее создания. Кроме того, указатель 'reflog' в HEAD @ {1} был последней фиксацией, сделанной в ветке 'old_code'. Чтобы восстановить этот уникальный commit просто запустите команду как:git reset --hard HEAD @ {1}.Это также восстанавливает измененные файлы в рабочем каталоге.

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

Отменить изменения, сделанные в фиксации

идтивернутьсяиспользуется для записи некоторых новых коммитов, чтобы отменить эффект некоторых предыдущих коммитов.
Синтаксис: git revert
Из моих журналов коммитов я хотел бы отменить изменение, сделанное в выделенном идентификаторе фиксации:

Команда: git revert 827bc0d

Лучше, если вы не сбрасываете '–hard' общие коммиты, а вместо этого 'git revert' их, чтобы сохранить историю, чтобы всем стало проще отслеживать журналы истории, чтобы узнать, что было отменено, кем и почему?

Вы можете использовать ту же логику ссылки на коммиты, касающиеся указателя HEAD, вместо указания идентификатора коммита, как в HEAD ~ 3 или HEAD ~ 4 и так далее.

Дал неправильное имя моей ветке

Вы можете переименовать имя локального филиала. Часто бывает так, что вы можете захотеть переименовать свою ветку в зависимости от проблемы, над которой вы работаете, без необходимости переносить всю свою работу из одного места в другое. Например, вы можете находиться в той же или в другой ветке и по-прежнему иметь возможность переименовать нужную ветку, как показано ниже:
Синтаксис: git branch -m
Команда: git branch -m старый_код старый_ # 4920

Как вы можете задаться вопросом, отслеживает ли git это переименование? Да, это относится к вашим записям в «рефлоге», вот моя:

Переименование ветки не повлияет на ветвь удаленного отслеживания. В удаленном разделе мы увидим, как заменить ветку в удаленном репозитории.

Переставьте журналы истории перед отправкой на удаленный

Как бы мне хотелось, чтобы некоторые коммиты были раньше, чем другие, а некоторые вообще не совершал. Интерактивно переупорядочивайте и редактируйте старые коммиты, чтобы эффективно исправить или улучшить код
Синтаксис: git rebase -i
Команда: git rebase -i fb0a90e–Начать перезагрузку коммитов, сделанных после фиксации-id fb0a90e

Еще раз посетите git rebase документация, чтобы понять, чем '–interactive или -i' rebase отличается от обычного rebase.

Фиксированные несвязанные изменения в одну фиксацию

В этом случае вам нужно разбить старую скрытую фиксацию на несколько логических коммитов.
Синтаксис: git rebase -i
Команда: git rebase -i fb0a90e
В редакторе rebase вы должны выбрать идентификатор фиксации e7aa9a5 и изменить его на «edit» вместо «pick».

несвязанные изменения - распространенные ошибки git -Edureka

Теперь вы находитесь в версии проекта commit id-e7aa9a5. Сначала сбросьте историю коммитов и промежуточную область на предыдущую команду фиксации:git reset HEAD ~ 1
Во-вторых, редактировать + этап + фиксировать файлы по отдельности
Команды:
git add code && git commit -m 'Добавление начальных кодов'
git add newcode && git commit -m 'Добавление нового кода'

В-третьих, продолжаем перебазирование и завершаем.

Команда :git rebase - продолжить
В-четвертых, просмотрите историю с дополнительными коммитами.

Команда: иди

разбиение коммита на несколько с помощью rebase - распространенные ошибки git - Edureka

Изменить адрес электронной почты автора во всех коммитах во всех ветках

Я уже давно управляю версиями и фиксирую файлы своего проекта в git, но до сих пор мне никогда не приходило в голову, что мой электронный идентификатор был скомпрометирован в моих журналах истории коммитов, которые даже публикуются в удаленных репозиториях. Что ж, это может случиться с кем угодно, когда вы изначально настроили конфигурации в файле «.gitconfig». К моему облегчению, git может переписать переменные среды, которые мы предоставляем при создании объекта фиксации.

Сначала я получаю список адреса электронной почты выбрать те, которые я хочу изменить:
Команда: git log --all --pretty = format: '% an% d'–Это печатает имя автора (refname / branch-name)

Во-вторых, я пробегаю каждая фиксация в каждой ветке и перезапишите объект фиксации с новым идентификатором электронной почты
Команда:
git filter-branch --env-filter '
если ['$ GIT_AUTHOR_NAME' = 'дивья']
тогда
GIT_AUTHOR_EMAIL = 'divya@github.com'
быть
' -- --все

Потерянные и найденные файлы

Предположим, вы потеряли определенный файл и не помните его имя, но можете вспомнить определенные слова в файле. В этом случае вы можете выполнить следующие действия:
Шаг 1: Перечислите все коммиты, которые когда-либо содержали снимок файла с искомым шаблоном
Команда :git rev-list --all | xargs git grep -i 'отметка времени'



Шаг 2 : Создайте новую ветку 'lost-found' из этого выделенного идентификатора фиксации
Синтаксис: git checkout -b потерянный найденный d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f

Забыл, в какой ветке есть мой идентификатор фиксации

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

Плохая фиксация, сделанная в моем приложении для построения навигации, однажды сломала код, и тогда я использовал Команда 'git bisect' для определения неверного идентификатора фиксации за которым следуеткоманда:git branch --containsчтобы перечислить ветки с этим плохим коммитом.

Итак, теперь я знаю все ветки, в которых все еще есть плохая фиксация, я мог бы либо отменить, либо сбросить этот набор изменений.

Удалить коммит из истории

Иногда мне нужно просто стереть коммит из истории и не оставить за ним следов. Я бы не рекомендовал вам пробовать этот трюк в общей ветке, а только в вашей локальной ветке.
Синтаксис: git rebase -i
Команда :git rebase -i 93859d8
В редакторе rebase -> замените «edit» на «drop» для выделенного идентификатора фиксации: 69f4813

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

Предупреждение : Это опасная команда, так как она перезаписывает историю и может потерять данные. Такая ветка отличается от своей удаленной копии и должна быть отправлена ​​с- силаили--force-with-leaseвариант.

Вставил неправильную ветку на пульт

Вот что я хочу сделать - я хочу удалить удаленный филиал а также прекратить отслеживать его из моего местного отделения ».git push‘При использовании с--Удалитьопция удаляет удаленную ветку Итак, вот как я получаю локальную копию клонированного проекта -

git clone https://github.com/greets/myProj.git
cd myProj


После того, как удаленная ветвь удалена, другие в общем репо должны обновить и обновить свои удаленные ссылки с помощью--черносливвозможность удалить ссылки на отсутствующие объекты:git fetch --prune -v origin

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

Теперь, когда вы поняли типичные ошибки Git, ознакомьтесь с этим от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Учебный курс Edureka DevOps Certification Training помогает учащимся понять, что такое DevOps, и получить опыт работы с различными процессами и инструментами DevOps, такими как Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack и GIT для автоматизации нескольких этапов в SDLC.

c ++ рекурсивный фибоначчи

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к «типичным ошибкам Git», и мы свяжемся с вами.