Добавить Автора
Переводчик: 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…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.