Изучите Git быстро, ответив на 41 вопрос и ответ

JavaScript ECMAScript 6

Добавить Автора

Переводчик: Front-end Xiaozhi

Источник: dev.to

Чем больше вы знаете, тем больше вы не знаете

Ставьте лайк и смотрите снова, формируйте привычку


эта статьяГитхаб:GitHub.com/QQ449245884…Он был включен в вышеизложенное, и более ранние высоко оцененные статьи были засекречены, а также было систематизировано множество моих документов и учебных материалов. Добро пожаловать в Star and Perfect. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Надеюсь, у нас что-то получится вместе.

Чтобы обеспечить удобочитаемость, в этой статье используется вольный перевод, а не дословный перевод.

1. Какая ваша любимая команда Git?

Лично нравитсяgit add -p.Это добавляет изменения в «режим исправления», встроенную программу командной строки. Он проходит через каждое изменение и запрашивает подтверждение, если он хочет их выполнить.

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

2. Почему вы предпочитаете использовать команды git напрямую

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

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

3. Как использоватьstageЗаказ

stageдаadd .встроенный псевдоним для .

4. Как сохранить изменения в ветке иcheckoutв другие филиалы

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

WIP = Work in Progress

Если вы хотите сохранить код в разработке, но избежать слияния кода в разработке, разработка создаст ветку WIP.

WIP MR

WIP MRЭто означает, что выполняется запрос на слияние, метод, который мы используем в GitLab, чтобы избежать слияния MR, пока они не будут готовы. просто добавьWIP:в начале заголовка MR, он не будет объединен, если вы не поставитеWIP:удалять.

5. Когда использовать git stash

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

6. Как использовать команду git

Используйте с любой командой--helpварианты, например,git stash --help.

7. Что такое «поток GIT»?

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

8. Что такое поток GitHub?

Поток GitHub, как следует из названия, — это рабочий процесс, который уважает GitHub. (Не понимайте это как рабочий процесс, который можно использовать только на GitHub), в основном, GitHub Flow — этоmaster/featureФирменное наименование филиала рабочего процесса.

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

9. Какую стратегию ветвления вы предпочитаете?

Большинство проектов Git представляют собой «поток Git». Только некоторые из этих проектов требуют этой стратегии, обычно потому, что это версионное программное обеспечение.

master/featureСтратегии ветвления проще в управлении, особенно когда вы только начинаете, переключитесь на "git flow" очень просто.

10. Что делает команда git open?

Это единственная команда, доступная в виде пакета npm.

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

Обычно это результат переключения ветвей, когда «рабочий индекс» не чист.

В git нет встроенного способа исправить это. Обычно, убедившись, что подсказка имеет "status” и запустите что-то вродеgit statusкоманда, чтобы избежать этого. Эти привычки позволят нам выявлять эти проблемы на ранней стадии, чтобы мы могли работать над новыми ответвлениями.stashилиcommitЭти изменения.

12. Как переименовать ветку?

git branch -m current-branch-name new-branch-name

13. Как использовать черри-выбор

git cherry-pick [reference]Помните, что это команда повторного применения, поэтому она изменит SHA фиксации.

14. При возврате с ветки (например.HEAD~3), можно ли вернуться кHEAD(например, восстановление последнего обновления)

В этом случае, запустивgit reset --hard HEAD~1Немедленно отменить коммит возврата (т.е.HEADпредставить).

15. Когда использоватьgit pullа такжеgit fetch?

git pullЗафиксируйте загрузку в текущей ветке. запомнить,git pullв реальностиfetchа такжеmergeсочетание команд.

git fetchПоследняя ссылка будет получена с пульта.

Хорошая аналогия — проигрыватель подкастов или почтовый клиент. Мы можем получить последние подкасты или электронные письма (fetch), но на самом деле не было загружено локально ни подкастов, ни вложений по электронной почте (pull).

16. Почему иногда необходимо использовать--forceпринудительно зафиксировать изменения

rebaseэто команда, которую можно отправить повторно, она изменяетSHA1хэш. Если это так, локальная история коммитов больше не будет соответствовать его удаленной ветке.

Когда это произойдет,pushбудет отклонен. Следует рассматривать только в случае отклоненияgit push --force. Это будет использовать локальную историю отправки, чтобы переопределить историю удаленной отправки. Так что вы можете вернуться и подумать, подумать, почему вы хотите использовать--force.

17. Вы можете использовать ветки для объединения нескольких веток, а затем отправить эту ветку вmaster?

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

18. Один должен быть сделан из очень старой веткиrebase?

Если нет альтернативы.

В зависимости от вашего рабочего процесса старая ветка может быть объединена с основной веткой.

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

Однако, хотя это всегда возможно, используяrebaseПовторное применение при каждом коммите может быть головной болью. Это может привести к многочисленным конфликтам. Если это так, я обычно используюrebase --abortи использоватьmergeразом решить все конфликты.

19. Использованиеrebase -iчас,squashа такжеfixupКакая разница

squashОбъедините два коммита с fixup.squashПаузаrebaseпроцесс и позволяет нам настроить зафиксированное сообщение.fixupАвтоматически использовать сообщение из первого коммита.

20. Обычно при использованииmasterПри перемещении функциональной ветки нужно ли разрешать конфликты для каждого коммита?

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

Это означает, что перед коммитом существует конфликт коммитов, и если он не будет разрешен правильно, многие коммиты ниже также могут конфликтовать. Чтобы ограничить это, я часто используюrebase -iсжать историю коммитов, чтобы с ней было легче работать.

Если есть еще много конфликта между представлением, вы можете использоватьmerge.

21. Нужно ли обновлять мою ветку перед слиянием с мастером

В зависимости от вашего рабочего процесса старая ветка может быть объединена с основной веткой. Если ваш рабочий процесс использует только "fast-forward"merge, то необходимо обновить вашу ветку перед слиянием.

Git перемотает вперед коммиты

При совместной разработке с несколькими людьми при использовании Git часто появляются предупреждающие сообщения, содержащие термины:fast forward, что это значит?

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

НапримерAПолучив код с центрального склада, проверьте файлfИзменено. потомpushна центральный склад.

BсуществуетAЯ получил код центрального склада раньше, вA pushсразу после успехаfфайл был изменен. В настоящее времяBтакже запуститьpushПуш-код команды.

Вы получите сообщение, подобное следующему:

chenshu@sloop2:~/work/189/appengine$ git pushTo 
ssh://csfreebird@10.112.18.189:29418/appengine.git ! [rejected]       
master -> master (non-fast-forward)error: failed to push some refs to 
'ssh://csfreebird@10.112.18.189:29418/appengine.git'To prevent you from losing 
history, non-fast-forward updates were rejectedMerge the remote changes (e.g. 'git 
pull') before pushing again.  See the'Note about fast-forwards' section of 'git push --help' for details.

Напоминаем, что обновления без быстрой перемотки вперед были отклонены и их необходимо сначала загрузить из центрального репозитория.pullК последней версии,mergeпотомpush.

fast forwardЭто может гарантировать, что код других людей не будет принудительно покрыт, что обеспечивает совместную разработку нескольких людей. попробуй не использоватьnon fast forwardМетод отправить код.

22. Нужно ли мне использовать инструмент визуализации, такой как GitKraken?

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

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

23. Когда представление было нажато, вы можете сделать это.--amendИзменить это?

Могу,git commit –amendВы можете либо внести изменения в последний коммит, либо пересмотреть описание коммита.

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

Что мы обычно делаем, так это извлекаем итеративный контент после завершения итерации.pull request. Однако, если вы тратите много времени на задачу, может быть полезно объединить функции, которые вы сделали в первую очередь. Это предотвращает зависимости или устаревание веток, поэтому сделайте одну из нихпросить, или сделать все и вытащить одинпросить, в зависимости от типа изменений, которые вы вносите.

25. После слияния ветки вmasterПрежде необходимо создатьreleaseВетвь?

Многое зависит от процесса развертывания в вашей компании. СоздайтеreleaseВетки удобны для группировки работы из нескольких веток и объединения их в основную ветку для общего тестирования.

Поскольку исходные ветки остаются отдельными и неслитыми, финальное слияние обеспечивает большую гибкость.

26. Как получить какие-то коммиты от мастера Допустим, я хочу делать не последний коммит, а одинrebase.

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

мы хотимmergeилиrebaseВсе изменения в ветке. Чтобы вытащить выбранную фиксацию из ветки, отличной от master, вы можете использоватьgit cherry-pick.

27. Как настроить цвета в git-терминале

По умолчанию git черно-белый.

git config --global color.status auto 
git config --global color.diff auto 
git config --global color.branch auto 
git config --global color.interactive auto

После настройки есть цвета.

28. Есть ли лучшая команда для замены git push -force?

На самом деле, нет другого способа заменитьgit push—force. Хотя это при правильном использованииmergeилиrebaseветка обновления, вам не нужно использоватьgit push --force.

следует использовать только в том случае, если вы запустили команду, которая изменяет локальную историю коммитовgit push --force.

29. Когда я былgit rebase -выберитеdrop, был ли удален код, связанный с этой фиксацией?

да. Чтобы восстановить этот код, вам нужноreflogизrebaseНайдите состояние перед.

30. Как автоматически отслеживать удаленные ветки

Обычно, когда выcheckoutИли когда вы создаете ветку, Git автоматически настраивает отслеживание веток.

Если нет, при следующем обновлении:git push -u remote-name branch-name.

Или его можно установить явно с помощью:git branch --set-upstream-to = remote-name / branch-name

31. ВrebaseЯвляется ли хорошей практикой обновление веток перед ветвлением?

Я так думаю, причина проста, сgit rebase -iУпорядочивайте или изолируйте коммиты, чтобы сначала предоставить больше контекста в процессе обновления.

fixup/squashНапротив)?

допустимыйrebase -iиспользуется в процессеexecкоманда, чтобы попытаться изменить рабочий индекс и разделить изменения. также можно использоватьgit resetчтобы отменить самые последние коммиты и поместить их изменения в рабочий индекс, а затем отделить их изменения в новые коммиты.

33. Есть ли способ просмотреть фиксированные коммиты?

git log

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

git обвинять имя файла

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

Если вы просматриваете предыдущие материалы, вы можете использоватьgit show commitId.

34. Какова функция rebase --skip?

мы знаемrebaseПроцесс сначала производитrebaseветвь (master), во временную ветвь (без ветки). Затем каждая фиксация модификации ветки (ветви) повторно применяется к основной ветке по одному в виде патча. Этот процесс представляет собой процесс применения исправлений в цикле.В течение периода, пока патч конфликтует, цикл будет остановлен, а конфликт будет разрешен вручную. Этот конфликт относится к конфликту между последней объединенной версией и патчем.

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

35. Как удалить удаленную ветку?

можно использовать:git push origin:branch-name-to-removeили использовать-dВарианты: гit push -d origin someother -branch-2для удаления удаленной ветки.

Чтобы удалить локальную ссылку на удаленную ветку, вы можете запустить:git remote prune origin.

36. checkoutа такжеresetКакая разница

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

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

git checkout -- file;Отменить изменение рабочей области; эта команда берет последний узел времени хранения (добавить и зафиксировать) в качестве ссылки и перезаписывает соответствующий файл в рабочей области.file; Эта команда изменяет рабочее пространство.

git reset HEAD -- file; пустойaddКоманда вынесена на плацдарм околоfileМодификация файла (Ustage); эта команда изменяет только промежуточную область, а не рабочую область, что означает, что без каких-либо других операций фактический файл в рабочей области остается неизменным до запуска команды.

37. Каких команд следует избегать в обычном рабочем процессе

Некоторые вещи, которые могут сломать историю, такие как:

git push origin master -f (千万不要这样做)
git revert
git cherry-pick (changes from master)

В обычном рабочем процессе старайтесь избегать прямого использования git merge, так как это обычно встроено в процесс через запросы на вытягивание.

38. Если у меня есть ветвь (B), указывающая на другую ветвь (A), и у меня есть другая ветвь (C), ей нужен код (A) и (B) и основная ветвь, как может процесс обновить ( С)?

Это зависит от нескольких вещей:

еслиAа такжеBможно объединить вmasterТолько чтоAа такжеBОбъединить вmaster, затем используйтеmasterОбновитьC.

еслиAа такжеBнельзя объединять вmaster, что может быть простоBОбъединить вCв, потому чтоBуже включеныAизменения.

В крайних случаях,A,Bа такжеmasterОбъединить вCсередина. Однако во избежание конфликтов порядок слияний может иметь значение.

39. Какие псевдонимы вы используете

Вот некоторые из моих часто используемых псевдонимов git:

alias.unstage reset HEAD --
alias.append commit --amend --no-edit
alias.wip commit -m "WIP"
alias.logo log --oneline
alias.lola log --graph --oneline --decorate --all

40. Какие менее известные команды git?

git bisectэто код поиска, который существует вbugспасательный инструмент. Несмотря на то, что он использовался всего несколько раз, его точность впечатляет и экономит много времени.

git archive— отличный инструмент для упаковки набора изменений. Это облегчает общение с третьими лицами илиmico-deploymentДелитесь работой.

git reflogВероятно, хорошо известно, но стоит упомянуть, потому что это отличный способ «отменить» команду, когда что-то пойдет не так.

41. Можете ли вы порекомендовать несколько книг о Git?

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

тоже хорош.


Ошибки, которые могут существовать после развертывания кода, не могут быть известны в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку журнала.Кстати, я рекомендую всем полезный инструмент мониторинга ошибок.Fundebug.

оригинал:Dev.to/gone dark/42…


Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.

общаться с

Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.