//์ด๊ธฐํ ํ๊ธฐ
git init
ls -al// .git ํ์ผ์ ํ์ธํ ์ ์๋ค.
//์ญ์ ํ๊ธฐ
rm -rf .git
alias ์ค์ ํ๊ธฐ
git config --global alias.st status // git st๋ก -> git status ์ฌ์ฉํ ์ ์์ด์
git config --global alias.aa "add --all"
git config --global alias.cm "commit -m"
echo hello world1 > a.txt
echo hello world2 > b.txt
echo hello world3 > c.txt
git add *.txt // -> staging area => ready to commit
echo welcome >> a.txt //update => modified
git add a.txt
git rm --cached // from stage to untracked
.gitignore ๋ง๋ค์ด์ tracking์๋๊ฒ ๋ง๋ค๊ธฐ
git status -s // --short
git diff
์ด์ ์ง๊ธ
@@ -1 +1,2@@
git diff --stage // staging area์ ์ด์ ์ปค๋ฐ๊ณผ์ ๋น๊ต
git config --global -e
git add .
git commit -m "message1"
git commit -am "message all" // working directory ๋ชจ๋! ์ปค๋ฐํ์
์ด๋ค ๊ท๋ชจ์ ์ปค๋ฐ? ๊น์ ํ์คํ ๋ฆฌ์ ์ฐฝ๊ณ !!
์ดํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ๋ณ ์์ ๋ณ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์!
๐ฅ ํ์ฌํ ๋์ฌ๋ก ๋ง๋ ๋ค.
1. init
2. Add login
3. Add user
4. Add welcome
๋ฐ๋ก staging area๋ก ๊ฐ์!! ๐
git rm
git mv
git log --p //์์ ๋ด์ฉํ์ธ ๊ฐ๋ฅ
git log --oneline //๊ฐ๋จํ ์ปค๋ฐ ๋ฉ์ธ์ง
git log --oneline --reverse //๊ฑฐ๊พธ๋ก ๋ณด๊ธฐ
git log --pretty=oneline
git log --pretty=format:"%h %an"
[๊น ๋ก๊ทธ ์ค์ ](https://git-scm.com/docs/git-log)
git log --oneline --graph --all
git log --oneline -3 // ์ต๊ทผ ์ปค๋ฐ 3๊ฐ ๊น์ง๋ง
git log --author="gil"
git log --before="2020-12-25"
git log --grep="project" //title์์ ์๋ค๋ฉด
git log -S "๋ฌธ์์ด" //์ปค๋ฐ ๋ด์ฉ์์ ๋ฌธ์์ด์ด ์๋ ์ปค๋ฐ
git log -S "๋ฌธ์์ด" -p // ์ฝ๋ ๋ด์ฉ์ ๋ณผ ์ ์๋ค.
HEAD๋ ๋ด๊ฐ ์ง๊ธ ๋ณด๊ณ ์๋ ์์น!!
head~1 // ์ด์
head~2 // ์ด์ ์ด์
git config --global alias.ll "log --graph --all --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(white)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --date=short"
git merge branch-name
git merge --no-ff branch-name //fast-forward ํ๊ณ ์ถ์ง ์์ผ๋ฉด! ๋จธ์ง ์ปค๋ฐ ์๊น
์ถฉ๋(conflict)
๋์ผํ ํ์ผ, ๋์ผํ ๋ถ๋ถ์ ์์ ํ๊ฒ ๋์๋ค๋ฉด ๋ฐ์.
git merge branch //์ถฉ๋ ๋ฐ์.
git mergetool //vscode๋ก ์
ํ
ํ [git config --global -e]
git add . //์์ ์๋ฃํ
git merget --continue //๋จธ์ง ๊ณ์์งํ
TIP: ์ค๋ฆฌ์ง๋ ํ์ผ nono
git config --global mergetool.keepBackup false
//master new-branch
git rebase master // new-branch๊ฐ master์ ์ต์ ์ ์ปค๋ฐ์ผ๋ก ๋ณ๊ฒฝ
//master branch
git cherry-pick hash
git stash [push] -m "message"
git stash list
//์ง๊ธ ์คํ
์ด์ง์ ์ฌ๋ผ๊ฐ ์๋ ์ํ๋ฅผ ์ ์งํ๊ณ stash stack์ push as well
git stash push -m "message" --keep-index
//If you want to push untracking code into stash stack as well, Use -u option.
**ํ
์คํธ**
git stash -u
// ํด๋น ๋ด์ฉ๊น์ง ์ญ์ !
git restore --source=hash์ฝ๋
or
git restore --source=HEAD~1
//message
git commit --amend -m "new message"
//๋ด์ฉ ์ถ๊ฐํ๊ธฐ
//๋ฐฉ๊ธ ๋ฐ๋ ์ปค๋ฐ์์ ๋ค์ ์์ ํ๊ธฐ...
~~~~
git add .
git commit --amend
git reset // --mixed (๊ธฐ๋ณธ)์ปค๋ฐ์ ์ญ์ ํ์ง๋ง ๋ด์ฉ์ working directory ์ฎ๊ธด๋ค.
git reset --soft HEAD~1 // --soft : staging area๋ก ๊ฐ์ ธ์จ๋ค.
git reset --hard HEAD// ๊ทธ๋ฅ ์ปค๋ฐ + ๋ด์์
๋ด์ฉ ๋ค!!! ์ญ์ ํด์ค ๐โผ๏ธ
๐ฑ vscode local hisotry!! extension good!!
โ๏ธ webstorm์ ๊ธฐ๋ณธ์ผ๋ก ์์ด์!.....
git clean -fd
ํธ๋ํน ๋์ง ์๋ ์๋ก์ด ํ์ผ์ restore๋์ง ์๊ธฐ ๋๋ฌธ์ clean์ ์ฌ์ฉ.
git reset // --mixed (๊ธฐ๋ณธ)์ปค๋ฐ์ ์ญ์ ํ์ง๋ง ๋ด์ฉ์ working directory ์ฎ๊ธด๋ค.
git reset --soft HEAD~1 // --soft : staging area๋ก ๊ฐ์ ธ์จ๋ค.
git reset --hard HEAD// ๊ทธ๋ฅ ์ปค๋ฐ + ๋ด์์
๋ด์ฉ ๋ค!!! ์ญ์ ํด์ค ๐โผ๏ธ
git clean -fd
ํธ๋ํน ๋์ง ์๋ ์๋ก์ด ํ์ผ์ restore๋์ง ์๊ธฐ ๋๋ฌธ์ clean์ ์ฌ์ฉ.
[[revert]]๋ ์ด๋ฏธ ๋ง์คํฐ ๋ธ๋์น์ ์ปค๋ฐ๋ ์์ด๋ค์ด๋ผ๋ฉด, reset๋๋ rebase๋ณด๋ค revert๋ฅผ ํ๋๊ฒ์ด ๋ง์ต๋๋ค. [[revert]]๋ ์๋ก์ด ์ปค๋ฐ์ ๋ง๋ค์ด์ ์ด๋ฏธ ์ถ๊ฐ๋ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๋ฏ๋ก
์ฆโ๏ธ ํ์คํ ๋ฆฌ๋ฅผ ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ ์ง ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์๋ค.
//hash๊ฐ ์ดํ๋์จ ์ปค๋ฐ๋ค์ ํจ๊ป rebaseํ ๊ฑฐ๋ค!
git rebase -i hash
pick: use commit
reword: use commit, but edit the commit message
edit: use commit, but stop for ameding // ์ปท๋ฐ์ ์ฐ์ง๋ง ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๊พธ๊ฒ ๋ค.
squash: use commit, but meld into previous commit //์ปค๋ฐ์ ํ๋๋ก ๋ฌถ๋๋ค.
fixup: squash๋ ๊ฐ์ง๋ง ๋ฉ์ธ์ง ์๋จ๊น.
๐ฅdrop์ ํด์ ์ถฉ๋์ด๋๋ฉด
git add .
git rebase --continue๋ฅผ ํด์ค์ฉ