С бумом технологии, любой ИТ-специалист неизбежно работает с несколькими данными одновременно, и ваши данные со временем постоянно развиваются. Также важно отслеживать каждое изменение данных и быть готовым при необходимости отменить или отменить любое нежелательное изменение.
Должен признаться, управление версиями моих данных в Git позволяет мне быть более экспериментальным в разработке моего проекта. Если я ошибаюсь, я знаю, что у git всегда есть способ отменить и / или вернуть ту версию моего проекта, которая была до того, как я облажался. Каждый Слой предназначен для просмотра, модификации и / или исправления изменений данных перед перемещением данных на следующий этап. Итак, в этом блоге описаны следующие ошибки:
- Удалить файлы / каталоги из индекса
- Редактировать последнее зафиксированное сообщение
- Забыл некоторые изменения в последней фиксации
- Отменить локальные изменения
- Переданные личные данные в локальный репозиторий
- Заменил последний коммит новым коммитом
- Совершил неверные данные
- Вернуться к моему старому состоянию проекта
- Восстановить удаленную локальную ветку
- Отменить изменения, сделанные в фиксации
- Дал неправильное имя моей ветке
- Хотите переупорядочить журналы истории перед отправкой на удаленный
- Фиксированные несвязанные изменения в одну фиксацию
- Изменить адрес электронной почты автора во всех коммитах во всех ветках
- Потерянные и найденные файлы
- Забыл, в какой ветке есть мой идентификатор фиксации
- Удалить коммит из истории
- Вставил неправильную ветку на пульт
Удалить файлы / каталоги из индекса
При добавлении и / или изменении файлов вы часто склонны использовать поведение по умолчанию команды «git add», которое заключается в добавлении всех файлов и каталогов в индекс.Часто вы чувствуете необходимость деактивировать определенные файлы или изменить их в последний раз перед их фиксацией.
Синтаксис: git сбросить
Удаление файлов из области индекса дает вам еще один шанс переделать свои данные перед фиксацией в локальном репо.
Редактировать последнее зафиксированное сообщение
Команда: 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».
Теперь вы находитесь в версии проекта commit id-e7aa9a5. Сначала сбросьте историю коммитов и промежуточную область на предыдущую команду фиксации:git reset HEAD ~ 1
Во-вторых, редактировать + этап + фиксировать файлы по отдельности
Команды:
git add code && git commit -m 'Добавление начальных кодов'
git add newcode && git commit -m 'Добавление нового кода'
В-третьих, продолжаем перебазирование и завершаем.
Команда :git rebase - продолжить
В-четвертых, просмотрите историю с дополнительными коммитами.
Команда: иди
Изменить адрес электронной почты автора во всех коммитах во всех ветках
Я уже давно управляю версиями и фиксирую файлы своего проекта в 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», и мы свяжемся с вами.