Basic
HELP
$ git ๋ช
๋ น์ด --help
๋ช ๋ น์ด์ ๋ํ ์ค๋ช ์ ์์ธํ ๋ณผ ์ ์๋ค.
๊ธฐ๋ณธ์ค์
$ git config
git์ ๊ธฐ๋ณธ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋ค.
git config --global user.name "์ด๋ฆ"
git config --global user.email "์ด๋ฉ์ผ์ฃผ์"
๊ฐ๊ฐ์ ๋ฒ์ ์ ๋๊ฐ ๋ง๋ ๊ฒ์ธ์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผํ๋๋ฐ ์์ ๊ฐ์ด username๊ณผ email์ ์ค์ ํ ์ ์๋ค. (railsinstaller
์ค์น ํ ์ฒ์ ์
๋ ฅํ ์ ๋ณด!)
์๋ก์ด ์ ์ฅ์ ๋ง๋ค๊ธฐ
๋ชจ๋ ๊ฒ์ init์ผ๋ก ๋ถํฐ ์์๋๋ค.
$ git init
Initialized empty Git repository in /Users/dh0023/gittest/.git/
$ ls -al
total 0
drwxr-xr-x 3 dh0023 staff 102 3 23 17:08 .
drwxr-xr-x+ 34 dh0023 staff 1156 3 23 17:08 ..
drwxr-xr-x 10 dh0023 staff 340 3 23 17:08 .git
git init
์ ํ๋ฉด ํ์ฌ ๋๋ ํ ๋ฆฌ๊ฐ ๋ฒ์ ๊ด๋ฆฌ์ ์ ์ฅ์๊ฐ ๋์๋ค๋ ์๋ฏธ์ด๋ค.ls -al
์ ํ๋ฉด.git
directory(ํด๋)๊ฐ ์๊ธด ๊ฒ์ ๋ณผ ์ ์๋ค..git
ํด๋ ์์์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
์ํํ์ธํ๊ธฐ
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
test1.html
--------------------------
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test1.html
untracked files:์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์ง์๊ณ ์๋ ํ์ผ๋ก์ ์๋ก ์ถ๊ฐ, ์์ , ์ญ์ ์ฆ ๋ณ๊ฒฝ๋ ํ์ผ์ด๋ค. ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์ง์๊ณ ์๋ ํ์ผ,ํด๋๋ ๋ถ์์์ผ๋ก ํ์ ๋๋ค.
new file:์ ๋ฒ์ ๊ด๋ฆฌ์ ์๋ก ์ถ๊ฐ๋ ํ์ผ์ด๋ฉฐ, ์ด๋ก์์ผ๋ก ํ์๋๋ค.(
git add
๋ช ๋ น์ด๋ฅผ ํตํด ์ถ๊ฐ)
์ถ๊ฐ
$ git add ํ์ผ(ํด๋)๋ช
$ git add test1.html
$ git add .
๋ฒ์ ๊ด๋ฆฌ ๋ชฉ๋ก์ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ด๋ค.
git add .
์ ๋ณ๊ฒฝ๋ ๋ชจ๋ ์ฌํญ์ ์ถ๊ฐํ๋ค๋ ์๋ฏธadd
๋ช ๋ น์ด ํgit status
๋ฅผ ํด๋ณด๋ฉด changed to be Committed: ํ์ผ์ด ๋ฒ์ ๊ด๋ฆฌ ๋๊ณ ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
ํ์
$ git commit -m "first commit"
[master (root-commit) dc423a2] first commit
1 file changed, 1 insertion(+)
create mode 100644 test1.html
์ด๋๊น์ง ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ ํ๋ ๊ฒ์ด๋ค. ""
์์๋ ๋ฒ์ ์ ๋ํ ์ค๋ช
์ ๊ฐ๋จํ ์ ์ด์ค๋ค.
$ git commit --amend
[master c6ce442] first commit
Date: Thu Mar 23 17:28:55 2017 +0900
1 file changed, 1 insertion(+)
create mode 100644 test1.html
์ถ๊ฐ์ ์ธ ์ค๋ช ์ ์์ธํ๊ฒ ์ ์ ์ ์๋ค.

์๋ฒ์ ์ฌ๋ฆฌ๊ธฐ
ํ์ฌ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์์ง ๋ก์ปฌ ์ ์ฅ์์ HEAD ์์ ๋จธ๋ฌผ๊ณ ์๋ค. push๋ช ๋ น์ด ์ดํ์ ๋ณ๊ฒฝ๋ด์ฉ์ด ์๋ฒ์ ์ ์ฉ๋๋ค.
$ git push [๋ฆฌ๋ชจํธ ์ ์ฅ์ ์ด๋ฆ] [๋ธ๋์น ์ด๋ฆ]
master ๋ธ๋์น๋ฅผ origin ์๋ฒ์ ์ฌ๋ฆฌ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด๋๋ค.
$ git push origin master
์ ์ฅ์ ๋ฐ์์ค๊ธฐ
$ git clone /๋ก์ปฌ/์ ์ฅ์/๊ฒฝ๋ก
ํน์ ๋ธ๋์น๋ก ์ ์ฅ์๋ฅผ ๋ฐ์์ค๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ต์ ์ ์ฃผ๋ฉด ๋๋ค.
$ git clone -b {branch_name} --single-branch {repository_url}
์ทจ์
$ git reset [๋์๊ฐ ๋ฒ์ ]
$ git reset HEAD~1
Reset์ ์ ํํ ๋ฒ์ ์ ์ํ๋ก ๋์๊ฐ๋ ๊ฒ, ๋ฒ์ ์ ์ง์๋ฒ๋ฆผ

$ git revert [๋์๊ฐ ๋ฒ์ ]
$ git revert HEAD ~1
Revert๋ ์ ํํ ๋ฒ์ ์ ์ทจ์ํด์ ๊ทธ ์ด์ ์ํ๋ก ๋๋ฆฌ๋๊ฒ

revert
์ reverse
๋ฅผ ํ ๋๋ ํญ์ ์ฃผ์ํด์ผํ๋ค.
Branch ์์ฑํ๊ธฐ
branch๋ ์์ ํ๊ฒ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ.
$ git branch
*master
์ ์ฅ์๋ฅผ ์๋ก ๋ง๋ค๋ฉด master branch(default)๊ฐ ๊ธฐ๋ณธ์ด๋ค.
$ git branch <๋ธ๋์น๋ช
>
$ git branch exp
$ git branch
exp
*master
์คํ์ ์ธ ์์ ์ ํด์ผํ๋๊ฒฝ์ฐ๋ ํ์ ์ ํ ๋ ์ฌ์ฉ. exp branch๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. *๋ถ์ ๊ฒ์ด ํ์ฌ branch
์ด์ commit์ผ๋ก branch๋ฅผ ์์ฑ
$ git branch <๋ธ๋์น๋ช
> [ํน์ ๋ฒ์ ]
$ git branch example 9da3066404c68a4e7f77a7ddb69beb4d2475e2dd
ํด๋น commit์์ ๋ธ๋์น๊ฐ ์์ฑ๋๋ค.
git log์ ๋ํด ์์๋ณด๊ธฐ
ํ์ฌ Branch๋ณ๊ฒฝ
$ git checkout exp
*exp
master
ํ์ฌ branch๊ฐ *exp๋ก ๋ฐ๋๊ฒ์ ํ์ธ ํ ์ ์๋ค.
$ git checkout -t origin/exp
remote์ ์๋ branch๋ฅผ ๊ฐ์ ธ์ ๋ก์ปฌ์ ๋์ผํ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด์ ํด๋น branch๋ก checkoutํ๋ ์ต์ ์ด๋ค.
$ git branch
* exp
master
Branch ์์ฑ๊ณผ ๋์์ ๋ณ๊ฒฝํ๊ธฐ
$ git checkout -b <๋ธ๋์น๋ช
>
$ git checkout -b example1
$ git branch
*example1
master
๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(fetch)
fetch๋ ๋จ์ํ ์๊ฒฉ ์ ์ฅ์์ ๋ด์ฉ์ ํ์ธ๋ง ํ๊ณ ๋ก์ปฌ ๋ฐ์ดํฐ์ ๋ณํฉ์ ํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
$ git fetch [remote-name]
์ฆ, local์๋ ์์ง๋ง remote ์ ์ฅ์์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
Branch ๋ณํฉ
$ git merge <branch๋ช
>
branch๋ฅผ ์ด์ฉํด ๋ณํฉ์ ํ๋ฉด git์ด ์๋์ผ๋ก commit์ ํด์ค๋ค.
$ git branch
example1
* master
$ git merge example1
Merge --squash
๋ณํฉํ branch์ ๋ชจ๋ commit์ ํ๋๋ก ํฉ์น๊ณ ์ถ์๋ --squash
์ต์
์ ์ง์ ํ๋ฉด๋๋ค.
$ git merge --squash <branch๋ช
>
$ git merge --squash example1
๊ฐฑ์ (pull)
$ git pull
์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ ๋ด์ฉ์ด ๋ก์ปฌ ์์ ๋๋ ํ ๋ฆฌ์ ๋ฐ์์ง๊ณ (fetch), ๋ณํฉ(merge)๋๋ค.
์ถฉ๋(conflict)
๋ง์ฝ์ ์ฌ๋ฌ๊ฐ์ branch๊ฐ ์๋ก ๊ฐ์ ๊ฒ์ ์์ ํ ๊ฒฝ์ฐ์ ๊น์ ์ถฉ๋์ ๋ํ๋ด๊ณ ์ฐ๋ฆฌ๊ฐ ์์ ํ ์ ์๋๋ก ํ์ํด์ค๋ค.
ํ์
์ด๋ ํ ์์
์ ํ๊ธฐ์ ์ pull์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋ค! pull
->working->commit
->pull
->push
stash
์์ง commitํ์ง ์์ ๋ฒ์ ์ ์์๋ก ์ ์ฅํ๋ ๊ฒ! stash๋ฅผ ํ๋ฉด ์์๋ก ์ ์ฅ๋ ํ ๋ง์ง๋ง ๋ฒ์ ์ํ๋ก ๋์๊ฐ๊ณ ์ญ์ ๋๋ค.
tag(github์์ releases)
์ค๋ช ํด์ฃผ๋ ๊ฒ! ๊ณผ๊ฑฐ์ ํน์ ํ ๋ฒ์ ์ ๋ํด์๋ ํ๊ทธ๋ฅผ ๋ถ์ผ ์ ์๋ค.
ignore
.gitignore
ํ์ผ์ ํ์ผ์ ์ถ๊ฐํ๋ฉด git์ด ์๋๊ฑธ๋ก ๊ฐ์ฃผํ ๋์์ด ๋๋ค.(github์ ์ฌ๋ฆด๋๋ ์์ฌ๋ผ๊ฐ!) ignore์ ํฌํจ๋์ด์ผํ ๋ชฉ๋ก
์ด ๋ ์ค์ํ id, ๋น๋ฐ๋ฒํธ, key๊ฐ์ด ์ค์ ๋ ํ์ผ์ ๋ฐ๋ก ์ ์ฅํ ํ .gitignore
์ ์ถ๊ฐํด ์๊ฒฉ์ ์ฅ์์ ์ฌ๋ฆฌ์ง ์๋๋ค.
์ฐธ๊ณ
Last updated
Was this helpful?