Π Π°Π·Π½ΠΎΠ΅

Git origin master push: linux — Difference between origin master & origin/master with git pull and git push commands

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ истории рСпозитория ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ git push -f

Одно ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… наставлСний, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΠ°Π΄Π°Π²Π°Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ вмСстС с доступом ΠΊ git-рСпозиториям, Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: Β«Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Сшь ΠΆΡ‘Π»Ρ‚Ρ‹ΠΉ снСг Π΄Π΅Π»Π°ΠΉ git push -fΒ». ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΎΠ΄Π½Π° ΠΈΠ· сотСн максим, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ПО, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ врСмя Π½Π° ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ ΠΈ огонь: «спички дСтям Π½Π΅ ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈΒ» ΠΈ баста. Но ΠΌΡ‹ растём ΠΈ развиваСмся ΠΊΠ°ΠΊ люди ΠΈ ΠΊΠ°ΠΊ профСссионалы, ΠΈ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ вопрос Β«Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ, собствСнно?Β» встаёт Π² ΠΏΠΎΠ»Π½Ρ‹ΠΉ рост. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ написана ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ нашСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΌΠΈΡ‚Π°ΠΏΠ°, Π½Π° Ρ‚Π΅ΠΌΡƒ: «Когда ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²Β».

Π― ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос Π½Π° собСсСдовании Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компаниях являСтся ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ прохоТдСния собСсСдования Π½Π° ΡΠ΅Π½ΡŒΠΎΡ€ΡΠΊΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½Π΅Π³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ»ΠΎΡ…ΠΎ пСрСписываниС истории?

Для этого, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π°ΠΌ понадобится быстрый экскурс Π² Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру git-рСпозитория. Если Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± устройствС Ρ€Π΅ΠΏΠΎ всё, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ, Π½ΠΎ Π΄Π°ΠΆΠ΅ я Π² процСссС выяснСния ΡƒΠ·Π½Π°Π» для сСбя довольно ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π° ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ староС оказалось Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ.

На самом Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ git-Ρ€Π΅ΠΏΠΎ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π½ΠΈΡ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ 40-Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ Ρ…ΡΡˆ (20 Π±Π°ΠΉΡ‚, записанныС Π² 16-Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся Π½Π° основС содСрТимого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ взята ΠΈΠ· The Git Community Book

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” это blob (просто содСрТимоС Ρ„Π°ΠΉΠ»Π°), tree (Π½Π°Π±ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° blobs ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ trees) ΠΈ commit. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° commit прСдставляСт собой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° tree, Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ: Π΄Π°Ρ‚Π°/врСмя, Π°Π²Ρ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

Π“Π΄Π΅ здСсь Π²Π΅Ρ‚ΠΊΠΈ ΠΈ тэги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? А ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто указатСлями: Π²Π΅Ρ‚ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π½Π΅ΠΉ, тэг β€” Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π² IDE ΠΈΠ»ΠΈ GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π²ΠΈΠ΄ΠΈΠΌ красиво нарисованныС Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΊΡ€ΡƒΠΆΠΎΡ‡ΠΊΠ°ΠΌΠΈ-ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π½Π° Π½ΠΈΡ… β€” ΠΎΠ½ΠΈ строятся Π½Π° Π»Π΅Ρ‚Ρƒ, пробСгая ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π²Π΅Ρ‚ΠΎΠΊ Π²Π½ΠΈΠ· ΠΊ Β«ΠΊΠΎΡ€Π½ΡŽΒ». Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, вмСсто указатСля Ρ‚Π°ΠΌ null.

Π’Π°ΠΆΠ½Ρ‹ΠΉ для понимания ΠΌΠΎΠΌΠ΅Π½Ρ‚: ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΎΠ½Π° просто Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ «расти» с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ Π±Ρ‹Π» HEAD Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git checkout -b <branch-name>.

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ пСрСписываниС истории рСпозитория Π²Ρ€Π΅Π΄Π½ΠΎ?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈ это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ истории Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ свои измСнСния. Команда git push -f удаляСт ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ Π½Π° сСрвСрС всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² локальной вСрсии, ΠΈ записываСт Π½ΠΎΠ²Ρ‹Π΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ довольно Π΄Π°Π²Π½ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push сущСствуСт «бСзопасный» ΠΊΠ»ΡŽΡ‡ --force-with-lease, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ с ошибкой, Ссли Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Π― всСгда Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ вмСсто -f/--force.

Вторая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push -f считаСтся Π²Ρ€Π΅Π΄Π½ΠΎΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ слияния (merge) Π²Π΅Ρ‚ΠΊΠΈ с пСрСписанной историСй с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π³Π΄Π΅ ΠΎΠ½Π° ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠ· пСрСписанной истории), ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ адскоС число ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (ΠΏΠΎ числу ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², собствСнно). На это Π΅ΡΡ‚ΡŒ простой ΠΎΡ‚Π²Π΅Ρ‚: Ссли Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Gitflow ΠΈΠ»ΠΈ Gitlab Flow, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, скорСС всСго, Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π΅ΡΡ‚ΡŒ нСприятная ΠΏΠΎΠ±ΠΎΡ‡ΠΊΠ° пСрСписывания истории: Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Π±Ρ‹ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ этом ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ, Π½Π° самом Π΄Π΅Π»Π΅, Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΈ просто ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π°Π²Π΅Ρ‡Π½ΠΎ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎ. ΠœΠ΅Π»ΠΎΡ‡ΡŒ, Π½ΠΎ нСприятно. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ git Ρ‚ΠΎΠΆΠ΅ прСдусмотрСли, ввСдя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сборки мусора git gc --prune. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ git-хостингов, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ GitHub ΠΈ GitLab, врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ производят эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² Ρ„ΠΎΠ½Π΅.

Π˜Ρ‚Π°ΠΊ, развСяв опасСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ истории рСпозитория, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ вопросу: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ?

На самом Π΄Π΅Π»Π΅, я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ git Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π·, Π΄Π° измСнял ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Π΄Ρ€ΡƒΠ³ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ: Π²ΠΊΡ€Π°Π»Π°ΡΡŒ досадная ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΊΠΎΠ΄, сдСлал ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (с Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ e-mail вмСсто Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚), Π·Π°Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (Ссли Π²Ρ‹, ΠΊΠ°ΠΊ я, Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git commit -a). Π”Π°ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ описания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости Π΅Π³ΠΎ пСрСзаписи, вСдь Ρ…ΡΡˆ считаСтся ΠΈ ΠΎΡ‚ описания Ρ‚ΠΎΠΆΠ΅!

Но это Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ случай. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ интСрСсныС.

Допустим, Π²Ρ‹ сдСлали Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΈΠ»ΠΈΠ»ΠΈ нСсколько Π΄Π½Π΅ΠΉ, отсылая Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° сСрвСрС (4-5 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²), ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ свои измСнСния Π½Π° Ρ€Π΅Π²ΡŒΡŽ. Π”Π²ΠΎΠ΅-Ρ‚Ρ€ΠΎΠ΅ Π½Π΅ΡƒΡ‚ΠΎΠΌΠΈΠΌΡ‹Ρ… Ρ€Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ΠΎΠ² Π·Π°ΠΊΠΈΠ΄Π°Π»ΠΈ вас ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ рСкомСндациями ΠΏΡ€Π°Π²ΠΎΠΊ, Π° Ρ‚ΠΎ ΠΈ вовсС нашли косяки (Π΅Ρ‰Ρ‘ 4-5 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²). Π—Π°Ρ‚Π΅ΠΌ QA нашли нСсколько ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… случаСв, Ρ‚ΠΎΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… исправлСний (Π΅Ρ‰Ρ‘ 2-3 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°). И Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΈΡΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ нСсовмСстимости ΠΈΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ автотСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΏΠΎΡ„ΠΈΠΊΡΠΈΡ‚ΡŒ.

Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠ°Ρ‚ΡŒ, Π½Π΅ глядя, ΠΊΠ½ΠΎΠΏΠΊΡƒ Merge, Ρ‚ΠΎ Π² Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ½Π° ΠΏΠΎ старинкС называСтся master) Π²ΠΎΠ»ΡŒΡŽΡ‚ΡΡ ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° дСсятка ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Β«My feature, day 1Β», Β«Day 2Β», Β«Fix testsΒ», Β«Fix reviewΒ» ΠΈ Ρ‚.Π΄. ΠžΡ‚ этого, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ squash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСйчас Π΅ΡΡ‚ΡŒ ΠΈ Π² GitHub, ΠΈ Π² GitLab, Π½ΠΎ с Π½ΠΈΠΌ Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТными: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ нСпрСдсказуСмоС, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… β€” Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° Ρ„ΠΈΡ‡ΠΈ Π½Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ Merge (Ρƒ нас это Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€ΠΎΠ±ΠΎΡ‚, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π»ΠΈΠ·-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ сСгодняшний Π΄Π΅ΠΏΠ»ΠΎΠΉ). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ самым простым Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π² Ρ€Π΅Π»ΠΈΠ· ΡΡ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ git rebase.

Но Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ Π²Ρ‹ ΡƒΠΆΠ΅ подошли с историСй Ρ€Π΅ΠΏΠΎ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉ салат «ОливьС». Π’Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Ссли Ρ„ΠΈΡ‡Π° пилилась нСсколько нСдСль, ΠΈΠ±ΠΎ Π±Ρ‹Π»Π° ΠΏΠ»ΠΎΡ…ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈΠ»ΠΈ, хотя Π·Π° это Π² ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… Π±ΡŒΡŽΡ‚ кандСлябром, трСбования измСнились Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ merge request, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅Ρ…Π°Π» ΠΊΠΎ ΠΌΠ½Π΅ Π½Π° Ρ€Π΅Π²ΡŒΡŽ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄:

Π£ мСня Ρ€ΡƒΠΊΠ° машинально ΠΏΠΎΡ‚ΡΠ½ΡƒΠ»Π°ΡΡŒ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«Report abuseΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСквСст ΠΈΠ· 50 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с ΠΏΠΎΡ‡Ρ‚ΠΈ 2000 ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… строк? И ΠΊΠ°ΠΊ Π΅Π³ΠΎ, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ, Ρ€Π΅Π²ΡŒΡŽΠΈΡ‚ΡŒ?

ЧСстно говоря, Ρƒ мСня ΡƒΡˆΠ»ΠΎ Π΄Π²Π° дня просто Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбя ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ этому Ρ€Π΅Π²ΡŒΡŽ. И это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ рСакция для ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°; ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации, просто Π½Π΅ глядя, ΠΆΠΌΡ‘Ρ‚ Approve, понимая, Ρ‡Ρ‚ΠΎ Π·Π° Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ врСмя всё Ρ€Π°Π²Π½ΠΎ Π½Π΅ смоТСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΎΠ±Π·ΠΎΡ€Ρƒ этого измСнСния с достаточным качСством.

Но Π΅ΡΡ‚ΡŒ способ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Ρƒ. Помимо ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΡƒΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ написания основного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π΅Π³ΠΎ написания Π² Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Ρ€Π°Π·Π±ΠΈΠ² Π½Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌΠΈ тСстами Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ: «создал Π½ΠΎΠ²Ρ‹ΠΉ сСрвис ΠΈ транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ для Π½Π΅Π³ΠΎΒ», «построил ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ написал ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²Β», Β«Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉΒ», «написал тСсты».

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π²ΡŒΡŽΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΈ GitHub, ΠΈ GitLab это ΡƒΠΌΠ΅ΡŽΡ‚) ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π°Π±Π΅Π³Π°ΠΌΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ своими Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π² ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°Ρ….

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это всё Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ всё Ρ‚ΠΎΡ‚ ΠΆΠ΅ git rebase с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ --interactive. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Если Ρ€Π΅Ρ‡ΡŒ ΠΎ послСдних 50 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ git rebase --interactive HEAD~50 (ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ вмСсто β€œ50” Π²Π°ΡˆΡƒ Ρ†ΠΈΡ„Ρ€Ρƒ).

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠΎΠ΄Π»ΠΈΠ²Π°Π»ΠΈ ΠΊ сСбС Π²Π΅Ρ‚ΠΊΡƒ master, Ρ‚ΠΎ сначала Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ rebase Π½Π° эту Π²Π΅Ρ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ merge-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· мастСра Π½Π΅ ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ Ρƒ вас ΠΏΠΎΠ΄ Π½ΠΎΠ³Π°ΠΌΠΈ.

Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ знаниями ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС git-рСпозитория, ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия rebase Π½Π° master Π±ΡƒΠ΄Π΅Ρ‚ нСслоТно. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Ρ€Ρ‘Ρ‚ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² нашСй Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ мСняСт родитСля ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π²Π΅Ρ‚ΠΊΠ΅ master. Π‘ΠΌ. схСму:

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ взяты ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Pro Git

Если измСнСния Π² C4 ΠΈ C3 ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚, Ρ‚ΠΎ послС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ C4 ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ своё содСрТаниС, поэтому ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ схСмС Π² C4’.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ Ρ€Π°ΡΡ‚ΡƒΡ‰ΡƒΡŽ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ master. Π‘Π°ΠΌΠΎ собой, master Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ. МоТно просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с сСрвСра: git pull --rebase origin/master (ΠΊΠ°ΠΊ извСстно, git pull равносилСн git fetch && git merge, Π° ΠΊΠ»ΡŽΡ‡ --rebase заставит git ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ rebase вмСсто merge).

ВСрнёмся Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΊ git rebase --interactive. Π•Π³ΠΎ Π΄Π΅Π»Π°Π»ΠΈ программисты для программистов, ΠΈ понимая, ΠΊΠ°ΠΊΠΎΠΉ стрСсс люди Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² процСссС, ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ максимально ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Ρ€Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ нСобходимости Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π½Π°ΠΏΡ€ΡΠ³Π°Ρ‚ΡŒΡΡ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° экранС:

Π­Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ популярного ΠΏΠ°ΠΊΠ΅Ρ‚Π° Guzzle. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ rebase Π΅ΠΌΡƒ Π½Π΅ помСшал бы…


Π’ тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ открываСтся сформированный Ρ„Π°ΠΉΠ». Π’Π½ΠΈΠ·Ρƒ вас ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ подробная справка ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π”Π°Π»Π΅Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ простого рСдактирования Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² вашСй Π²Π΅Ρ‚ΠΊΠ΅. Всё просто, ΠΊΠ°ΠΊ ΠΏΠ°Π»ΠΊΠ°: pick β€” ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, reword β€” ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, squash β€” ΡΠ»ΠΈΡ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ (процСсс Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ снизу Π²Π²Π΅Ρ€Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ β€” это ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строчкой Π½ΠΈΠΆΠ΅), drop β€” Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, edit β€” ΠΈ это самоС интСрСсноС β€” ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ Π·Π°ΠΌΠ΅Ρ€Π΅Ρ‚ΡŒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ git встрСтит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ edit, ΠΎΠ½ встанСт Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌ staged. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ нСсколько, ΠΈ послС этого ΡΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ git rebase --continue, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ процСсс rebase.

Π”Π°, ΠΈ кстати, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ мСстами. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это создаст ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ процСсс rebase Ρ€Π΅Π΄ΠΊΠΎ обходится совсСм ΡƒΠΆ Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². Как говорится, снявши Π³ΠΎΠ»ΠΎΠ²Ρƒ, ΠΏΠΎ волосам Π½Π΅ ΠΏΠ»Π°Ρ‡ΡƒΡ‚.

Если Π²Ρ‹ Π·Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ ΠΈ каТСтся, Ρ‡Ρ‚ΠΎ всё ΠΏΡ€ΠΎΠΏΠ°Π»ΠΎ, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°ΠΏΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ git rebase --abort, которая Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Π΅Ρ€Π½Ρ‘Ρ‚ всё ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ rebase нСсколько Ρ€Π°Π·, затрагивая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ части истории, ΠΈ оставляя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ pick, придавая своСй истории всё Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠ°ΠΊ Π³ΠΎΠ½Ρ‡Π°Ρ€ ΠΊΡƒΠ²ΡˆΠΈΠ½Ρƒ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ написал Π²Ρ‹ΡˆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ тСсты Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌΠΈ (для этого ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ edit ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ β€” squash).

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π° Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΠΈΠ»ΠΎΡ‚Π°ΠΆΠ°, полСзная Π² случаС, Ссли Π½Π°Π΄ΠΎ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ β€” git add --patch. Она Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ сама ΠΏΠΎ сСбС, Π½ΠΎ Π² сочСтании с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ edit ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° нСсколько, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк, Ρ‡Π΅Π³ΠΎ Π½Π΅ позволяСт, Ссли я Π½Π΅ ошибаюсь, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° IDE.

УбСдившись Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ всё Π² порядкС, Π²Ρ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚Π΅ со спокойной Π΄ΡƒΡˆΠΎΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, с Ρ‡Π΅Π³ΠΎ начался этот Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»: git push --force. Ой, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, разумССтся, --force-with-lease!

ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ Π²Ρ‹, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот процСсс (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ rebase Π½Π° master) час, Π° Ρ‚ΠΎ ΠΈ Π΄Π²Π°, Ссли Ρ„ΠΈΡ‡Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ развСсистая. Но Π΄Π°ΠΆΠ΅ это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΆΠ΄Π°Ρ‚ΡŒ Π΄Π²Π° дня, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ заставит сСбя Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° ваш рСквСст, ΠΈ Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ, ΠΏΠΎΠΊΠ° ΠΎΠ½ сквозь Π½Π΅Π³ΠΎ продСрётся. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΆΠ΅ Π²Ρ‹, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² 30-40 ΠΌΠΈΠ½ΡƒΡ‚. ОсобСнно ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² этом ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ IntelliJ со встроСнным инструмСнтом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (full disclosure: компания FunCorp ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ эти ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ своим сотрудникам).

ПослСднСС, ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ хочСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅Ρ‡ΡŒ, β€” Π½Π΅ пСрСписывайтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ Π² процСссС ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ добросовСстный Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΊΠΎΠ΄ ΠΊ сСбС локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· IDE ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСсты.

Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ всСм, ΠΊΡ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°! НадСюсь, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ, Π½ΠΎ ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ваш ΠΊΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Ρ€Π΅Π²ΡŒΡŽ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ»Ρ‘Π²Ρ‹Π΅ Ρ…Π°ΠΊΠΈ для git β€” Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΈΠΌΠΈ Π² коммСнтариях!

Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ «u»? «git push-U origin master» vs » git push origin master»

я, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, уТасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ git, нСсмотря Π½Π° ΠΌΠΎΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

ΠΎΡ‚ kernel.org для git push:

— u

—set-upstream

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, которая ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ΠΈΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ссылку Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ(отслСТиваниС), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² git-pull (1) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ branch.<name>.merge Π² git-config (1).

здСсь branch.<name>.merge Б git config:

branch.<name>.merge

опрСдСляСт, совмСстно с branch.<name>.remote, восходящая Π²Π΅Ρ‚Π²ΡŒ для Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Он сообщаСт git fetch/git pull, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° git push (см. push.нСисполнСниС.) Когда Π² Π²Π΅Ρ‚Π²ΠΈ <name>, ΠΎΠ½ сообщаСт git fetch, Ρ‡Ρ‚ΠΎ refspec ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ для слияния Π² FETCH_HEAD. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ обрабатываСтся ΠΊΠ°ΠΊ удалСнная Ρ‡Π°ΡΡ‚ΡŒ refspec ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ref, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ извлСкаСтся ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ "branch.<name>.remote". Π­Ρ‚ΠΎΡ‚ свСдСния ΠΎ слиянии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ git pull (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сначала Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ git fetch) для поиска Π²Π΅Ρ‚Π²ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для слияния. Π‘Π΅Π· этой ΠΎΠΏΡ†ΠΈΠΈ git pull ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сливаСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ refspec. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ слияниС осьминогов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ git pull Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ сливался Π² <name> ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ branch.<name>.merge Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ настройку . (Ρ‚ΠΎΡ‡ΠΊΠ°) для branch.<name>.remote.

я ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ настроил ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с github, ΠΈ я ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΆΠ°Π» свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π½Π° Π½Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

git push -u origin master

Π·Π°Ρ‚Π΅ΠΌ я нСвольно ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΆΠ°Π» свою Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² ΠΌΠΎΠ΅ΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

git commit -m '[...]'

ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ думая, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ придСтся снова Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° origin Π‘ master, я ΠΏΠΎΠ±Π΅ΠΆΠ°Π»:

# note: no -u
git push origin master

Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ? Казалось, это Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта. Π Π°Π·Π²Π΅ я «ΠΎΡ‚мСнял»git push -u origin master?

222

Π°Π²Ρ‚ΠΎΡ€: ClosureCowboy

ΠΊΠ»ΡŽΡ‡ «Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-ΠΌΠ΅Π½Π΅Π΅ git-pull». Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ git pull ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ, Π±Π΅Π· указания источника ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ‚Π²ΠΈ, git смотрит Π½Π° branch.<name>.merge настройка, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Ρ‚ΡΠ½ΡƒΡ‚ΡŒ. git push -u устанавливаСт эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅.

Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

$ git checkout -b test

Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π±Π΅Π· -u:

$ git push origin test
$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.test.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "test"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ добавляСм -u:

$ git push -u origin test
Branch test set up to track remote branch test from origin.
Everything up-to-date
$ git pull
Already up-to-date.

ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ отслСТиваниС информация Π±Ρ‹Π»Π° настроСна Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ git pull Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ оТидалось, Π±Π΅Π· указания ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ‚Π²ΠΈ.

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ρ‡Π°Π΅Π²Ρ‹Π΅:

  • ΠΊΠ°ΠΊ ΠœΠ°Ρ€ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ git pull этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ влияСт Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ git push. Если Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -u Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ваш push.default Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ config для upstream.
  • git push -u <remote> HEAD Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ тСкущая Π²Π΅Ρ‚Π²ΡŒ ΠΊ Π²Π΅Ρ‚Π²ΠΈ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π° <remote> (Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ отслСТиваниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git push послС этого).
git push -u origin master

— это Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ:

git push origin master ; git branch --set-upstream master origin/master

ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послСднСС заявлСниС, Ссли Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ -u!

ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Ссли Π²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ссли для вас ΠΎΠ½Π° Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ваши ошибки, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π²Ρ‹ Π½Π°Π±Ρ€Π°Π»ΠΈ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΈΠ»ΠΈ Π²Ρ‹ Π½Π΅ git remote add, хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ :).

Π² Π±ΠΎΠ»Π΅Π΅ простых Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…:

тСхничСски -u Ρ„Π»Π°Π³ добавляСт ссылку отслСТивания Π½Π° Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅.

Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это позволяСт Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git pull Π±Π΅Π· прСдоставлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². НапримСр, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ сдСлаСтС git push -u origin master ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ git pull ΠΈ git Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ git pull origin master.

Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Π°ΠΌ придСтся ввСсти всю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

4

Π°Π²Ρ‚ΠΎΡ€: Adepoju Oluwasegun

всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git bash, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ ΠΈ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π² Github:

git status 
git pull
git add filefullpath

git commit -m "comments for checkin file" 
git push origin branch/master
git remote -v 
git log -2 

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Ρ‚ΡƒΡ‚:

edit filename.* 

Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС Π²Π΅Ρ‚Π²ΠΈ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹:

git show-branch

-7

Π°Π²Ρ‚ΠΎΡ€: Kamta Mishra

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «git remote add …» ΠΈ «git push origin master»?

Update: ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ принятый Π² настоящСС врСмя ΠΎΡ‚Π²Π΅Ρ‚ ΡƒΠ²Π΅ΠΊΠΎΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ распространСнноС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ git push, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» исправлСн, нСсмотря Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° это.

вашС Ρ€Π΅Π·ΡŽΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ»ΡŒΡ‚Ρ‹ дистанционного управлСния-ΠΊΠ°ΠΊ псСвдоним для URL-адрСса рСпозитория-ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Ρ‚Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ URL Π½Π΅ git://[email protected]/peter/first_app.git Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ синтаксисС — Ρ‡Ρ‚ΠΎ это Π·Π° синтаксис? ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ? с.Π“Π˜Π’? Π― старался Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ .git Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΈ это Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Если Π½Π΅Ρ‚ .Π“Π˜Π’, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ? Git Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, являСтся ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° сСрвСрС git?

Π΄Π²Π° URL-адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ упомянули, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… транспортных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Π’ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с git:// для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для доступа Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΊ рСпозиториям. Π”Ρ€ΡƒΠ³ΠΎΠΉ, [email protected]:peter/first_app.git, являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов указания доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎ SSH-это «ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ стиля scp», описанный Π² докумСнтация. Π§Ρ‚ΠΎ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² синтаксисС стиля scp являСтся git ΠΈΠ· — Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ GitHub ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ-ΠΏΠΎ сущСству, это имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ игнорируСтся, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ идСнтифицируСтся Π½Π° основС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ SSH, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ использовали для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Ρ‡Ρ‚ΠΎ касаСтся многословия git push origin master, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»Ρ‡ΠΊΠ°, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git push. Π­Ρ‚ΠΎ ΠΈΠ·-Π·Π° сСрия Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹Ρ… для запоминания, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:)

  • Ссли ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ настроСн для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ (Π² remote.master.url Π² вашСм случаС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если это Π½Π΅ настроСно, Ρ‚ΠΎ это.
  • Ссли Π½Π΅Ρ‚ «refspec» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,master, master:my-experiment, etc.) ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π·Π°Ρ‚Π΅ΠΌ git ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ имя, Ρ‡Ρ‚ΠΎ ΠΈ Π²Π΅Ρ‚Π²ΡŒ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Если Ρƒ вас просто Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ master ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ, это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ вашСго master Π½Π° ΠΏΡƒΠ»ΡŒΡ‚ master.

Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ мСня, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ тСматичСских Π²Π΅Ρ‚Π²Π΅ΠΉ (ΠΈ часто нСсколько ΠΏΡƒΠ»ΡŒΡ‚ΠΎΠ²), я всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

git push origin master

… Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ.


Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², это Π·Π²ΡƒΡ‡ΠΈΡ‚ для мСня, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ are ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ git свСрху Π²Π½ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ эффСктивно — Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΈ ваш вопрос ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, ΠŸΠΎΡ‡Π΅ΠΌΡƒ πŸ˜‰ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ, git can ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ сущСству Ρ‚Π°ΠΊ ΠΆΠ΅ просто, ΠΊΠ°ΠΊ SVN, Π½ΠΎ зная Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡƒΠ»ΡŒΡ‚Π°Ρ… ΠΈ вСтвях, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ, ΠΈ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ. Π’Π°ΡˆΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ сСмСстровом курсС заставляСт мСня ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сказал Π‘ΠΊΠΎΡ‚Ρ‚ Π§Π°ΠΊΠΎΠ½ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ подкаста-студСнтов ΡƒΡ‡Π°Ρ‚ всСм Π²ΠΈΠ΄Π°ΠΌ основных инструмСнтов Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий. РаспрСдСлСнныС систСмы управлСния вСрсиями, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ git ΠΈ Mercurial, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹ ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΈΠ±ΠΊΠΈ, Ρ‡Ρ‚ΠΎ стоило Π±Ρ‹ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ курсы ΠΏΠΎ Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ людям Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ обоснованиС.

ΠΌΠΎΠΉ взгляд, Ρ‡Ρ‚ΠΎ с git, эта кривая обучСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ стоит Ρ‚ΠΎΠ³ΠΎ-Ρ€Π°Π±ΠΎΡ‚Π° с большим количСством тСматичСских Π²Π΅Ρ‚Π²Π΅ΠΉ, Π»Π΅Π³ΠΊΠΎ ΠΈΡ… объСдиняя, ΠΈ толкая ΠΈ вытягивая ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСпозиториями фантастичСски ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ станСтС ΡƒΠ²Π΅Ρ€Π΅Π½ Π² систСмС. Π–Π°Π»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ:

  • пСрвичная докумСнтация для git Ρ‚Π°ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². (Π₯отя я Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ссли Π’Ρ‹ Google для ΠΏΠΎΡ‡Ρ‚ΠΈ любого вопроса git, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» (ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ пСрСполнСния стСка :)) ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² настоящСС врСмя.)
  • Π² git Π΅ΡΡ‚ΡŒ нСсколько странных ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сСйчас, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ сцСнарии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ…, Π½ΠΎ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‚ людСй.

Git push | Atlassian Git Tutorial

Команда git push ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого локального рСпозитория Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Она позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· локального рСпозитория Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° симмСтрична ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git fetch: ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fetch ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ, Π° ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ push ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git remote. Команда push ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ измСнСния, поэтому ΠΏΡ€ΠΈ Π΅Π΅ использовании слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ΅.

ИспользованиС git push

gitΒ pushΒ <remote>Β <branch>

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ вмСстС со всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ назначСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Git Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Ссли Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ назначСния нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ускорСнноС слияниС.

gitΒ pushΒ <remote>Β --force

Аналогично ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ускорСнноС слияниС. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ --force, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² своих дСйствиях.

gitΒ pushΒ <remote>Β --all

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ всСх Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

gitΒ pushΒ <remote>Β --tags

ΠŸΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ использовании ΠΎΠΏΡ†ΠΈΠΈ --all Ρ‚Π΅Π³ΠΈ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ автоматичСски. Π€Π»Π°Π³ --tags отправляСт всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ git push

Команда git push Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ измСнСниями, внСсСнными Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ участниками ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ push.

На рисункС Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ваша локальная Π²Π΅Ρ‚ΠΊΠ° master измСняСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ master Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория ΠΈ Π²Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚Π΅ измСнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push origin master. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push ΠΏΠΎ сути Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git merge master, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Git push ΠΈ синхронизация

Команда git push β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰Π΅ΠΌ процСссС синхронизации Π² Git. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ синхронизации Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git remote. ΠšΠΎΠΌΠ°Π½Π΄Ρƒ git push ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈΒ», Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git fetch ΠΈ git pull β€” ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ». ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ посрСдством Β«Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» ΠΈΠ»ΠΈ Β«Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈΒ», Π² мСстС назначСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΡ… слияниС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² чистыС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

Π’ настоящСС врСмя Π² качСствС Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ исходного рСпозитория Git часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ чистый (--bare) Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π­Ρ‚ΠΎΡ‚ исходный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ размСщаСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Ρƒ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ стороны, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Bitbucket. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ структура ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ бСзопасный ΠΈ распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” это публикация Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, созданный с Ρ„Π»Π°Π³ΠΎΠΌ --bare. ЧистыС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, поэтому ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ содСрТимоС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π΅ измСняСтся. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ создании чистых Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git init.

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ публикация

Git ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ истории Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория, отклоняя push-запросы, Ссли нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… ускорСнноС слияниС. Π’Π°ΠΊ, Ссли история ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория отличаСтся ΠΎΡ‚ вашСй истории, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ pull ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ слияниС с локальной Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ merge, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ push Π΅Ρ‰Π΅ Ρ€Π°Π·. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π² SVN Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ svn update ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π°Π±ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π€Π»Π°Π³ --force отмСняСт это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ подгоняСт Π²Π΅Ρ‚ΠΊΡƒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠΎΠ΄ Π²Π°ΡˆΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, удаляя Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠ΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ внСсСны с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго выполнСния Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull. ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ push ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ лишь Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹ исправили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git commit --amend ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ пСрСбазирования. ΠŸΡ€ΠΈ этом ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ --force, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· участников вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ Π·Π°Π±ΠΈΡ€Π°Π» эти ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pull.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Команда git push ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ push. Π‘Π½Π°Ρ‡Π°Π»Π° провСряСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй локальной Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΏΡƒΡ‚Π΅ΠΌ извлСчСния ΠΊΠΎΠΏΠΈΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория ΠΈ пСрСбазирования Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½ΠΈΡ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ваши ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ вашСй локальной Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push.

gitΒ checkoutΒ master
gitΒ fetchΒ originΒ master
gitΒ rebaseΒ -iΒ origin/master
#Β SquashΒ commits,Β fixΒ upΒ commitΒ messagesΒ etc.
gitΒ pushΒ originΒ master

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ локальная главная Π²Π΅Ρ‚ΠΊΠ° Π±Ρ‹Π»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ускорСнноС слияниС, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° git push Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ описанных Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, связанных с Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ слияния.

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° push ΠΏΡ€ΠΈ исправлСнии ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

Команда git commit ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΡŽ --amend, которая позволяСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ часто вносятся исправлСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ измСнСния. Если ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±Ρ‹Π» исправлСн, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Git воспримСт исправлСнный ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ΅ содСрТимоС. ΠžΠΏΡ†ΠΈΡ --force ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ push ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

#Β makeΒ changesΒ toΒ aΒ repoΒ andΒ gitΒ add
gitΒ commitΒ --amend
#Β updateΒ theΒ existingΒ commitΒ message
gitΒ pushΒ --forceΒ originΒ master

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ выполняСтся Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с историСй ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Команда git commit --amend ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обновлСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Π—Π°Ρ‚Π΅ΠΌ исправлСнный ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ публикуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ push с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ --force.

Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Ρ‚Π΅Π³Π°

Иногда Π²Π΅Ρ‚ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ для навСдСния порядка. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ.

gitΒ branchΒ -DΒ branch_name
gitΒ pushΒ originΒ :branch_name

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° сотрСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ branch_name. Если Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git push ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ стСрта удалСнная Π²Π΅Ρ‚ΠΊΠ°.

НуТно Π»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ git push origin master -f Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ рСпозитория? β€” Π₯Π°Π±Ρ€ Q&A

Π’ ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ТСстка дискуссия ΠΎ Ρ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ push’Ρ‹ Π² мастСра с ΠΊΠ»ΡŽΡ‡Π΅ΠΌ force Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ рСпозитория.

Наш производствСнный процСсс выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Когда Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€ Π±Π΅Ρ€Π΅Ρ‚ сСбС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ таск, ΠΎΠ½ создаСт сСбС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, которая ΠΎΡ‚Π±ΠΈΡ‚Π° ΠΎΡ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ мастСра. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ таск Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ Ρƒ нас Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ merge request, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Если всС Π² порядкС, Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ° сливаСтся с мастСром ΠΈ удаляСтся. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π³ΠΈΡ‚Π»Π°Π±, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠ»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ с мастСром ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠΊΡƒ.

ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π² мастСра ΠΏΠΎΠΏΠ°Π»Π° Π²Π΅Ρ‚ΠΊΠ°, которая Ρ‚Π°ΠΌ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π°. Π’Π°ΠΊ Π²Ρ‹ΡˆΠ»ΠΎ, Ρ‡Ρ‚ΠΎ висСл merge request ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±Ρ‹Π»ΠΈ замСчания, Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просматривал ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ» Π½Π΅ Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈ слил Π½Π΅Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ с мастСром. Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ Π±Ρ‹Π» сдСлан Ρ€Π΅Π²Π΅Ρ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ сути прСдставляСт собой ΠΊΠΎΠΌΠΌΠΈΡ‚, ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ merge. Π­Ρ‚ΠΎΡ‚ самый Ρ€Π΅Π²Π΅Ρ€Ρ‚ спровоцировал ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π±Ρ‹Π»ΠΎ сдСлано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ — этот самый случайный merge Π±Ρ‹Π» «Π²Ρ‹Ρ€Π΅Π·Π°Π½», послС Ρ‡Π΅Π³ΠΎ послСдовала ΡΡ‚Ρ€Π°ΡˆΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push origin master --force-with-lease.

На ΠΌΠΎΠΉ взгляд Π΄Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ:

  1. Π’ истории вСрсий Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ мусора. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ вошСл merge ΠΏΠΎ нСостороТности, свСрху Π½Π° Π½Π΅Π³ΠΎ ΡƒΠΏΠ°Π» рСвСрс-ΠΊΠΎΠΌΠΌΠΈΡ‚. Но Ρ‡Π΅Ρ€Π΅Π· час, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились послС Ρ€Π΅Π²ΡŒΡŽ, Π±ΡƒΠ΄Π΅Ρ‚ сдСлан Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ merge с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² большС. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠΌΠ΅Π΅ΠΌ ΠΊΡƒΡ‡Ρƒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π² истории ΠΊΠΎΠ΄Π°.
  2. Π’ нашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС Ссли Π½Π΅ Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ merge, Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ послС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ rebase Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ мастСра (Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΆΠ΅ Π±Ρ‹Π» рСвСрс-ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈ это создало Π±Ρ‹ ΠΊΡƒΡ‡Ρƒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π°Π·Π²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ.

На ΠΌΠΎΠΉ взгляд Π΄Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ начался Ρ…ΠΎΠ»ΠΈΠ²Π°Ρ€.

Вопросы:

  1. ΠšΡ‚ΠΎ ΠΊΠ°ΠΊ считаСт — Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ push’Π° с форсом?
  2. Π§Ρ‚ΠΎ Ρƒ Вас Π΄Π΅Π»Π°ΡŽΡ‚ Ссли Π² мастСра случайно ΠΏΠΎΠΏΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ Ρ‚Π°ΠΌ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ?

ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ git push β€”force ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ git push β€”force-with-lease β€” urvanov.ru

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ git β€” это ΠΎΡ‡Π΅Π½ΡŒ плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Но Ссли ΠΎΡ‡Π΅Π½ΡŒ сильно хочСтся, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ. Волько Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ остороТным. ΠžΡ‚Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ вас Π½Π΅ Π±ΡƒΠ΄Ρƒ.

Если Π²Ρ‹ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ старыС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² истории git, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: исправили имя Π°Π²Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ e-mail, ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ»ΠΈ воспользовались amend ΠΈΠ»ΠΈ revert, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ push-Π° git справСдливо «ругнётся»:

$ git push
To https://github.com/urvanov-ru/test0001.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://github.com/urvanov-ru/test0001.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push —help’ for details.

$ git push

To https://github.com/urvanov-ru/test0001.git

! [rejected]Β Β Β Β Β Β Β Β master -> master (non-fast-forward)

error: failed to push some refs to ‘https://github.com/urvanov-ru/test0001.git’

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: ‘git pull …’) before pushing again.

hint: See the ‘Note about fast-forwards’ in ‘git push —help’ for details.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ всё ΠΆΠ΅ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ наши измСнСния, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ

git push —force origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

git push —force origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

Но Π² этом случаС ΠΌΡ‹ рискуСм ΠΏΠ΅Ρ€Π΅Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‡ΡŒΠΈ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ измСнСния, Ссли с Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π±ΠΈΡ€Π°Π»ΠΈ измСнСния с сСрвСра, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ успСл Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git push —force-with-lease origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

git push —force-with-lease origin <имя_Π²Π΅Ρ‚ΠΊΠΈ>

Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ успСл Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π±ΠΈΡ€Π°Π»ΠΈ измСнСния с сСрвСра, Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ΡŒ, Π° выдаст Π½Π°ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, послС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ смоТСм ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ со своими измСнСниями ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ
push —force-with-lease Π΅Ρ‰Ρ‘ Ρ€Π°Π·.


ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ:

Git — ΠΊΠ½ΠΈΠ³Π°

2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (2014)

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ

Вся ΠΊΠ½ΠΈΠ³Π° Pro Git, написанная Π‘ΠΊΠΎΡ‚Ρ‚ΠΎΠΌ Π§Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΈ Π‘Π΅Π½ΠΎΠΌ Π¨Ρ‚Ρ€Π°ΡƒΠ±ΠΎΠΌ ΠΈ опубликованная Apress, доступна здСсь. ВсС содСрТимоС находится ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Creative Commons Attribution Non Commercial Share Alike 3.0. ΠŸΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Π΅ вСрсии ΠΊΠ½ΠΈΠ³ΠΈ доступны Π½Π° Amazon.com.>

    1. 1.1
      О систСмС контроля вСрсий
    2. 1.2
      ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ история Git
    3. 1.3
      ΠžΡΠ½ΠΎΠ²Ρ‹ Git
    4. 1.4
      Командная строка
    5. 1.5
      Установка Git
    6. 1.6
      ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ настройка Git
    7. 1.7
      Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ?
    8. 1,8
      Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
    1. 2.1
      Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Git-рСпозитория
    2. 2.2
      Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
    3. 2.3
      ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²
    4. 2.4
      ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹
    5. 2,5
      Π Π°Π±ΠΎΡ‚Π° с ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ рСпозиториями
    6. 2,6
      Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ
    7. 2,7
      ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ Π² Git
    8. 2,8
      Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
    1. 3.1
      О Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ Π² Π΄Π²ΡƒΡ… словах
    2. 3.2

.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ истории рСпозитория ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ git push -f

Одно ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… наставлСний, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΏΠ°Π΄Π°Π²Π°Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ вмСстС с доступом ΠΊ git-рСпозиториям, Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: Β«Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Сшь ΠΆΡ‘Π»Ρ‚Ρ‹ΠΉ снСг Π΄Π΅Π»Π°ΠΉ git push -f Β». Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· сотСн максим, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ПО, Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ врСмя Π½Π° ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΠ»Π°Π΄Π΅Π½Ρ†Ρ‹ ΠΈ огонь: «спички дСтям Π½Π΅ ΠΈΠ³Ρ€ΡƒΡˆΠΊΠΈΒ» ΠΈ баста.Но ΠΌΡ‹ растём ΠΈ развиваСмся ΠΊΠ°ΠΊ люди ΠΈ ΠΊΠ°ΠΊ профСссионалы, ΠΈ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ вопрос Β«Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ, собствСнно?Β» встаёт Π² ΠΏΠΎΠ»Π½Ρ‹ΠΉ рост. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ написана ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ нашСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΌΠΈΡ‚Π°ΠΏΠ°, Π½Π° Ρ‚Π΅ΠΌΡƒ: «Когда ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²Β».

Π― ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос Π½Π° собСсСдовании Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компаниях являСтся ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ прохоТдСния собСсСдования Π½Π° ΡΠ΅Π½ΡŒΠΎΡ€ΡΠΊΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½Π΅Π³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ»ΠΎΡ…ΠΎ пСрСписываниС истории?

Для этого, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π°ΠΌ понадобится быстрый экскурс Π² Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру git-рСпозитория.Π’ процСссС довольно ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π½ΠΎ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ происходит довольно ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

На самом Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ git-Ρ€Π΅ΠΏΠΎ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π½ΠΈΡ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ 40-Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ Ρ…ΡΡˆ (20 Π±Π°ΠΉΡ‚, записанныС Π² 16-Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся Π½Π° основС содСрТимого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ взята ΠΈΠ· Книги сообщСства Git

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — это blob (просто содСрТимоС Ρ„Π°ΠΉΠ»Π°), Π΄Π΅Ρ€Π΅Π²ΠΎ (Π½Π°Π±ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° blob ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ) ΠΈ фиксация.ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° commit прСдставляСт собой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ, Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ: Π΄Π°Ρ‚Π° / врСмя, Π°Π²Ρ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

Π“Π΄Π΅ здСсь Π²Π΅Ρ‚ΠΊΠΈ ΠΈ тэги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? А ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями: Π²Π΅Ρ‚ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π½Π΅ΠΉ, тэг — Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π² IDE ΠΈΠ»ΠΈ GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ красиво нарисованныС Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΊΡ€ΡƒΠΆΠΎΡ‡ΠΊΠ°ΠΌΠΈ-ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π½Π° Π½ΠΈΡ… — ΠΎΠ½ΠΈ строятся Π½Π° Π»Π΅Ρ‚Ρƒ, пробСгая ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π²Π΅Ρ‚ΠΎΠΊ Π²Π½ΠΈΠ· ΠΊ Β«ΠΊΠΎΡ€Π½ΡŽΒ».Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, вмСсто указатСля Ρ‚Π°ΠΌ null.

Π’Π°ΠΆΠ½Ρ‹ΠΉ для понимания ΠΌΠΎΠΌΠ΅Π½Ρ‚: ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, ΠΎΠ½Π° просто Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ «расти» с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ Π±Ρ‹Π» HEAD Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git checkout -b <имя-Π²Π΅Ρ‚ΠΊΠΈ> .

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ пСрСписываниС истории рСпозитория Π²Ρ€Π΅Π΄Π½ΠΎ?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈ это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ истории Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ свои измСнСния.Команда git push -f удаляСт ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ Π½Π° сСрвСрС всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² локальной вСрсии, ΠΈ записываСт Π½ΠΎΠ²Ρ‹Π΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ довольно Π΄Π°Π²Π½ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git push сущСствуСт «бСзопасный» ΠΊΠ»ΡŽΡ‡ --force-with-lease , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ с ошибкой, Ссли Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ . Π― всСгда Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ вмСсто -f / - force .

Вторая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° git push -f считаСтся Π²Ρ€Π΅Π΄Π½ΠΎΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ слияния (слияния) Π²Π΅Ρ‚ΠΊΠΈ с пСрСписанной историСй с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Π³Π΄Π΅ ΠΎΠ½Π° ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· пСрСписанной истории), ΠΌΡ‹ΠΈΠΌ адскоС число ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (ΠΏΠΎ сообщСству ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², собствСнно).На это Π΅ΡΡ‚ΡŒ простой ΠΎΡ‚Π²Π΅Ρ‚: Ссли Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Gitflow ΠΈΠ»ΠΈ Gitlab Flow, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, скорСС всСго, Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π΅ΡΡ‚ΡŒ нСприятная ΠΏΠΎΠ±ΠΎΡ‡ΠΊΠ° пСрСписывания истории: Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Π±Ρ‹ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ этом ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ, Π½Π° самом Π΄Π΅Π»Π΅, Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΈ просто ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π°Π²Π΅Ρ‡Π½ΠΎ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎ. ΠœΠ΅Π»ΠΎΡ‡ΡŒ, Π½ΠΎ нСприятно. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ git Ρ‚ΠΎΠΆΠ΅ прСдоставили, ввСдя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сборки мусора git gc --prune . Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ git-хостингов, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ GitHub ΠΈ GitLab, врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ производят ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² Ρ„ΠΎΠ½Π΅.

Π˜Ρ‚Π°ΠΊ, развСявСниС ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ истории рСпозитория, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ вопросу: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ?

На самом Π΄Π΅Π»Π΅, я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ git Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π·, Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Π΄Ρ€ΡƒΠ³ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ: Π²ΠΊΡ€Π°Π»Π°ΡΡŒ досадная ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΊΠΎΠ΄, сдСлал ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (с Π»ΠΈΡ‡Π½Ρ‹ΠΌ e-mail вмСсто Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚), Π·Π°Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (Ссли Π²Ρ‹, ΠΊΠ°ΠΊ я, Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ git commit -a ).Π”Π°ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ описания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости Π΅Π³ΠΎ пСрСзаписи, вСдь Ρ…ΡΡˆ считаСтся ΠΈ ΠΎΡ‚ описания Ρ‚ΠΎΠΆΠ΅!

Но это Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ случай. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ интСрСсныС.

Допустим, Π²Ρ‹ сдСлали большиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΈΠ»ΠΈΠ»ΠΈ нСсколько Π΄Π½Π΅ΠΉ, отсылали Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° сСрвСрС (4-5 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²), ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ свои измСнСния Π½Π° Ρ€Π΅Π²ΡŒΡŽ. Π”Π²ΠΎΠ΅-Ρ‚Ρ€ΠΎΠ΅ Π½Π΅ΡƒΡ‚ΠΎΠΌΠΈΠΌΡ‹Ρ… Ρ€Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ΠΎΠ² Π·Π°ΠΊΠΈΠ΄Π°Π»ΠΈ вас ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ рСкомСндациями ΠΏΡ€Π°Π²ΠΎΠΊ, Π° Ρ‚ΠΎ ΠΈ вовсС нашли косяки (Π΅Ρ‰Ρ‘ 4-5 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²).Π—Π°Ρ‚Π΅ΠΌ QA нашли нСсколько ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… случаСв, Ρ‚ΠΎΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… исправлСний (Π΅Ρ‰Ρ‘ 2-3 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°). И Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π½ΠΈΠ»ΠΈΡΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ нСсовмСстимости ΠΈΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ автотСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΏΠΎΡ„ΠΈΠΊΡΠΈΡ‚ΡŒ.

Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠ°Ρ‚ΡŒ, Π½Π΅ глядя, ΠΊΠ½ΠΎΠΏΠΊΡƒ Merge, Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ½Π° ΠΏΠΎ старинкС называСтся master) Π²ΠΎΠ»ΡŒΡŽΡ‚ΡΡ ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° дСсятка ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° «Моя функция, дСнь 1Β», Β«Π”Π΅Π½ΡŒ 2Β», Β«Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ тСсты», Β«Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ Β»ΠΈ ​​т.Π΄. ΠžΡ‚ этого, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ сквоша, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСйчас Π΅ΡΡ‚ΡŒ ΠΈ Π² GitHub, ΠΈ Π² GitLab, Π½ΠΎ с Π½ΠΈΠΌ Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТными: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ нСпрСдсказуСмоС, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€ΠΎΠΌ — Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° Ρ„ΠΈΡ‡ΠΈ Π½Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ Merge (Ρƒ нас это Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€ΠΎΠ±ΠΎΡ‚, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π»ΠΈΠ·-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ сСгодняшний Π΄Π΅ΠΏΠ»ΠΎΠΉ).ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ самым Π³Π»Π°Π²Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π² Ρ€Π΅Π»ΠΈΠ· ΡΡ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ git rebase .

Но Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ Π²Ρ‹ ΡƒΠΆΠ΅ подошли с историСй Ρ€Π΅ΠΏΠΎ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉ салат «ОливьС». Π’Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Ссли Ρ„ΠΈΡ‡Π° пилилась нСсколько нСдСль, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΏΠ»ΠΎΡ…ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, хотя Π·Π° это Π² ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… Π±ΡŒΡŽΡ‚ кандСлябром, трСбования измСнились Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ запрос Π½Π° слияниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅Ρ…Π°Π» ΠΊΠΎ ΠΌΠ½Π΅ Π½Π° Ρ€Π΅Π²ΡŒΡŽ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄:

Π£ мСня Ρ€ΡƒΠΊΠ° машинально ΠΏΠΎΡ‚ΡΠ½ΡƒΠ»Π°ΡΡŒ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСквСст ΠΈΠ· 50 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с ΠΏΠΎΡ‡Ρ‚ΠΈ 2000 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ строк? И ΠΊΠ°ΠΊ Π΅Π³ΠΎ, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ, Ρ€Π΅Π²ΡŒΡŽΠΈΡ‚ΡŒ?

ЧСстно говоря, Ρƒ мСня ΡƒΡˆΠ»ΠΎ Π΄Π²Π° дня просто Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбя ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ этому Ρ€Π΅Π²ΡŒΡŽ.И это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ рСакция для ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°; ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации, просто Π½Π΅ глядя, ΠΆΠΌΡ‘Ρ‚ ΠžΠ΄ΠΎΠ±Ρ€ΡΡŽ, понимая, Ρ‡Ρ‚ΠΎ Π·Π° Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ врСмя всё Ρ€Π°Π²Π½ΠΎ Π½Π΅ соотвСтствуСт Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ ΠΎΠ±Π·ΠΎΡ€Ρƒ этого измСнСния с достаточным качСством.

Но Π΅ΡΡ‚ΡŒ способ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Ρƒ. Помимо ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΡƒΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ написания основного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти Π΅Π³ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ написания Π² Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Ρ€Π°Π·Π±ΠΈΠ² Π½Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌΠΈ тСстами Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ: «создал Π½ΠΎΠ²Ρ‹ΠΉ сСрвис ΠΈ транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ для Π½Π΅Π³ΠΎΒ», «построил ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ написал. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Β»,Β« Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Β»,Β« написал тСсты Β».
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π²ΡŒΡŽΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ (ΠΈ GitHub, ΠΈ GitLab это ΡƒΠΌΠ΅ΡŽΡ‚) ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π°Π±Π΅Π³Π°ΠΌΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ своими Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π² ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°Ρ….

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это всё Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ всё Ρ‚ΠΎΡ‚ ​​ТС git rebase с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ --interactive . Π’ качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ послСдних 50 ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ git rebase --interactive HEAD ~ 50 (ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ вмСсто Β«50Β» Π²Π°ΡˆΡƒ Ρ†ΠΈΡ„Ρ€Ρƒ).

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΠΎΠ΄Π»ΠΈΠ²Π°Π»ΠΈ ΠΊ сСбС Π²Π΅Ρ‚ΠΊΡƒ мастСр, Ρ‚ΠΎ сначала Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±Π°Π· Π½Π° эту Π²Π΅Ρ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ-ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· мастСра Π½Π΅ ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ Ρƒ вас ΠΏΠΎΠ΄ Π½ΠΎΠ³Π°ΠΌΠΈ.

Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ знаниями ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС git-рСпозитория, ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия rebase Π½Π° master Π±ΡƒΠ΄Π΅Ρ‚ нСслоТно. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Ρ€Ρ‘Ρ‚ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² нашСй Π²Π΅Ρ‚ΠΊΠ΅ ΠΈ мСняСт родитСля ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π²Π΅Ρ‚ΠΊΠ΅, мастСр. Π‘ΠΌ. схСма:

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ взяты ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Pro Git

Если измСнСния Π² C4 ΠΈ C3 ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚, Ρ‚ΠΎ послС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ C4 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» своС содСрТаниС, поэтому ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π½Π° схСму Π² C4 ’.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ Ρ€Π°ΡΡ‚ΡƒΡ‰ΡƒΡŽ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ master. Π‘Π°ΠΌΠΎ собой, мастСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ. МоТно просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ с сСрвСра: git pull --rebase origin / master (ΠΊΠ°ΠΊ извСстно, git pull равносилСн git fetch && git merge , Π° ΠΊΠ»ΡŽΡ‡ --rebase заставит git ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ rebase вмСсто merge).

ВСрнёмся Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΊ git rebase --interactive . Π•Π³ΠΎ Π΄Π΅Π»Π°Π»ΠΈ программисты для программистов, ΠΈ понимая, ΠΊΠ°ΠΊΠΎΠΉ стрСсс люди Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² процСссС, ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ максимально Π½Π΅Ρ€Π²Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π½Π°ΠΏΡ€ΡΠ³Π°Ρ‚ΡŒΡΡ.Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° экранС:

Π­Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ популярного ΠΏΠ°ΠΊΠ΅Ρ‚Π° Guzzle. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Π½Π΅ помСшал бы…

Π’ тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ открываСтся сформированный Ρ„Π°ΠΉΠ». Π’Π½ΠΈΠ·Ρƒ вас ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ подробная справка ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π”Π°Π»Π΅Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ простого рСдактирования Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ Π² вашСй Π²Π΅Ρ‚ΠΊΠ΅. Всё просто, ΠΊΠ°ΠΊ ΠΏΠ°Π»ΠΊΠ°: pick — ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, reword — ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ описаниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, squash — ΡΠ»ΠΈΡ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ (процСсс Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ снизу Π²Π²Π΅Ρ€Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ — это ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строчкой Π½ΠΈΠΆΠ΅), drop — Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ — ΠΈ это самоС интСрСсноС — ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ Π·Π°ΠΌΠ΅Ρ€Π΅Ρ‚ΡŒ.ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ git встрСтит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ edit, ΠΎΠ½ встанСт Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌ постановки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² этом ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ нСсколько, ΠΈ послС этого ΡΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ git rebase --continue , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ процСсс rebase.

Π”Π°, ΠΈ кстати, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ мСстами. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это создаст ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ процСсс пСрСустановки Ρ€Π΅Π΄ΠΊΠΎ обходится совсСм ΡƒΠΆ Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². Как говорится, снявши Π³ΠΎΠ»ΠΎΠ²Ρƒ, ΠΏΠΎ волосам Π½Π΅ ΠΏΠ»Π°Ρ‡ΡƒΡ‚.

Если Π²Ρ‹ Π·Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ ΠΈ каТСтся, Ρ‡Ρ‚ΠΎ всё ΠΏΡ€ΠΎΠΏΠ°Π»ΠΎ, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°ΠΏΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ git rebase --abort , которая Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Π΅Ρ€Π½Ρ‘Ρ‚ всё ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ.

. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ написал Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎ тСсты Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌΠΈ (для этого ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ — сквош).

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π° Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΠΈΠ»ΠΎΡ‚Π°ΠΆΠ°, полСзная Π² случаС, Ссли Π½Π°Π΄ΠΎ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ — git add --patch . Она ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ сама ΠΏΠΎ сСбС, Π½ΠΎ Π² сочСтании с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ edit ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт, Ссли я Π½Π΅ ошибаюсь, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° IDE.

УбСдившись Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ всё Π² порядкС, Π²Ρ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚Π΅ со спокойной Π΄ΡƒΡˆΠΎΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, с Ρ‡Π΅Π³ΠΎ начался этот Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»: git push --force .Ой, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, разумССтся, - force-with-lease !

ΠŸΠ°Π»Ρƒ Π²Ρ‹, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот процСсс (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ rebase Π½Π° master) час, Π° Ρ‚ΠΎ ΠΈ Π΄Π²Π°, Ссли Ρ„ΠΈΡ‡Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ развСсистая. Но Π΄Π°ΠΆΠ΅ это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΆΠ΄Π°Ρ‚ΡŒ Π΄Π²Π° дня, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ заставит сСбя Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° ваш рСквСст, ΠΈ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ, ΠΏΠΎΠΊΠ° ΠΎΠ½ сквозь Π½Π΅Π³ΠΎ продСрётся. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΆΠ΅ Π²Ρ‹, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² 30-40 ΠΌΠΈΠ½ΡƒΡ‚. ОсобСнно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² этом ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ IntelliJ со встроСнным инструмСнтом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (ΠΏΠΎΠ»Π½ΠΎΠ΅ раскрытиС: компания FunCorp ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ эти ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ своим сотрудникам).

ПослСднСС, ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ хочСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅Ρ‡ΡŒ, — Π½Π΅ пСрСписывайтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ Π² процСссС ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ добросовСстный Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ ΠΊ сСбС локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· IDE ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСсты.

Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ всСм, ΠΊΡ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°! НадСюсь, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ, Π½ΠΎ ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, ваш ΠΊΠΎΠ΄ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Ρ€Π΅Π²ΡŒΡŽ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ»Ρ‘Π²Ρ‹Π΅ Ρ…Π°ΠΊΠΈ для git — Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΈΠΌΠΈ Π² коммСнтариях!

.

Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ «u»? Β«git push-U origin masterΒ» ΠΏΡ€ΠΎΡ‚ΠΈΠ² Β«git push origin masterΒ»

я, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, уТасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ git, нСсмотря Π½Π° ΠΌΠΎΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ.

ΠΎΡ‚ kernel.org для git push :

— u

— установка восходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°

для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, которая ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ​​или ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚Π°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​ссылка Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ (отслСТиваниС), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² git-pull (1) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см.Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Π΅Ρ‚ΠΊΠ° . <Имя> .merge Π² git-config (1).

здСсь Π²Π΅Ρ‚ΠΊΠ°. <Имя> .merge Π‘ git config :

Ρ„ΠΈΠ»ΠΈΠ°Π». <Имя> .merge

опрСдСляСт совмСстно с Π²Π΅Ρ‚Π²ΡŒ. <Имя> .remote , восходящая Π²Π΅Ρ‚Π²ΡŒ для Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Он сообщаСт git fetch / git pull, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° git push (см. Push.нСисполнСниС.) Когда Π² Π²Π΅Ρ‚Π²ΠΈ , ΠΎΠ½ сообщаСт git fetch, Ρ‡Ρ‚ΠΎ refspec ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ для слияния Π² FETCH_HEAD.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ обрабатываСтся ΠΊΠ°ΠΊ удалСнная Ρ‡Π°ΡΡ‚ΡŒ refspec ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ref, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ извлСкаСтся ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ "Π²Π΅Ρ‚ΠΊΠ°. <Имя> .remote" . Π­Ρ‚ΠΈ свСдСния ΠΎ слиянии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ git pull (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сначала git fetch) для поиска ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для слияния. Π‘Π΅Π· этой ΠΎΠΏΡ†ΠΈΠΈ git pull ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сливаСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ refspec. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ слияниС осьминогов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ git pull Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ сливался Π² <имя> ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ .<имя> .merge Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ настройку. (Ρ‚ΠΎΡ‡ΠΊΠ°) для Π²Π΅Ρ‚ΠΊΠΈ . <имя> .remote .

я ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ настроил ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с github, ΠΈ я ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΆΠ°Π» свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π½Π° Π½Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

  git push -u origin master
  

я нСвольно Π½Π°ΠΆΠ°Π» свою Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:

  git commit -m '[...]'
  

ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ думая, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ придСтся снова Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° origin Π‘ master , я ΠΏΠΎΠ±Π΅ΠΆΠ°Π»:

  # ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: no -u
git push origin master
  

Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ? Казалось, это Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта.Π Π°Π·Π²Π΅ я «ΠΎΡ‚мСнял» git push -u origin master ?

222

Π°Π²Ρ‚ΠΎΡ€: ClosureCowboy

ΠΊΠ»ΡŽΡ‡ «Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-ΠΌΠ΅Π½Π΅Π΅ git-pull». Когда Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ git pull ΠΈΠ· Π²Π΅Ρ‚Π²ΠΈ, Π±Π΅Π· указания источника ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ‚Π²ΠΈ, git смотрит Π½Π° Π²Π΅Ρ‚ΠΊΡƒ .<имя> .merge настройка, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Ρ‚ΡΠ½ΡƒΡ‚ΡŒ. git push -u устанавливаСт эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅.

Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ:

  $ git checkout -b тСст
  

Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π±Π΅Π· -u :

  $ git push origin test
$ git pull
Π’Ρ‹ попросил мСня ΠΏΠΎΡ‚ΡΠ½ΡƒΡ‚ΡŒ, Π½Π΅ сказав, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Ρ‚Ρ‹
Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, ΠΈ "branch.test.merge" Π²
ваш Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ сообщаСт ΠΌΠ½Π΅ ΠΎΠ± этом.поТалуйста
ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ
ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 'git pull  ').
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Git-pull (1).

Если Π²Ρ‹ часто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚Π΅ΡΡŒ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²Π΅Ρ‚ΠΊΠΎΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² своСм Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

    [Π²Π΅Ρ‚ΠΊΠ° "тСст"]
    remote = <Π½ΠΈΠΊ>
    merge = 

    [ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ "<Π½ΠΈΠΊ>"]
    url = 
    fetch = 

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Git-config (1).
  

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ добавляСм -u :

  $ git push -u origin test
Настройка тСста вСтвлСния для отслСТивания ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСста вСтвлСния ΠΈΠ· источника.ВсС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ
$ git pull
Π£ΠΆΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ.
  

ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ отслСТиваниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»Π° настроСна Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ git pull Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ оТидалось, Π±Π΅Π· указания ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ‚Π²ΠΈ.

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ρ‡Π°Π΅Π²Ρ‹Π΅:

  • ΠΊΠ°ΠΊ ΠœΠ°Ρ€ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π² коммСнтариях, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ git pull этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ влияСт Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ git push . Если Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -u , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ваш push.ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ config для восходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ° .
  • git push -u HEAD Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π° (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ настройку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git push послС этого).
  git push -u origin master
  

— это Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ:

  git push origin master; git branch --set-upstream master origin / master
  

ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послСднСС заявлСниС, Ссли Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ -u !

ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ:

  git config branch.master.remote origin
git config branch.master.merge ссылки / Π³ΠΎΠ»ΠΎΠ²Ρ‹ / мастСр
  

, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ сдСлали ваши ошибки, Ссли Π²Ρ‹ Π½Π΅ Π½Π°Π±Ρ€Π°Π»ΠΈ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, ΠΈΠ»ΠΈ Π²Ρ‹ Π½Π΅ git remote add , хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ :).

Π² Π±ΠΎΠ»Π΅Π΅ простых Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…:

тСхничСски -u Ρ„Π»Π°Π³ ссылку Π½Π° Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅.

Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это позволяСт Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git pull Π±Π΅Π· прСдоставлСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². НапримСр, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ сдСлаСтС git push -u origin master ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ git pull ΠΈ git Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ git pull origin master .

|

4

Π°Π²Ρ‚ΠΎΡ€: Adepoju Oluwasegun

всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git bash, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ ΠΈ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π² Github:

  git статус
git pull
git add filefullpath

git commit -m "ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ для Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ"
git push origin Π²Π΅Ρ‚ΠΊΠ° / мастСр
git ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ -v
git ΠΆΡƒΡ€Π½Π°Π» -2
  

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Ρ‚ΡƒΡ‚:

  Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π°.*
  

Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС Π²Π΅Ρ‚Π²ΠΈ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹:

  git ΡˆΠΎΡƒ-Π²Π΅Ρ‚ΠΊΠ°
  

-7

Π°Π²Ρ‚ΠΎΡ€: ΠšΠ°ΠΌΡ‚Π° ΠœΠΈΡˆΡ€Π°

.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «git remote add …» ΠΈ «git push origin master»?

ОбновлСниС : ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ принятый Π² настоящСС врСмя ΠΎΡ‚Π²Π΅Ρ‚ ΡƒΠ²Π΅ΠΊΠΎΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ распространСнноС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ git push , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» исправлСн, нСсмотря Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° это.

Ρ€Π΅Π·ΡŽΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ»ΡŒΡ‚Ρ‹ вашСго дистанционного управлСния-ΠΊΠ°ΠΊ псСвдоним для URL-адрСса рСпозитория-ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Ρ‚Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ URL Π½Π΅ git: //[email protected]/peter/first_app.git Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ синтаксисС — Ρ‡Ρ‚ΠΎ это Π·Π° синтаксис? ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ? с.Π“Π˜Π’? Π― старался Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ .git Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΈ это Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Если Π½Π΅Ρ‚ .Π“Π˜Π’, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ? Git Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, являСтся ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° сСрвСрС git?

URL-адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ, ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… транспортных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Π’ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с git: // для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для доступа Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΊ рСпозиториям.Π”Ρ€ΡƒΠ³ΠΎΠΉ, [email protected]: peter / first_app.git , являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов указания доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ SSH-это «ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ стиля scp», Π² докумСнтация. Π§Ρ‚ΠΎ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² синтаксисС стиля scp являСтся git ΠΈΠ· — Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ GitHub ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ-ΠΏΠΎ сущСству, это имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ игнорируСтся, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ идСнтифицируСтся Π½Π° основС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ SSH, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ использовали для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Ρ‡Ρ‚ΠΎ касаСтся многословия git push origin master , Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»Ρ‡ΠΊΠ°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git push .Π­Ρ‚ΠΎ ΠΈΠ·-Π·Π° сСрия Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹Ρ… для запоминания, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ πŸ™‚

  • , Ссли ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ настроСн для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ (Π² remote.master.url Π² вашСм случаС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если это Π½Π΅ настроСно, Ρ‚ΠΎ это.
  • Ссли Π½Π΅Ρ‚ «refspec» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, master , master: my-экспСримСнт ΠΈ Ρ‚. Π”.) Π£ΠΊΠ°Π·Π°Π½ΠΎ, Π·Π°Ρ‚Π΅ΠΌ git ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ имя, Ρ‡Ρ‚ΠΎ ΠΈ Π²Π΅Ρ‚Π²ΡŒ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.Если Ρƒ вас просто Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ master ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ вашим Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ master Π½Π° ΠΏΡƒΠ»ΡŒΡ‚ master .

Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ мСня, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, часто нСсколько ΠΏΡƒΠ»ΡŒΡ‚ΠΎΠ², я всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ:

  мастСр git push origin
  

… Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ.


Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ — это изучаСтся свСрху Π²Π½ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ эффСктивно — Π²Ρ‹ прСдставляСтС, Ρ‡Ρ‚ΠΎ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΈ ваш вопрос ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, ΠŸΠΎΡ‡Π΅ΠΌΡƒ;), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ, git ΠΌΠΎΠΆΠ΅Ρ‚ , Π½ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ, ΠΊΠ°ΠΊ SVN, Π½ΠΎ зная Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡƒΠ»ΡŒΡ‚Π°Ρ… ΠΈ ​​вСтвях.Π‘ΠΊΠΎΡ‚Ρ‚ Π§Π°ΠΊΠΎΠ½ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ подкаста-студСнтов ΡƒΡ‡Π°Ρ‚ всСм основным инструмСнтам Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсий. РаспрСдСлСнныС систСмы управлСния вСрсиями, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ git ΠΈ Mercurial, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹ ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΈΠ±ΠΊΠΈ, Ρ‡Ρ‚ΠΎ стоило Π±Ρ‹ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ курсы ΠΏΠΎ Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ людям Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ обоснованиС.

ΠΌΠΎΠΉ взгляд, Ρ‡Ρ‚ΠΎ с git , эта кривая обучСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ стоит Ρ‚ΠΎΠ³ΠΎ-Ρ€Π°Π±ΠΎΡ‚Π° с большим количСством тСматичСских Π²Π΅Ρ‚Π²Π΅ΠΉ, Π»Π΅Π³ΠΊΠΎ ΠΈΡ… объСдиняя, ΠΈ толкая ΠΈ вытягивая ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСпозиториями фантастичСски ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ станСтС станСтС ΡƒΠ²Π΅Ρ€Π΅Π½ Π² систСмС.Π–Π°Π»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ:

  • пСрвичная докумСнтация для git Ρ‚Π°ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². (Π₯отя я Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ссли Google для ΠΏΠΎΡ‡Ρ‚ΠΈ любого вопроса git, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» (ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ пСрСполнСния стСка :)) ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² настоящСС врСмя.)
  • Π² git Π΅ΡΡ‚ΡŒ нСсколько странных ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *