-
[Git] 깃 브랜치, 명령어 정리(branch, checkout, -d)👩🏻💻Git♟️ 2023. 11. 20. 17:34반응형
안녕하세요 여러분~
이전 글에서 Github를 활용한 원격 코드 관리(remote, clone, push, pull)에 대한 내용을 학습하였는데요! 오늘은 깃 브랜치와 브랜치 명령어에 대한 내용을 자세히 다루려고 합니다>.<
오늘도 파이팅해봅시다. Let's go! ٩( *˙0˙*)۶.
<이전 게시글> https://jungheeho.tistory.com/23[Git] Github를 활용한 원격 코드 관리(remote, clone, push, pull)👩🏻💻
안녕하세요 여러분!!ㅎㅎ 이전 글에서 git init, add, commit과 깃이 동작하는 방식에 대해 이야기를 하였는데요! 오늘은 이때까지 연습했던 내용을 바탕으로 실제로 수정된 코드를 push, pull 해보며 버
jungheeho.tistory.com
하나의 소스 파일을 둘이 동시에 커밋하면 충돌이 날 수 있는데요! 둘이 각각 만든 버전을 모두 유지하면서, 이를 합칠 수 있는 방법에 대해 알아봅시다!
⋔ 브랜치(branch)
- 특정 기준 시점에서 줄기를 나누어 작업할 수 있는 기능을 "브랜치"라고 합니다
- Git에서 브랜치는 특정 커밋을 가리키는 포인터라고 생각할 수 있습니다. 간단하게 말해서, 브랜치는 단순히 커밋들 중 하나를 가리키는 참조(reference)입니다. 브랜치에 커밋을 추가할 때마다 이 포인터는 새 커밋을 가리키도록 업데이트됩니다. 이를 통해 개발자는 여러 개의 독립적인 작업 흐름을 관리할 수 있고, 서로 다른 브랜치에서 동시에 다양한 작업을 진행할 수 있습니다.
* HEAD는 현재 체크아웃된 브랜치의 최신 커밋을 가리키는 포인터이고, 이런 특수한 포인터로 브랜치 사이를 마음대로 넘나들 수 있습니다
<c언어 포인터 복습>
더보기#include<stdio.h> int main() { int x, y, z; int* px = &x, * py = &y, * pz = &z, * tmp = NULL; scanf("%d %d %d", &*px, &*py, &*pz); tmp = py; py = px; px = pz; pz = tmp; printf("%d %d %d", *px, *py, *pz); return 0; }
사진1 사진2 Git은 데이터를 Change Set이나 변경사항(Diff)으로 기록하지 않고 일련의 스냅샷으로 기록한다는 것을 이전에 학습하였습니다.
참고 : https://jungheeho.tistory.com/12
<새 브랜치 생성하기>
% git branch <브랜치명>
dev라는 브랜치 생성 <브랜치 이동>
% git checkout <브랜치명>
% git checkout - --> 이전 브랜치로 이동현재 main 브랜치에 있는데 checkout 명령어로 dev 브랜치로 이동 <현재 존재하는 브랜치 조회>
% git branch
4개의 브랜치가 존재하고, 현재 main 브랜치에 위치해있음 <원격 브랜치 생성>
- 원격 서버에 브랜치 생성
% git push <원격 저장소 이름> <원격 브랜치 이름>
<로컬 브랜치 삭제>
- 로컬 브랜치를 삭제하는 명령어. 현재 작업 중인 브랜치는 삭제할 수 없으므로 다른 브랜치로 checkout 한 후 해당 브랜치를 삭제할 수 있습니다.
- 브랜치에 병합되지 않은 변경 사항 및 푸시되지 않은 커밋이 있는 경우 -d 플래그를 사용해 로컬 브랜치를 삭제할 수 없습니다(브랜치가 가지고 있는 커밋이 다른 브랜치나 저장소에 기록되어 있지 않으면, 커밋 기록이 실수로 손실되는 것을 Git이 방지하기 때문입니다. 이때는 -D 플래그 사용(delete force)
% git branch -d <로컬 브랜치명>
% git branch -D <로컬 브랜치명><원격 브랜치 삭제>
- 원격 서버에 저장되어 있는 브랜치를 삭제하는 명령어.
% git push <원격 저장소 이름> -d <원격 브랜치 이름>
<원격, 로컬의 모든 브랜치 확인>
% git branch -a
<브랜치 생성부터 이동 & 원격 브랜치에 업로드 실습>
sample이라는 폴더 안에 text1, text2, text3이라는 파일이 존재한다. main, dev, feature/login, feature/select-product라는 브랜치가 존재한다.
우선 feature/login 브랜치로 이동하여 test3.txt파일을 수정하고, add, commit을 합니다.
그러고 나서 브랜치를 main으로 checkout 해보면 feature/login 브랜치에서 수정했던 내용은 적용되지 않으므로 병렬로 처리되고 있는 것 확인할 수 있습니다.
위에서 한 내용을 깃허브에 업로드하겠습니다. 우선 git branch -r로 원격 브랜치 확인! 역시나 main밖에 없습니다. 깃허브에 올린 적이 없으니까 --> 로컬에서만 브랜치를 만들고 원격에는 브랜치를 만들지 않았으므로 원격에는 아직 main 브랜치밖에 없습니다.
- 깃허브에 브랜치 생성하고 깃 브랜치 복제하기
깃에 만들어둔 브랜치를 원격 브랜치로 복제하겠습니다. "git push origin <깃브랜치명>"을 하면 되는데, feature/login 푸시합니다. 그러고 나서 깃허브에 업로드된 거 확인!
다음 시간에 만나보아요 ◕‿◕✿
🍀 느낀점 및 정리
깃 브랜치를 로컬에서 생성하고 원격 레포지터리에 브랜치를 생성하여 병렬로 작업하는 내용을 학습하였습니다. 로컬에서만 브랜치를 생성하면 원격에도 자동으로 반영되는 줄 알았는데, 원격에도 따로 올려야 한다는 내용을 새롭게 알게 되었고, 하나의 프로젝트에 여러 브랜치를 생성하여 협업하는 내용을 직접 해보았기에 유익한 내용이였습니다. 🚀👩🏻💻
[출처]
반응형'Git♟️' 카테고리의 다른 글
[Git] Git branch전략, Pull Request, merge | Git 브랜치 전략 기반의 협업 워크 플로우 (0) 2023.11.22 [Git] Git clone이 안되는 오류 | not a git repository (2) 2023.11.22 [Git] Github를 활용한 원격 코드 관리(remote, clone, push, pull)👩🏻💻 (0) 2023.11.18 [Git] Git 기초 명령어 완벽하게 알아보기(init, add, commit, CLI&GUI로 실습)👩🏻💻 (0) 2023.11.16 [Git] Git 기본 이론♟️(자주 쓰는 CLI 명령어, Git, 버전 관리(VCS)) (1) 2023.11.15