πŸ““Git cheatsheet

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π³ΠΈΡ‚ΠΎΠΌ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Git

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ SSH ΠΊΠ»ΡŽΡ‡Π° ΠΊ Github/Gitlab

Π’ΠΠ–ΠΠž: ΠΏΠΎΠ΄Π²ΡΠ·Π°Ρ‚ΡŒ SSH ΠΏΠΎΠ΄ Π³ΠΈΡ‚ - дСлаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС, послС этого большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ SSH ΠΊΠ»ΡŽΡ‡

  1. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (git bash ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ).

  2. ВыполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ssh-keygen -t rsa -b 4096 -C "your_email@example.com".

  3. Когда спросят "Enter a file in which to save the key" просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter, ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

  4. ПослС этого попросят Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„Ρ€Π°Π·Ρƒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΅Π΅.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡ ΠΈ подвязываСм ΠΏΠΎΠ΄ Π³ΠΈΡ‚Ρ…Π°Π±/Π³ΠΈΡ‚Π»Π°Π±

  1. ВыполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pbcopy < ~/.ssh/id_rsa.pub

  2. Если Π½Π΅ сработаСт, пишСм cat ~/.ssh/id_rsa.pub ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π²Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ.

  3. Π˜Ρ‰Π΅ΠΌ Π² настройках Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π° Github/Gitlab SSH keys, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π² этой Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ new key, вставляСм Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ скопировали.

  4. БохраняСм.

  5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ Π½ΡƒΠΆΠ½ΠΎ) ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· SSH.

Бонус: ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ всСх https Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π½Π° ssh

  1. Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρƒ вас? git remote -v.

  2. Если адрСс начинаСтся Π½Π° https://, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ хост (github/gitlab), вашС имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ имя рСпозитория.

  3. Π•Ρ‰Π΅ Ρ€Π°Π· git remote -v Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС сработало.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ рСпозитория ΠΈ Π·Π°ΠΊΠΈΠ΄Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‚ΡƒΠ΄Π° своих Ρ„Π°ΠΉΠ»ΠΎΠ² (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ)

  1. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² GitHub/GitLab/BitBucket.

  2. Π’ ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ выполняСм git init.

  3. git add .

  4. git commit -m "initial commit"

  5. git remote add origin git@git-where-you-are.com:your-name/your-awesome-git-project.git

  6. git push -u origin master

Π“ΠΎΡ‚ΠΎΠ²ΠΎ

ОбъСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠ°Π½Π΄ Π² ΠΎΠ΄Π½Ρƒ

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ &&:

git commit -am "new commit" && git push

ΠžΡ‚ΠΌΠ΅Π½Π° всСго нСпотрСбства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ написали ΠΈ Π΅Ρ‰Π΅ (ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ) Π½Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»ΠΈ

git checkout -- .

ΠžΡ‚ΠΌΠ΅Π½Π° послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ случайно Π·Π°Π»ΠΈΠ»ΠΈ Π½Π΅ Π² Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ

  1. Π’ Π²Π΅Ρ‚ΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ сдСлали ΠΊΠΎΠΌΠΌΠΈΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git reset HEAD~1 --soft.

  2. ПослСдний ΠΊΠΎΠΌΠΌΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½, всС измСнСния вСрнутся Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π΅ ΠΏΡ€ΠΎΠΏΠ°Π΄ΡƒΡ‚).

  3. git stash (ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ всС измСнСния Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π³ΠΈΡ‚Π°).

  4. git checkout correct-branch

  5. git stash apply (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ измСнСния Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ).

  6. git commit -am "Your commit message"

ΠžΡ‚ΠΌΠ΅Π½Π° послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² Π½Π΅ΠΌ сдСланы

git reset HEAD~1 --hard


Π Π°Π±ΠΎΡ‚Π° с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ

Π’ΠΠ–ΠΠž! ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… создавайтС ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ свои собствСнныС Π²Π΅Ρ‚ΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π΅Π΅

git checkout -b your-new-awesome-branch

Pull/push ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

git pull/push origin your-branch

БлияниС (merge) Π²Π΅Ρ‚ΠΊΠΈ master с вашСй Π²Π΅Ρ‚ΠΊΠΎΠΉ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„ΠΈΡ‡Π°ΠΌΠΈ

  1. Π—Π°ΠΊΠΈΠ½ΡƒΡ‚ΡŒ всС измСнСния Π² Π³ΠΈΡ‚ Π½Π° свою Π²Π΅Ρ‚ΠΊΡƒ(git add . && git commit -m "new-commit" && git push origin your-branch).

  2. git checkout master

  3. git pull

  4. git checkout your-branch

  5. git merge master

  6. Ѐиксим ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ (консоль Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, ΠΈΡ‰ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠ² >>>>>>>> ΠΈ <<<<<<<<<), Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDE.

  7. git commit -am "merging changes from my branch" && git push

  8. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² вашСй Π²Π΅Ρ‚ΠΊΠ΅ Π΅ΡΡ‚ΡŒ слитыС ваши измСнСния ΠΈ послСдняя вСрсия мастСра, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΈΠ½ΡƒΡ‚ΡŒ всС это Π΄Π΅Π»ΠΎ Π² мастСр.

  9. git checkout master

  10. git merge your-branch

  11. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΡƒΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, всС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»ΠΈΡ‚ΡŒΡΡ автоматичСски.

  12. Profit

Как ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ с Π²Π΅Ρ‚ΠΊΠΈ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ постоянно Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π» ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с git?.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ΅ (ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π½Π΅Π·Π°ΠΊΠΎΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹), ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ git ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ ΡΠΌΠ΅Ρ€Π΄ΠΆΠΈΡ‚ΡŒ всю Π²Π°ΡˆΡƒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с этой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ. ΠŸΡ€ΠΈ этом ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π° Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ утСряна. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡƒΠ»Π» рСквСст сосСда), сдСлайтС ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий:

  1. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡ‚Π΅ всС Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Ρƒ вас локально Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

  2. Если ваш ΠΊΠΎΠ΄ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΈ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ "ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ", ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git stash. Π’ Π³ΠΈΡ‚Π΅ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ "ΠΊΠ°Ρ€ΠΌΠ°Π½", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ куски ΠΊΠΎΠ΄Π°. ПослС выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ всС ваши измСнСния локально исчСзнут, ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² этот ΠΊΠ°Ρ€ΠΌΠ°Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ откатится Π΄ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ смСло ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ. Когда Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° свою Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ снова ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ свои измСнСния, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git stash apply - это Π²Π΅Ρ€Π½Π΅Ρ‚ послСдниС измСнСния ΠΈΠ· ΠΊΠ°Ρ€ΠΌΠ°Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π²Π°ΡˆΡƒ Π²Π΅Ρ‚ΠΊΡƒ.

Last updated