Git - Branch

์†”๋น„ยท2024๋…„ 2์›” 5์ผ
0

๐Ÿ—‚๏ธ GIT

๋ชฉ๋ก ๋ณด๊ธฐ
2/6

๐Ÿ“Œ branch ์ด๋ก  ์ดํ•ดํ•˜๊ธฐ
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80





  • ์‹ค์Šต์„ ์œ„ํ•œ ํ”„๋ผ์ด๋น— Repository ์ƒ์„ฑ

๐Ÿงท README
ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์„ค๋ช…, ์‚ฌ์šฉ๋ฐฉ๋ฒ•, ๋ผ์ด์„ผ์Šค, ์„ค์น˜๋ฐฉ๋ฒ• ๋“ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ์ˆ ํ•˜๋Š” ํŒŒ์ผ
๐Ÿงท gitignore
Git ๋ฒ„์ „๊ด€๋ฆฌ์—์„œ ์ œ์™ธํ•  ํŒŒ์ผ๋ชฉ๋ก์„ ์ง€์ •ํ•˜๋Š” ํŒŒ์ผ
์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ๋“ค์„ ์ž๋™์œผ๋กœ commit ๋Œ€์ƒ์—์„œ ์ œ์™ธ์‹œ์ผœ์คŒ





Default Branch



Repository ์ƒ์„ฑ ์‹œ defalt๋กœ ์ƒ์„ฑ๋œ๋‹ค.

  • github์€ main์ด ๋””ํดํŠธ
  • git์€ master์ด ๋””ํดํŠธ
  • ์ˆ˜์ •

    ๋‹จ, ๋‹ค๋ฅธํŒ€์›๋“ค๊นŒ์ง€ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
    ์‹ ์ค‘ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ๊ฒƒ.
  • ๋””ํดํŠธ๊ฐ’ ๋ณ€๊ฒฝ

    ์„ธํŒ… -> Repository -> ๋””ํดํŠธ๊ฐ’ ๋ณ€๊ฒฝ





Git Clone | Remote Repository ๋ณต์ œ


๐Ÿšฉ Local Repository ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ
Git Clone ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Remote Repository ๋ฅผ Local ์— ๋ณต์ œํ•ด๋ณด์ž

๐Ÿงท Git Clone
์•ž์„œ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ 

  • Git Init ์œผ๋กœ ํ•ด๋‹น ํด๋”๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  (git์ด ๊ด€๋ฆฌ)
  • Remote Repository ๋ฅผ ๋“ฑ๋กํ•˜๊ณ 
  • Remote Repository ์˜ ๋‚ด์šฉ์„ Pull ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„ Git Clone ์œผ๋กœ ํ• ์ˆ˜ ์žˆ์Œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws (master)
$ git clone https://sxlbl:{ํ† ํฐ๊ฐ’}@github.com/sxlbl/HelloGit.git
Cloning into 'HelloGit'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws (master)
$ ls
HelloGit/  test_project/

=> local์— hello git ์ƒ์„ฑํ™•์ธ





Branch


๐Ÿšฉ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋‘๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋™์‹œ์— ๋‘ํŒ€์œผ๋กœ ๋‚˜๋ˆ  ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ,
Branch ๋‚ด์„œ ๋ณ‘ํ–‰ํ•ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฒ„์ „๋„ ๋”ฐ๋กœ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
๋˜๋Š” ๋ฆด๋ฆฌ์ฆˆ Branch์™€ ๊ฐœ๋ฐœ Branch๋ฅผ ๋”ฐ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก Local โ†’ Remote : git add commit push
๐Ÿ’ก Remote โ†’ Local : git pull



์กฐํšŒ

๐Ÿงท Branch ์กฐํšŒ (Local Branch)

git branch

๐Ÿงท Branch ์กฐํšŒ (Remote Branch)

git branch -r

๐Ÿงท Branch ์กฐํšŒ (์ „์ฒด)

git branch -a

๐Ÿ“ข Branch๋ฅผ Local Repository์—์„œ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๋ฐ”๋กœ Remote Repository์— ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.
Remote๋กœ pushํ•ด์ค˜ํ•จ

๐Ÿ“Œ Branch ์กฐํšŒ (Local Branch) 
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch
* master

๐Ÿ“Œ Branch ์กฐํšŒ (Remote Branch) 
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -r
  origin/HEAD -> origin/master
  origin/master

๐Ÿ“Œ Branch ์กฐํšŒ (์ „์ฒด)  
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master



(Local Branch) ์ƒ์„ฑ, ์ด๋™, ์ƒ์„ฑ&์ด๋™

๐Ÿงท Branch ์ƒ์„ฑ

git branch <branchname>

๐Ÿงท Branch ์ด๋™

git checkout <branchname>

๐Ÿงท Branch ์ƒ์„ฑ & ์ด๋™ -> ๊ธฐ์กด ๋ธŒ๋žœ์น˜๊ฐ€ ์—†์–ด์•ผํ•จ

git checkout -b <branchname>
๐Ÿ“Œ Branch ์ƒ์„ฑ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch branch01

๐Ÿ“Œ Branch ์ƒ์„ฑํ™•์ธ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch
  branch01
* master

๐Ÿ“Œ Branch ์ด๋™   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git checkout branch01
Switched to branch 'branch01'

๐Ÿ“Œ Branch ์ด๋™ํ™•์ธ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch01) ๐Ÿ“Œ ()๊ฐ€ master์—์„œ branch01๋กœ ๋ณ€๊ฒฝ๋จ
$ git branch
* branch01
  master

๐Ÿ“Œ Branch ์ƒ์„ฑ&์ด๋™   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch01)
$ git checkout -b branch02
Switched to a new branch 'branch02'

๐Ÿ“Œ Branch ์ด๋™ํ™•์ธ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git branch
  branch01
* branch02
  master



(Local โ†’ Remote) Branch ์ƒ์„ฑ ์ ์šฉ

๐Ÿงท Local ์—์„œ ์ƒ์„ฑํ•œ Branch Remote์— ์ ์šฉ

git push origin <branchname>
๐Ÿ“Œ branch01 ์ ์šฉ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git push origin branch01
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'branch01' on GitHub by visiting:
remote:      https://github.com/sxlbl/HelloGit/pull/new/branch01
remote:
To https://github.com/sxlbl/HelloGit.git
 * [new branch]      branch01 -> branch01
 
๐Ÿ“Œ branch02 ์ ์šฉ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git push origin branch02
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'branch02' on GitHub by visiting:
remote:      https://github.com/sxlbl/HelloGit/pull/new/branch02
remote:
To https://github.com/sxlbl/HelloGit.git
 * [new branch]      branch02 -> branch02

๐Ÿ“Œ branch ์ ์šฉํ™•์ธ   
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git branch -a
  branch01
* branch02
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branch01
  remotes/origin/branch02
  remotes/origin/master



(Local Branch) ์‚ญ์ œ

๐Ÿงท Branch ์‚ญ์ œ

git branch -d <branchname>

๐Ÿ“ข ๋‹จ, ํ™œ์„ฑํ™” ๋œ ์ƒํƒœ์—์„œ๋Š” ์‚ญ์ œ๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ
๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ํ›„ ์‚ญ์ œํ•œ๋‹ค.

๐Ÿ“Œ branch02๊ฐ€ ํ™œ์„ฑํ™” ๋œ ์ƒํƒœ์—์„œ ์‚ญ์ œ ์‹œ ์—๋Ÿฌ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git branch -d branch02
error: cannot delete branch 'branch02' used by worktree at 'C:/Users/solbi/OneDrive/Documents/git_ws/HelloGit'

๐Ÿ“Œ master๋กœ ์ด๋™
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (branch02)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

๐Ÿ“Œ branch02์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -d branch02
Deleted branch branch02 (was 40b9102).

๐Ÿ“Œ branch ์กฐํšŒ (์‚ญ์ œํ™•์ธ)
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch
  branch01
* master

๐Ÿ“Œ branch01 ์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -d branch01
Deleted branch branch01 (was 40b9102).

๐Ÿ“Œ local์˜ branch๋Š” ๋ชจ๋‘ ์‚ญ์ œ ๋˜์—ˆ์œผ๋‚˜, remote์—๋Š” ์•„์ง ๋ฐ˜์˜๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ ์šฉ์„ ํ•ด์ฃผ์–ด์•ผํ•จ

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branch01
  remotes/origin/branch02
  remotes/origin/master



(Local โ†’ Remote) Branch ์‚ญ์ œ ์ ์šฉ

๐Ÿงท Branch (Local โ†’ Remote) ์‚ญ์ œ์ ์šฉ

git push origin --delete <branchname>
๐Ÿ“Œ branch02 ์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git push origin --delete branch02
To https://github.com/sxlbl/HelloGit.git
 - [deleted]         branch02

๐Ÿ“Œ branch01 ์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git push origin --delete branch01
To https://github.com/sxlbl/HelloGit.git
 - [deleted]         branch01

๐Ÿ“Œ ์‚ญ์ œํ™•์ธ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

-> ์‚ญ์ œํ™•์ธ





์‹ค์Šต


1. Remote Repository ์ƒ์„ฑํ•˜๊ธฐ

2. Local ์— Clone

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/HelloGit (master)
$ cd ..


๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws (master)
๐Ÿšฉ $ git clone https://sxlbl:{ํ† ํฐ๊ฐ’}@github.com/sxlbl/branch_project.git
Cloning into 'branch_project'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

3. Branch ์ƒ์„ฑ ํ›„ ์ด๋™

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws (branch01)
$ cd branch_project/

๐Ÿšฉ branch02 ์ƒ์„ฑ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (main)
$ git branch branch02

๐Ÿšฉ branch01 ์ƒ์„ฑ ์ด๋™
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (main)
$ git checkout -b branch01
Switched to a new branch 'branch01'

๐Ÿšฉ branch ๋ชฉ๋ก ํ™•์ธ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git branch -a
* branch01
  branch02
  main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main

4. Branch Push

๐Ÿšฉ branch02 remote ์ ์šฉ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git push origin branch02
goTotal 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'branch02' on GitHub by visiting:
remote:      https://github.com/sxlbl/branch_project/pull/new/branch02
remote:
To https://github.com/sxlbl/branch_project.git
 * [new branch]      branch02 -> branch02

๐Ÿšฉ branch01 remote ์ ์šฉ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git push origin branch01
giTotal 0 (delta 0), reused 0 (delta 0), pack-reused 0
tremote:
remote: Create a pull request for 'branch01' on GitHub by visiting:
remote:      https://github.com/sxlbl/branch_project/pull/new/branch01
remote:
To https://github.com/sxlbl/branch_project.git
 * [new branch]      branch01 -> branch01

๐Ÿšฉ branch ๋ชฉ๋กํ™•์ธ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git branch -a
* branch01
  branch02
  main
  remotes/origin/HEAD -> origin/main
  remotes/origin/branch01
  remotes/origin/branch02
  remotes/origin/main

5. Local Branch ์‚ญ์ œ

๐Ÿšฉ branch02 ์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git branch -d branch02
Deleted branch branch02 (was 4a6c05d).

๐Ÿšฉ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ๋Š” ์‚ญ์ œ ์—๋Ÿฌ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git branch -d branch01
error: cannot delete branch 'branch01' used by worktree at 'C:/Users/solbi/OneDrive/Documents/git_ws/branch_project'

๐Ÿšฉ main์œผ๋กœ ์ด๋™
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (branch01)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

๐Ÿšฉ branch01 ์‚ญ์ œ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (main)
$ git branch -d branch01
Deleted branch branch01 (was 4a6c05d).

๐Ÿšฉ branch ๋ชฉ๋ก ํ™•์ธ
๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (main)
$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/branch01
  remotes/origin/branch02
  remotes/origin/main

6. Remote Branch ๋ชจ๋‘ ์‚ญ์ œ

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (ma
$ git push origin --delete branch02
To https://github.com/sxlbl/branch_project.git
 - [deleted]         branch02

๋ฐ•์†”๋น„@์†”๋น„์˜gram MINGW64 ~/OneDrive/Documents/git_ws/branch_project (ma
$ git push origin --delete branch01
To https://github.com/sxlbl/branch_project.git
 - [deleted]         branch01


Daily Study Note

0๊ฐœ์˜ ๋Œ“๊ธ€