
โ ๏ธ ๋ฌธ์
git push origin main ๋ช ๋ น์ด๋ก ์๊ฒฉ์ ์ฅ์์ ํธ์ํ๋ฉด java ํด๋์ค ํ์ผ์ด ์ฌ๋ผ์ง๋ ๋ฌธ์
๊ธฐ์กด์ ์๋ `/StudyAlgorithm/StudyAlgorithm/src/` ์ดํ `algo03` ํจํค์ง์ craneGame.java๋ decimalTobinary.java ํด๋์ค๋ค์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ git add. ์ git commit -m "Study stack" ๊น์ง ์ํ ํ์ ๋๋ ํ์ผ ๋ชฉ๋ก์ ์ ๋ ํด๋์ค๊ฐ ๊ฐ์ง๋์๋ค.


ํ์ง๋ง git push origin main ๋ช
๋ น์ด๋ก ์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํ๊ณ ๋์ ๊นํ๋ธ์์ ํ์ธํด๋ณด๋ ์๋ก ์ถ๊ฐํ ๋ ๊ฐ์ ํด๋์ค ํ์ผ์ ์ฌ๋ผ๊ฐ์ง ์์ ๊ฒ์ผ๋ก ํ์ธ์ด ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ src/ ์ดํ๋ฅผ ๋ถ๋ฌ์ ์ปค๋ฐ ํ ํธ์ํ์์ผ๋ nothing to commit, working tree clean, Everything up-to-date ๋ก ํ์ธ๋จ (์๊ฒฉ ์ ์ฅ์๊ฐ ์ด๋ฏธ ์ต์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํจ)

๊ทธ๋์ ์๋์ผ๋ก src ์ดํ์ ํ์ผ๋ช
์ ์
๋ ฅํด์ add ํ๋ ค๊ณ ํ์ผ๋, bash์์ ํด๋น ํ์ผ์ด ์กด์ฌํ์ง ์๋๋ค.
ํ์ผ์ ํธ์ํ๋ ๊ณผ์ ์์ ํ์ผ์ด ์ฌ๋ผ์ง ๊ฒ์ผ๋ก ์ถ์ ๋จ

๐ง ์์ธ
git status๋ฅผ ๋ณด๋ฉด src/algo03/StackAndQueue/craneGame.java์ decimalToBinary.java๊ฐ ์ถ์ ๋์ง ์๋ ์ํ์๊ณ , ์ดํ ls -R src๋ก ํ์ธํ์ ๋ ํด๋น ํ์ผ๋ค์ด ์กด์ฌํ์ง ์์. ์ฆ, ํ์ผ์ด ์ญ์ ๋์๊ฑฐ๋ ๋ค๋ฅธ ์์น๋ก ์ด๋๋์์ ๊ฐ๋ฅ์ฑ์ด ์์
์๋์ ๋ช
๋ น์ด๋ก .gitignore ์ค์ ํ์ธ์ด ํ์ํ๋ค.
cat .gitignore
โ
.gitignore์ .java๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด git add๊ฐ ์๋ํ์ง ์๋๋ค.
โ
๋ ์์ ํด๋๋ฅผ git ignore์ ํฌํจํ ๊ฒฝ์ฐ ์๋ํ์ง ์๋๋ค.

โก ํด๊ฒฐ๋ฒ
ํ์์ ๊ฒฝ์ฐ ์์ ํด๋์ธ "StudyAlgorithm/"์ด ๋ค์ด๊ฐ ์๋ ๋ฌธ์ ์๋ค.
nano ํ
์คํธ ์๋ํฐ๋ก .gitignore ํ์ผ์ ์์ ํ ์ ์ฅ ํ ๋ค ๋ค์ git add ๋ฅผ ํด ์ฃผ๋ ํด๊ฒฐ๋จ
.metadata/ ๋๋ ํฐ๋ฆฌ๋ง ๊น ์ถ์ ๋์์์ ์ ์ธํ๊ณ src/๋ ํฌํจํ๋ ๊ฒ์ผ๋ก ์์ ํด ์ค
.metadata/
!src/
nano ํ ์คํธ ์๋ํฐ ์ฌ์ฉ๋ฒ
nano .gitignore # ๋๋ ์ํ๋ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์ด๊ธฐ
- ์์ ์ด ๋๋๋ฉด Ctrl + O ๋ฅผ ๋๋ฌ ์ ์ฅํ๊ธฐ
- File Name to Write: ๋ฉ์์ง๊ฐ ๋์ค๋ฉด, ๊ทธ๋ฅ Enter ํค๋ฅผ ๋๋ฌ ํ์ฌ ํ์ผ ์ด๋ฆ์ผ๋ก ์ ์ฅ
- ์ ์ฅ์ด ์๋ฃ๋๋ฉด, Ctrl + X ๋ฅผ ๋๋ฌ nano๋ฅผ ์ข ๋ฃ
๐ฆ ๋ฌธ์ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์ด ๋ช ๋ น์ด ์ ๋ฆฌ
โ๏ธ git add ๋ค์ ์๋
git add src/algo03/StackAndQueue/craneGame.java
git add src/algo03/StackAndQueue/decimalToBinary.java
git commit -m "Restore missing files"
git push origin main
โ๏ธ ์ธ์ ์๋๋ฉด ๊ฐ์ ์ถ๊ฐ -f ์ต์
git add -f src/algo03/StackAndQueue/craneGame.java
git add -f src/algo03/StackAndQueue/decimalToBinary.java
git commit -m "Force add missing files"
git push origin main
โ๏ธ git status๋ ํ์ฌ Git ์ ์ฅ์์ ์ํ๋ฅผ ํ์ธํ๋ ๋ช
๋ น์ด
- ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ์ Git์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
- ์์ ์ค์ธ ํ์ผ์ ์ถ์ ํ๊ณ , ์คํ ์ด์ง ์ํ๋ฅผ ํ์ธํ๊ณ , ์ปค๋ฐํ ํ์ผ๋ค์ ์ค๋นํ๊ธฐ ์ํด ์ฐ๋ ๋ช ๋ น์ด์ด๋ค.
- Changes to be committed: ์ปค๋ฐ ์ค๋น๊ฐ ๋ ํ์ผ๋ค
- Untracked files: Git์ด ์์ง ์ถ์ ํ์ง ์๋ ํ์ผ๋ค. git add๋ก ์ถ์ ํ ์ ์๋ค.
$ git status

โ๏ธ src ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ํ์ผ๊ณผ ํด๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋์ดํ๋ ๋ช
๋ น
- ls: ํ์ฌ ๋๋ ํฐ๋ฆฌ ๋๋ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ํ์ผ๊ณผ ํด๋ ๋ชฉ๋ก์ ํ์ํ๋ ๋ช ๋ น์ด
- -R: -R ์ต์ ์ "Recursive"์ ์ฝ์๋ก, ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ๊น์ง ๋ชจ๋ ํฌํจํ์ฌ ๋ชฉ๋ก์ ๋์ด
- src: ๋ชฉ๋ก์ ๋ณด๊ณ ์ถ์ ๋๋ ํฐ๋ฆฌ
$ ls -R src

โ๏ธ src/ ๋๋ ํ ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ์์ craneGame.java ํ์ผ์ ์ฐพ๋ ๋ช
๋ น์ด
$ find src/ -name "craneGame.java"
โ๏ธ git log๋ก ์ญ์ ์ฌ๋ถ ํ์ธ
git log -- src/algo03/StackAndQueue/craneGame.java
โ๏ธ ์๋์น ์์ ํ์ผ ์ญ์ ๋ณต๊ตฌ
git checkout HEAD^ -- src/algo03/StackAndQueue/craneGame.java
git checkout HEAD^ -- src/algo03/StackAndQueue/decimalToBinary.java
โ๏ธ gitignore ์ .java ์ ์ธํ๋ ๊ท์น ์์ผ๋ฉด ์ ๊ฑฐํ๋ ๋ช
๋ น
git add -f src/algo03/StackAndQueue/craneGame.java
git add -f src/algo03/StackAndQueue/decimalToBinary.java
git commit -m "Restore missing files"
git push origin main
โ๏ธ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น ํ์ธํ๋ ๋ช
๋ น์ด
- git branch ๋ช ๋ น์ด๋ ๋ก์ปฌ ๋ธ๋์น ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
- ์๊ฒฉ ๋ธ๋์น ๋ชฉ๋ก๋ ํ์ธํ๋ ค๋ฉด git branch -a๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น์๋ *์ด ํ์๋จ
- ๋ค๋ฅธ ๋ธ๋์น๋ค๋ ํจ๊ป ๋์ด๋๋ฉฐ, ํ์ฌ ๋ธ๋์น ์ธ์ ๋ธ๋์น๋ค์ * ์์ด ํ์๋จ
git branch
* main
feature-branch
bugfix-branch

โ๏ธ ํ์ฌ Git ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์(remote repository) URL์ ํ์ธํ๋ ๋ช
๋ น์ด
- ์๊ฒฉ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ **๋ฐ์ ๋(fetch)**์ ๋ณด๋ผ ๋(push) ์ฌ์ฉ๋๋ URL
git remote -v

โ๏ธ ๋ค๋ฅธ ๋ธ๋์น์ ํ์ผ์ด ์๋ ์ง ํ์ธํ๋ ๋ช
๋ น์ด
git branch --all
git checkout <๋ค๋ฅธ ๋ธ๋์น>
git ls-files | grep craneGame
'Git&GitHUB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

โ ๏ธ ๋ฌธ์
git push origin main ๋ช ๋ น์ด๋ก ์๊ฒฉ์ ์ฅ์์ ํธ์ํ๋ฉด java ํด๋์ค ํ์ผ์ด ์ฌ๋ผ์ง๋ ๋ฌธ์
๊ธฐ์กด์ ์๋ /StudyAlgorithm/StudyAlgorithm/src/
์ดํ algo03
ํจํค์ง์ craneGame.java๋ decimalTobinary.java ํด๋์ค๋ค์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ git add. ์ git commit -m "Study stack" ๊น์ง ์ํ ํ์ ๋๋ ํ์ผ ๋ชฉ๋ก์ ์ ๋ ํด๋์ค๊ฐ ๊ฐ์ง๋์๋ค.


ํ์ง๋ง git push origin main ๋ช
๋ น์ด๋ก ์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํ๊ณ ๋์ ๊นํ๋ธ์์ ํ์ธํด๋ณด๋ ์๋ก ์ถ๊ฐํ ๋ ๊ฐ์ ํด๋์ค ํ์ผ์ ์ฌ๋ผ๊ฐ์ง ์์ ๊ฒ์ผ๋ก ํ์ธ์ด ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ src/ ์ดํ๋ฅผ ๋ถ๋ฌ์ ์ปค๋ฐ ํ ํธ์ํ์์ผ๋ nothing to commit, working tree clean, Everything up-to-date ๋ก ํ์ธ๋จ (์๊ฒฉ ์ ์ฅ์๊ฐ ์ด๋ฏธ ์ต์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํจ)

๊ทธ๋์ ์๋์ผ๋ก src ์ดํ์ ํ์ผ๋ช
์ ์
๋ ฅํด์ add ํ๋ ค๊ณ ํ์ผ๋, bash์์ ํด๋น ํ์ผ์ด ์กด์ฌํ์ง ์๋๋ค.
ํ์ผ์ ํธ์ํ๋ ๊ณผ์ ์์ ํ์ผ์ด ์ฌ๋ผ์ง ๊ฒ์ผ๋ก ์ถ์ ๋จ

๐ง ์์ธ
git status๋ฅผ ๋ณด๋ฉด src/algo03/StackAndQueue/craneGame.java์ decimalToBinary.java๊ฐ ์ถ์ ๋์ง ์๋ ์ํ์๊ณ , ์ดํ ls -R src๋ก ํ์ธํ์ ๋ ํด๋น ํ์ผ๋ค์ด ์กด์ฌํ์ง ์์. ์ฆ, ํ์ผ์ด ์ญ์ ๋์๊ฑฐ๋ ๋ค๋ฅธ ์์น๋ก ์ด๋๋์์ ๊ฐ๋ฅ์ฑ์ด ์์
์๋์ ๋ช
๋ น์ด๋ก .gitignore ์ค์ ํ์ธ์ด ํ์ํ๋ค.
cat .gitignore
โ
.gitignore์ .java๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด git add๊ฐ ์๋ํ์ง ์๋๋ค.
โ
๋ ์์ ํด๋๋ฅผ git ignore์ ํฌํจํ ๊ฒฝ์ฐ ์๋ํ์ง ์๋๋ค.

โก ํด๊ฒฐ๋ฒ
ํ์์ ๊ฒฝ์ฐ ์์ ํด๋์ธ "StudyAlgorithm/"์ด ๋ค์ด๊ฐ ์๋ ๋ฌธ์ ์๋ค.
nano ํ
์คํธ ์๋ํฐ๋ก .gitignore ํ์ผ์ ์์ ํ ์ ์ฅ ํ ๋ค ๋ค์ git add ๋ฅผ ํด ์ฃผ๋ ํด๊ฒฐ๋จ
.metadata/ ๋๋ ํฐ๋ฆฌ๋ง ๊น ์ถ์ ๋์์์ ์ ์ธํ๊ณ src/๋ ํฌํจํ๋ ๊ฒ์ผ๋ก ์์ ํด ์ค
.metadata/ !src/
nano ํ ์คํธ ์๋ํฐ ์ฌ์ฉ๋ฒ
nano .gitignore # ๋๋ ์ํ๋ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์ด๊ธฐ
- ์์ ์ด ๋๋๋ฉด Ctrl + O ๋ฅผ ๋๋ฌ ์ ์ฅํ๊ธฐ
- File Name to Write: ๋ฉ์์ง๊ฐ ๋์ค๋ฉด, ๊ทธ๋ฅ Enter ํค๋ฅผ ๋๋ฌ ํ์ฌ ํ์ผ ์ด๋ฆ์ผ๋ก ์ ์ฅ
- ์ ์ฅ์ด ์๋ฃ๋๋ฉด, Ctrl + X ๋ฅผ ๋๋ฌ nano๋ฅผ ์ข ๋ฃ
๐ฆ ๋ฌธ์ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์ด ๋ช ๋ น์ด ์ ๋ฆฌ
โ๏ธ git add ๋ค์ ์๋
git add src/algo03/StackAndQueue/craneGame.java git add src/algo03/StackAndQueue/decimalToBinary.java git commit -m "Restore missing files" git push origin main
โ๏ธ ์ธ์ ์๋๋ฉด ๊ฐ์ ์ถ๊ฐ -f ์ต์
git add -f src/algo03/StackAndQueue/craneGame.java git add -f src/algo03/StackAndQueue/decimalToBinary.java git commit -m "Force add missing files" git push origin main
โ๏ธ git status๋ ํ์ฌ Git ์ ์ฅ์์ ์ํ๋ฅผ ํ์ธํ๋ ๋ช
๋ น์ด
- ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ์ Git์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
- ์์ ์ค์ธ ํ์ผ์ ์ถ์ ํ๊ณ , ์คํ ์ด์ง ์ํ๋ฅผ ํ์ธํ๊ณ , ์ปค๋ฐํ ํ์ผ๋ค์ ์ค๋นํ๊ธฐ ์ํด ์ฐ๋ ๋ช ๋ น์ด์ด๋ค.
- Changes to be committed: ์ปค๋ฐ ์ค๋น๊ฐ ๋ ํ์ผ๋ค
- Untracked files: Git์ด ์์ง ์ถ์ ํ์ง ์๋ ํ์ผ๋ค. git add๋ก ์ถ์ ํ ์ ์๋ค.
$ git status

โ๏ธ src ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ํ์ผ๊ณผ ํด๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋์ดํ๋ ๋ช
๋ น
- ls: ํ์ฌ ๋๋ ํฐ๋ฆฌ ๋๋ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ํ์ผ๊ณผ ํด๋ ๋ชฉ๋ก์ ํ์ํ๋ ๋ช ๋ น์ด
- -R: -R ์ต์ ์ "Recursive"์ ์ฝ์๋ก, ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ๊น์ง ๋ชจ๋ ํฌํจํ์ฌ ๋ชฉ๋ก์ ๋์ด
- src: ๋ชฉ๋ก์ ๋ณด๊ณ ์ถ์ ๋๋ ํฐ๋ฆฌ
$ ls -R src

โ๏ธ src/ ๋๋ ํ ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ์์ craneGame.java ํ์ผ์ ์ฐพ๋ ๋ช
๋ น์ด
$ find src/ -name "craneGame.java"
โ๏ธ git log๋ก ์ญ์ ์ฌ๋ถ ํ์ธ
git log -- src/algo03/StackAndQueue/craneGame.java
โ๏ธ ์๋์น ์์ ํ์ผ ์ญ์ ๋ณต๊ตฌ
git checkout HEAD^ -- src/algo03/StackAndQueue/craneGame.java git checkout HEAD^ -- src/algo03/StackAndQueue/decimalToBinary.java
โ๏ธ gitignore ์ .java ์ ์ธํ๋ ๊ท์น ์์ผ๋ฉด ์ ๊ฑฐํ๋ ๋ช
๋ น
git add -f src/algo03/StackAndQueue/craneGame.java git add -f src/algo03/StackAndQueue/decimalToBinary.java git commit -m "Restore missing files" git push origin main
โ๏ธ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น ํ์ธํ๋ ๋ช
๋ น์ด
- git branch ๋ช ๋ น์ด๋ ๋ก์ปฌ ๋ธ๋์น ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
- ์๊ฒฉ ๋ธ๋์น ๋ชฉ๋ก๋ ํ์ธํ๋ ค๋ฉด git branch -a๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น์๋ *์ด ํ์๋จ
- ๋ค๋ฅธ ๋ธ๋์น๋ค๋ ํจ๊ป ๋์ด๋๋ฉฐ, ํ์ฌ ๋ธ๋์น ์ธ์ ๋ธ๋์น๋ค์ * ์์ด ํ์๋จ
git branch
* main
feature-branch
bugfix-branch

โ๏ธ ํ์ฌ Git ์ ์ฅ์์ ์๊ฒฉ ์ ์ฅ์(remote repository) URL์ ํ์ธํ๋ ๋ช
๋ น์ด
- ์๊ฒฉ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ **๋ฐ์ ๋(fetch)**์ ๋ณด๋ผ ๋(push) ์ฌ์ฉ๋๋ URL
git remote -v

โ๏ธ ๋ค๋ฅธ ๋ธ๋์น์ ํ์ผ์ด ์๋ ์ง ํ์ธํ๋ ๋ช
๋ น์ด
git branch --all git checkout <๋ค๋ฅธ ๋ธ๋์น> git ls-files | grep craneGame