All Projects โ†’ KennethanCeyer โ†’ Tutorial Git

KennethanCeyer / Tutorial Git

Licence: bsd-3-clause
๐Ÿ“˜ ์–ด๋–ป๊ฒŒ ๊นƒ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค. (Quick learn How to use Git.)

Projects that are alternatives of or similar to Tutorial Git

Java8 Tutorial
Modern Java - A Guide to Java 8
Stars: โœญ 15,276 (+8025.53%)
Mutual labels:  tutorial, learning, guide
Golang For Nodejs Developers
Examples of Golang compared to Node.js for learning
Stars: โœญ 2,698 (+1335.11%)
Mutual labels:  tutorial, learning, guide
Haskell Study Plan
An opinionated list of resources for learning Haskell
Stars: โœญ 493 (+162.23%)
Mutual labels:  tutorial, learning, guide
Digital video introduction
A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding).
Stars: โœญ 12,184 (+6380.85%)
Mutual labels:  tutorial, learning, guide
Core
D Language online tour (https://tour.dlang.org/) and online editor (https://run.dlang.io/)
Stars: โœญ 89 (-52.66%)
Mutual labels:  tutorial, learning, guide
Cpp Quick Reference
C++ Quick Reference
Stars: โœญ 144 (-23.4%)
Mutual labels:  tutorial, guide
Howto co34pt livecode
A repository of readmes, techniques, notes and other materials about how i live code in SuperCollider. A (sorta) companion repository to co34pt_livecode
Stars: โœญ 149 (-20.74%)
Mutual labels:  tutorial, learning
Rakuguide
The Raku Guide
Stars: โœญ 155 (-17.55%)
Mutual labels:  tutorial, guide
Java Telegram Bot Tutorial
Java Telegram Bot Tutorial. Feel free to submit issue if you found a mistake.
Stars: โœญ 165 (-12.23%)
Mutual labels:  tutorial, guide
Tinyrenderer
A brief computer graphics / rendering course
Stars: โœญ 11,776 (+6163.83%)
Mutual labels:  tutorial, learning
Pharo Wiki
Wiki related to the Pharo programming language and environment.
Stars: โœญ 161 (-14.36%)
Mutual labels:  tutorial, guide
Glsltuto
GLSL shaders tutorial
Stars: โœญ 168 (-10.64%)
Mutual labels:  tutorial, learning
Learn Javascript
Learn Plain JavaScript from Top Articles of 2017
Stars: โœญ 142 (-24.47%)
Mutual labels:  tutorial, learning
Short Gitlab Tutorial
Get started with Gitlab in practicable time
Stars: โœญ 127 (-32.45%)
Mutual labels:  tutorial, guide
Tinykaboom
A brief computer graphics / rendering course
Stars: โœญ 2,077 (+1004.79%)
Mutual labels:  tutorial, learning
An Idiots Guide To Installing Arch On A Lenovo Carbon X1 Gen 6
so you wanted to install arch huh
Stars: โœญ 165 (-12.23%)
Mutual labels:  tutorial, guide
Cehv10 Notes
๐Ÿ“• Both personal and public notes for EC-Council's CEHv10 312-50, because its thousands of pages/slides of boredom, and a braindump to many
Stars: โœญ 170 (-9.57%)
Mutual labels:  tutorial, guide
Docker Workshop
Docker workshop
Stars: โœญ 174 (-7.45%)
Mutual labels:  learning, guide
Startwordpress
Learn how to develop a WordPress theme from scratch with this basic skeleton and accompanying tutorial.
Stars: โœญ 187 (-0.53%)
Mutual labels:  tutorial, learning
Webhub
๐Ÿ“ฆๅ‰็ซฏ่ต„ๆบ/ๅญฆไน /้—ฎ้ข˜ๆ•ด็†ไธญๅฟƒ๏ผŒ่ฏท็œ‹issue
Stars: โœญ 112 (-40.43%)
Mutual labels:  tutorial, learning

์–ด๋–ป๊ฒŒ ๊นƒ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค

Quick learn How to use the Git

๊ฐ€์ด๋“œ ํŽ˜์ด์ง€์—์„œ ๋ณด๊ธฐ

๐Ÿ˜‡ ๋ฐ”์˜์ž–์•„์š” ๋‹ค๋“ค

  • ์ฝ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์˜ˆ์ƒ์‹œ๊ฐ„ 15๋ถ„
  • ๋‹ค ์™ธ์šฐ๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ˜๋ณต ํ•™์Šต์ด ํ•„์š”ํ•œ ํšŸ์ˆ˜ 3๋ฒˆ

๐Ÿ˜ณ ๋ˆ„๊ฐ€ ์ฝ์–ด์•ผ ํ• ๊นŒ์š”

  • ๊ฐœ๋ฐœ ํšŒ์‚ฌ์— ์ผํ•˜๋Š” Git์„ ๋ชจ๋ฅด์‹œ๋Š” ๊ฐœ๋ฐœ์ž.
  • Git์„ ๋„์ž…ํ• ์ง€ ๋ง์„ค์ด์‹œ๋Š” ๊ด€๋ฆฌ์ž, ๋‹ด๋‹น์ž.
  • 2๋ช…์ด์ƒ์˜ ํ˜‘์—…์„ ํ•˜๋Š” ์Šคํƒ€ํŠธ์—… ๋‹ด๋‹น์ž, ์ธ๋”” ๊ฐœ๋ฐœ์ž๋Š” ๋„์ž…์„ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š”.

๐Ÿ‘ ์‹œ์ž‘ํ•˜๋ฉฐ

๊นƒ์„ ์™œ ์‚ฌ์šฉํ•˜์ฃ ?

  • ๋น ๋ฅธ ํ˜‘์—…ํ™˜๊ฒฝ ์กฐ์„ฑ

  • ๋ˆ„๊ฐ€, ์–ธ์ œ, ๋ฌด์—‡์„, ์™œ, ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ์ฝ”๋“œ๋ฆฌ๋ทฐ๊ฐ€ ๊ฐ€๋Šฅ.

  • ์ด์ŠˆํŠธ๋ž˜์ปค (Issue Tracker) ์ง€์›.

  • ๊นƒํ—™ (GitHub)์„ ์ด์šฉํ•˜์—ฌ ์ž์‹ ์˜ git์„ ์‰ฝ๊ฒŒ ๊ณต์œ  ๊ฐ€๋Šฅ.

  • ์ง€์†์ ์ธ ํ†ตํ•ฉ (Continuous Integration) ์ง€์›.

  • Visual Studio, Jetbrains IntelliJ, Android Studio ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ IDE์—์„œ git ์—ฐ๋™ ์ œ๊ณต.

  • ์š”์•ฝ: ํ˜‘์—…์„ ์œ„ํ•ด์„œ, ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ, ๋‘๋ช… ์ด์ƒ์ด ๋˜‘๋˜‘ํ•˜๊ฒŒ ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๊ฐœ๋ฐœํ•œ ์†Œ์Šค๋“ค์„ ํ•ฉ์น˜์„ธ์š”!

๋„๋Œ€์ฒด ๊นƒํ—™(GitHub)์ด ๋ญ์•ผ!?

  • ๋””์ž์ด๋„ˆ์—๊ฒŒ๋Š” Dribbble, ๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ์—๊ฒŒ๋Š” Kaggle์ด ์žˆ๋“ฏ์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๊นƒํ—™ (Github)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ๋ถ„์ด ํ‡ด๊ทผ๊ธธ์— ํŽ˜์ด์Šค๋ถ์œผ๋กœ ๊ธ€์„ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ์ข‹์•„์š” ํ•˜๋“ฏ์ด ๊ฐœ๋ฐœ์ž๋“ค์€ ๊นƒํ—™์œผ๋กœ ์Šคํƒ€(star)๋ฅผ ๋‚ ๋ฆฝ๋‹ˆ๋‹ค.
  • ์ง„์งœ ํ‡ด๊ทผ๊ธธ์— ๊นƒํ—™ ๋“ค์–ด๊ฐ€๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ๐Ÿ˜ฑ
  • ๊นƒํ—™(Github)๋ž‘ ๊นƒ(Git)์€ ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊นƒํ—™์ด ๊นƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜จ๋ผ์ธ์œผ๋กœ ์„œ๋น„์Šคํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
  • ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ Microsoftยฎ Office๋ฅผ Office 365๋กœ ์„œ๋น„์Šคํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค ์ƒ๊ฐํ•ด์ฃผ์„ธ์š”.

๊นƒ์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”๊ฑด๊ฐ€์š”?

  • ์†Œ์Šค ๋ณ‘ํ•ฉ (merge, rebase)
  • ์†Œ์Šค ๋ฆฌ๋น„์ „ ๊ด€๋ฆฌ (reset, commit, branch)
  • ์†Œ์Šค ๋ฆด๋ฆฌ์ฆˆ (push)
  • ์†Œ์Šค ํƒœ๊น… (tag)
  • ์†Œ์Šค ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฒ€ํ†  (diff, log)

๊นƒ์€ ์–ด๋””์—์„œ ์ง€์›ํ•˜๋‚˜์š”?

  • ์œˆ๋„์šฐ์ฆˆ (Windows)
  • ๋งฅ (OS X)
  • ๋ฆฌ๋ˆ…์Šค (Ubuntu, CentOS, Redhat, Debian, etc)
  • ์œ ๋‹‰์Šค (FreeBSD, Solaris, etc)

๐Ÿ”ง ์„ค์ •

  • ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด git์˜ config ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • git config ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ„์ •์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
$ git config --global user.name "Kenneth"
$ git config --global user.email "[email protected]"
  • ๊นƒ์€ ์ดˆ๊ธฐ์— git init ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค
  • ํ˜น์—ฌ๋‚˜ GitHub์—์„œ ํด๋ก ์„ ๋ฐ›์€๊ฒฝ์šฐ ์ด ์ž‘์—…์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.
$ git init
  • git init์„ ํ•˜์…จ์œผ๋ฉด git ๋ฆฌ๋ชจํŠธ๋ฅผ ์„ค์ •ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • git ๋ฆฌ๋ชจํŠธ๋ž€ git์„ ์›๊ฒฉ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ์•ค๋“œํฌ์ธํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
$ git remote add origin https://github.com/KennethanCeyer/tutorial.git
  • git ๋ฆฌ๋ชจํŠธ URL์„ ์ด์šฉํ•˜์—ฌ ์›๊ฒฉ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ๋กœ ๋ณต์‚ฌํ•ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋•Œ git clone ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
$ git clone https://github.com/KennethanCeyer/tutorial.git
  • git clone์„ ํ†ตํ•ด ์›๊ฒฉํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์˜ค๋ฉด, origin ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ก ํ•ด์˜จ ๋ฆฌ๋ชจํŠธ URL์ด ์ €์žฅ๋˜์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”’ SSH

  • git ์—ฐ๊ฒฐ์„ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SSH Key ๋“ฑ๋ก์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฌธ์„œ๋กœ SSH ์ƒ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ฑฐ๋‚˜ ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์šฐ์„  ssh-keygen ๋ช…๋ น์–ด๋กœ SSH Key๋ฅผ ์ƒ์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Refer SSH

  • SSH Key๋ฅผ ์ƒ์„ฑํ•˜์…จ์œผ๋ฉด ~/[์‚ฌ์šฉ์ž ํด๋”]/.ssh/ ์— ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Refer folder ssh

  • ์ƒ์„ฑํ•œ ํ‚ค ์ค‘ id_rsa.pub๋Š” GitHub์— ๋“ฑ๋กํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • GitHub ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ ‘์†ํ•˜์…”์„œ ๋กœ๊ทธ์ธ์„ ํ•ด์ฃผ์„ธ์š”.
  • Profile ์ค‘ Settings ๋ฉ”๋‰ด๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š” (์•„๋ž˜ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.)

Refer Setting

  • Settings ํ™”๋ฉด ์ค‘ ์šฐ์ธก ์‚ฌ์ด๋“œ๋ฉ”๋‰ด์—์„œ SSH and GPG keys๋ฅผ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.

Refer SSH Keys

  • SSH Keys ํ™”๋ฉด์—์„œ New SSH key ๋ฒ„ํŠผ์„ ์ฐพ์•„ ํด๋ฆญ ํ•ด์ฃผ์„ธ์š”.

Refer New SSH key

  • ์ž…๋ ฅ ํ™”๋ฉด์— ์•„๊นŒ์ „์˜ id_rsa.pub์˜ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Refer SSH contents

Q. SSH ์„ค์ •์„ ํ•ด๋„ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌผ์–ด๋ด์š”!

์ ‘์† ์ •๋ณด์—์„œ Use SSH๋ฅผ ํด๋ฆญํ•ด SSH ์ ‘์† ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

SSH connection string

์ด๋•Œ, git remote set-url ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด์˜ ์›๊ฒฉ์ง€ ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SSH remote set-url

# ํ˜น์‹œ HTTPS ์ฃผ์†Œ๋ฅผ Remote URL๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ฒดํฌํ•ด์ฃผ์„ธ์š”.
# Remote URL์€ ssh ํฌ๋งท์„ ์‚ฌ์šฉํ•ด์ฃผ์…”์•ผ ssh ์ธ์ฆ์„ ํ†ตํ•ด ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์„ ๋„˜์–ด๊ฐ€์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   
# origin์˜ Remote URL ๋ณ€๊ฒฝ๋ฐฉ๋ฒ•.
$ git remote set-url origin [email protected]:KennethanCeyer/tutorial-git.git
   
# origin์˜ Remote URL์ด ์ œ๋Œ€๋กœ ๋ณ€๊ฒฝ๋ฌ๋Š”์ง€ ์ฒดํฌํ•ด์ฃผ์„ธ์š”.
$ git remote show origin

๐Ÿ“ƒ ์†Œ์Šค ๊ธฐ๋ก

  • ์†Œ์Šค๋ฅผ ์—…๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” git add ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ˜ํ”Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”
$ git add .
  • ignore ํŒŒ์ผ์ด๋‚˜, ์‚ญ์ œํ•œ ํŒŒ์ผ ์ด๋ ฅ๊นŒ์ง€ ์ปค๋ฐ‹์„ ํ•˜์‹ค ๊ฒฝ์šฐ, -f ์˜ต์…˜์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
$ git add . -f
  • git remote show origin์„ ํ†ตํ•ด origin์— ๋ฆฌ๋ชจํŠธ ์ฃผ์†Œ๊ฐ€ ์ž˜ ๋“ฑ๋ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์„ธ์š”.

Remote show origin

โœ๏ธ ์†Œ์Šค ์ปค๋ฐ‹

  • ์†Œ์Šค๋ฅผ ์ปค๋ฐ‹ํ•˜์‹œ๋ฉด staged ์ƒํƒœ์˜ ํŒŒ์ผ์ด ํžˆ์Šคํ† ๋ฆฌ๋กœ ๊ธฐ๋ก๋˜๊ณ  ์ ์žฌ๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ถ”์ ์ƒํƒœ์˜ ๊ฒฝ์šฐ git status ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
$ git status
  • git add ์ดํ›„ git status๋ฅผ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

Git add files

  • Staged ์ƒํƒœ์˜ ํŒŒ์ผ์€ ์•„์ง ๊ธฐ๋ก๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ํŒŒ์ผ์˜ ๊ธฐ๋ก์„ ์œ„ํ•ด์„œ๋Š” ์ปค๋ฐ‹ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • git commit ๋ช…๋ น์„ ํ†ตํ•ด Staged ์ƒํƒœ์˜ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git commit

  • -m ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์ˆ˜๋กœ ์ปค๋ฐ‹์„ ํ•˜์—ฌ, ๋‹ค์‹œ ์ปค๋ฐ‹์„ ํ•  ๊ฒฝ์šฐ ์ปค๋ฐ‹์„ ๋ฎ์–ด์”Œ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ --amend ์˜ต์…˜์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
$ git add *
$ git commit -m "UI ๋ ˆ์ด์•„์›ƒ ์ด์Šˆ ์ˆ˜์ •."

# ์ˆ˜์ •์‚ฌํ•ญ ๋ฐœ์ƒ
$ git add *
$ git commit -m "UI ๋ ˆ์ด์•„์›ƒ ์ด์Šˆ ์ˆ˜์ • ๋ฐ ๊ด€๋ฆฌ์ž ๋ฒจ๋ฆฌ๋ฐ์ด์…˜ ์ถ”๊ฐ€." --amend

๐ŸŽ‰ ์†Œ์Šค ์—…๋ฐ์ดํŠธ

  • ์ƒ๋Œ€๋ฐฉ์ด ์ปค๋ฐ‹ํ•œ ํŒŒ์ผ์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ์ง์ ‘ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์…”์•ผ ๋™๊ธฐํ™”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋Š” git pull๊ณผ git fetch๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
# master ๋ธŒ๋žœ์น˜๋ฅผ pullํ•˜์—ฌ ์—…๋ฐ์ดํŠธ
$ git pull origin master
  
# master ๋ธŒ๋žœ์น˜๋ฅผ fetchํ•˜์—ฌ ์—…๋ฐ์ดํŠธ
$ git fetch origin master
  • pull ๊ณผ fetch ์˜ ์ฐจ์ด์ ์€ merge ์ž‘์—…์„ ํ•˜๋Š๋ƒ ์•ˆํ•˜๋Š๋ƒ๋กœ ๋‚˜๋‰˜์–ด์ง€๋ฉฐ.
  • pull ์€ fetch + merge ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ•š ์†Œ์Šค ๋ณต์›

  • ์—ฌ๋Ÿฌ๋ถ„์ด git์„ ์“ฐ๋Š” ์ด์œ ์ค‘์— ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.
  • ์ •์ƒ์ ์œผ๋กœ ์ปค๋ฐ‹๋œ ํžˆ์Šคํ† ๋ฆฌ๋Š”, ๋ฆฌ๋น„์ „์œผ๋กœ git์— ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ์‹ค์ˆ˜๋กœ ์ž˜๋ชป ์ž‘์—…ํ•˜์˜€๊ฑฐ๋‚˜, ์˜ˆ์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜์—ฌ ์ ์šฉํ•  ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ๋ถ„์€ ์˜ˆ์ „ ๋ฒ„์ „์œผ๋กœ ๋ฆฌ์…‹ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ์…‹์€ git reset ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
$ git reset HEAD^ --soft
  • git reset ๋‹ค์Œ ์ธ์ˆ˜๋กœ๋Š” ๋˜๋Œ๋ฆฌ๋Š” ๋ฒ„์ „์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ์œ„์น˜(HEAD)๋ฅผ ๊ธฐ์ค€ํ•˜์—ฌ ์ƒ๋Œ€์ ์ธ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ํŠน์ • ๋ฒ„์ „ ๋ฆฌ๋น„์ „ ๊ณ ์œ ์˜ ํ•ด์‹œ๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • HEAD๋ฅผ ํ™•์ธํ•˜์‹œ๊ณ  ์‹ถ์œผ๋ฉด git reflog ๋ช…๋ น์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

  • git reset์˜ ์˜ต์…˜ ์ค‘ ๋ฆฌ์…‹ ํŠน์„ฑ์„ ์ •ํ•˜๋Š” --soft, --hard, --mixed ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์œ„ ์˜ต์…˜์€ ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • --soft๋Š” ์•ฝํ•œํŠน์„ฑ์˜ ๋ฆฌ์…‹์ž…๋‹ˆ๋‹ค, ๋˜๋Œ๋ฆด ๋•Œ ๊ธฐ์กด์˜ ์ธ๋ฑ์Šค์™€ ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค.

  • --hard๋Š” ๊ฐ•ํ•œํŠน์„ฑ์˜ ๋ฆฌ์…‹์ž…๋‹ˆ๋‹ค, ๋˜๋Œ๋ฆด ๋•Œ ๊ธฐ์กด์˜ ์ธ๋ฑ์Šค์™€ ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

  • --mixed๋Š” ์ค‘๊ฐ„ํŠน์„ฑ์˜ ๋ฆฌ์…‹์ž…๋‹ˆ๋‹ค, ๋˜๋Œ๋ฆด ๋•Œ ๊ธฐ์กด์˜ ์ธ๋ฑ์Šค๋Š” ๋ฒ„๋ฆฌ๊ณ  ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค.

  • ๋˜๋Œ๋ฆฌ๋Š” ์œ„์น˜์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ํƒ€์ž…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

# ๋ฐ”๋กœ ์ด์ „ ๋‹จ๊ณ„๋กœ ์ธ๋ฑ์Šค์™€ ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋ฆฌ์…‹.
$ git reset HEAD^ --hard 
    
# ๋ฐ”๋กœ ๋‘๋ฒˆ์งธ ์ „ ๋‹จ๊ณ„๋กœ ์ธ๋ฑ์Šค์™€ ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋ฆฌ์…‹.
$ git reset HEAD~2 --hard 
    
# ํŠน์ • ๋ฆฌ๋น„์ „์˜ ๊ธฐ๋ก์œผ๋กœ ์ธ๋ฑ์Šค๋Š” ๋ฒ„๋ฆฌ๊ณ  ์›Œํ‚นํŠธ๋ฆฌ๋ฅผ ๋ณด์กดํ•˜์—ฌ ๋ฆฌ์…‹.
$ git reset 991ee8c --mixed

๐ŸŒฑ ๋ธŒ๋žœ์น˜

  • ๋ธŒ๋žœ์น˜๋Š” ํ•œ๊ตญ๋ง๋กœ ๊ฐ€์ง€(branch)์ž…๋‹ˆ๋‹ค.
  • git์—์„œ๋Š” ๋งˆ์น˜ ๊ฐ€์ง€๋ฅผ ํŽผ์น˜๋“ฏ ํ•˜๋‚˜์˜ ๊ทผ๋ณธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜๋กœ ์ชผ๊ฐœ์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git branch ์ด๋ฏธ์ง€ ์ถœ์ฒ˜ StackOverflow

  • branch์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์€ master ๋ธŒ๋žœ์น˜๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ํ•„์ˆ˜๋กœ ์ œ๊ณต๋˜๋Š” ๋ธŒ๋žœ์น˜์ด๋‹ค.

  • ์„œ๋กœ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋“ค์€ ๊ฐ™์€ ์กฐ์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ์‹ ๋‹ค๋ฉด git branch [๋ธŒ๋žœ์น˜๋ช…]์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์•„๋ž˜ ๋ช…๋ น๋ผ์ธ์—์„œ๋Š” new๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

$ git branch new
  • master ๊ธฐ์ค€์œผ๋กœ new๋ฅผ ๋ธŒ๋žœ์น˜(๊ฐ€์ง€์น˜๊ธฐ)ํ•˜๋ฉด master์™€ ๋˜‘๊ฐ™์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ new์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ์ด ์ดํ›„๋กœ new์—์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด, master์™€ new๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐˆ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์ƒ์„ฑ๋œ new ๋ธŒ๋žœ์น˜๋กœ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” git checkout [๋ธŒ๋žœ์น˜๋ช…]์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

$ git checkout new
  • ์ƒ์„ฑ๊ณผ์ •๊ณผ ๋ธŒ๋žœ์น˜ ์ด๋™๊ณผ์ •์„ ๋™์‹œ์— ํ•˜๊ณ ์ž ํ•˜๋ฉด git checkout์— -b ์˜ต์…˜์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
# ๋ธŒ๋žœ์น˜ new๋ฅผ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ฒดํฌ์•„์›ƒ.
$ git checkout -b new
  • ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋Š” ํ˜„์žฌ ๋กœ์ปฌ์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜‘์—… ์ž‘์—…์—์„œ๋Š” ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ๋Š” git push [๋ธŒ๋žœ์น˜๋ช…]์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
$ git push origin new
  • ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก์˜ ๊ณผ์ •์€ ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Git new branch

  • ๋ธŒ๋žœ์น˜์˜ ์‚ญ์ œ๋Š” git branch ๋ช…๋ น์—์„œ -d ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Git delete branch

  • ์‚ญ์ œ๋œ ๋ธŒ๋žœ์น˜ ๋˜ํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ ๋ธŒ๋žœ์น˜ ๋ช… ์•ž์— ์ฝœ๋ก (:)์„ ๋ถ™์—ฌ์ฃผ์–ด์•ผ ํ•˜๋‹ˆ ์ด ์  ์ฃผ์˜ํ•ด์ฃผ์„ธ์š”.

๐Ÿ˜จ ์†Œ์Šค ๋ณ‘ํ•ฉ

  • ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋จธ์ง€์™€ ๋ฆฌ๋ฒ ์ด์Šค ๋“ฑ์˜ ๋ณ‘ํ•ฉ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ์‹ค์ œ ๋ฐฐํฌ์—์„œ ์ด๋ฅผ ํ•ฉ์ณ์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘ํ•ฉ ๋ฐฉ์‹์—์„œ๋Š” ํฌ๊ฒŒ git merge์™€ git rebase๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋จธ์ง€ ๋ฐฉ์‹๊ณผ ๋ฆฌ๋ฒ ์ด์Šค ๋ฐฉ์‹์˜ ์ฐจ์ด๋Š” ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

Difference between merge and rebase

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ http://git.mikeward.org/

  • ์•„๋ž˜๋Š” ๋จธ์ง€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ตฌํ˜„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.
  • master์—์„œ sub branch๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, master ๋ธŒ๋žœ์น˜์—์„œ sub ๋ธŒ๋žœ์น˜๋ฅผ ๋จธ์ง€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
* master -> some_file.txt์˜ ๋‚ด์šฉ
* 1๋ฒˆ์งธ ๋‹จ๊ณ„ HEAD
I'm a file.
* sub -> some_file.txt์˜ ๋‚ด์šฉ
* 2๋ฒˆ์งธ ๋‹จ๊ณ„ HEAD (์ตœ์‹ )
I'm a file.
    
Inserted new line from the sub branch.
$ git checkout -f master
$ git merge sub
# ํ˜„์žฌ ๋ธŒ๋žœ์น˜ master, ๋Œ€์ƒ ๋ธŒ๋žœ์น˜ sub.
# master์—์„œ sub๋ฅผ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.
# HEAD -> master
# sub  -> sub
  • ๋จธ์ง€ ์ดํ›„ master์—์„œ ํŒŒ์ผ์„ ๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ์–ป์Šต๋‹ˆ๋‹ค.
* merge ์ดํ›„ master -> some_file.txt
I'm a file.
    
Inserted new line from the sub branch.

๐Ÿ˜ญ ์ถฉ๋Œ๊ณผ ํ•ด๊ฒฐ

  • git์œผ๋กœ merge, rebase ์ˆ˜ํ–‰์‹œ ์ถฉ๋Œ(conflict)๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Š” ๊ฐ™์€ ์กฐ์ƒ์„ ๊ธฐ์ค€์œผ๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ™์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
* master -> some_file.txt์˜ ๋‚ด์šฉ
Apple
  • ์œ„๋Š” master ๋ธŒ๋žœ์น˜์˜ some_file.txt์˜ ๋‚ด์šฉ์ด๋‹ค.
  • ์•„๋ž˜๋Š” ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ๋ณต์ œํ•œ sub ๋ธŒ๋žœ์น˜์ด๋ฉฐ, ๋ณต์ œ ์ดํ›„ ํ•œ๋ฒˆ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
* sub -> some_file.txt์˜ ๋‚ด์šฉ
* 2๋ฒˆ์งธ ๋‹จ๊ณ„ HEAD
Banana
  • ์ดํ›„ master์—์„œ๋„ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.
* master -> some_file.txt์˜ ๋‚ด์šฉ
* 2๋ฒˆ์งธ ๋‹จ๊ณ„ HEAD(sub๋ž‘ ๋‹จ๊ณ„๊ฐ€ ๊ฒน์นจ)
Strawberry
  • ๋‘˜ ๋ชจ๋‘ ๋ฒ„์ „์ด ๊ฐ™์œผ๋‚˜ ๊ฐ™์€ ๋ผ์ธ์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ฒฝ์šฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ some_file.txt๋ฅผ ์—ด์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
* ๋จธ์ง€ ์ดํ›„ master -> some_file.txt (์ถฉ๋Œ)
<<<<<<< HEAD
Strawberry
=======
Banana
>>>>>>> sub
  • ์—ฌ๊ธฐ์„œ HEAD๋Š” ํ˜„์žฌ ๋ธŒ๋žœ์น˜(master)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • HEAD์™€ sub์˜ ๊ฐ๊ฐ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š”๋ฐ ๊บฝ์‡ (<, >), ์ดํ€„(=)๊ธฐํ˜ธ๊ฐ€ ์—†๋„๋ก ๋ฌธ์žฅ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ๋ฐ˜์˜ํ•ด์ฃผ์–ด์•ผ
  • ์ถฉ๋Œ์ด ํ•ด๊ฒฐ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๊ธฐ์„œ๋Š” master ๋ธŒ๋žœ์น˜์˜ Strawberry๋ฅผ ์„ ํƒํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
* ๋จธ์ง€ ์ดํ›„ master -> some_file.txt (์ˆ˜์ •)
Strawberry
  • ์ˆ˜์ •์ด ๋˜์—ˆ๋‹ค๋ฉด ๋จธ์ง€ ํ•ด๊ฒฐ์„ ์œ„ํ•ด git add์™€ git commit์œผ๋กœ ์ถฉ๋Œ(conflict)์„ ํ•ด๊ฒฐํ•˜์„ธ์š”.
$ git add *
$ git commit -m "Solved the conflict issue."

๐Ÿ” ๋ผ์ด์„ผ์Šค

cc license

์ด ๊ฐ€์ด๋“œ๋Š” Creative Commons Attribution 4.0 (CCL 4.0)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].