🕊git

컴퓨터 파일의 변경사항 추적하고
여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한
스냅숏 스트림 기반의 분산 버전 관리 시스템
😎

👉 자신이 작성한 소스 코드를 기록 저장하며
협업 하며 프로젝트 만들 때 서로 소스 코드 공유하고
서로 작성한 소스 코드들을 하나로 합칠 수 있게 해주는 시스템
🔥

📥git 설치 방법 - 깃 사이트

✔잘 다운받았는지 체크하는 명령어

git --version
# 밑에 버전 나오는 잘 설치된 것

✔git 설치한 거에 대한 설정 파일들

.gitconfig
# 여기에 모든 설정 파일이 있음
# . 으로 시작하면 숨겨져있는 파일인 것

Git 🤜💥🤛 GitHub

Git➡소스 코드 기록 관리하는 오픈 소스 버전 제어 도구
GitHub➡Git 리포지토리를 위한 호스팅 서비스
즉, Git은 도구이고 GitHub는 Git을 사용하는 프로젝트를 위한 서비스

✨GitHub 원격 저장소에 소스 코드 올리기

✅사용하기 위해 전역으로 설정 해줘야할 것들이 있음

깃을 사용하는 사람의 이름은 뭐고 이메일은 뭔지를 설정으로 해줘야함❗
이미 설정되어있는게 있지만 우리가 따로 설정해줘야하는 것도 있는 것

git config --global user.name "본인 이름"

git config --global user.email "본인 이메일"
# 잘 설정 됐는지 확인하는 명령어
git config user.name
# 본인 이름 나오면 잘 된 것
git config user.email
# 본인 이메일 나오면 잘 된 것

📁폴더 만들기

소스 작성할 폴더 만들기 git-test

🐱‍💻Visual Studio Code - vsCode 사이트

🐱‍GitHub ( 원격 ) - 깃허브 사이트

들어와서 로그인하고 가장 먼저 해야할게 저장소 생성하기
여기다 소스 코드를 저장할거임

만든 폴더 vsCode( 로컬 )로 끌어오기

🔗이제 원격이랑 로컬하고 연결해야함

로컬 Git 저장소와 Remote Git 저장소 연결 및 소스 코드 Push

아까 저장소 이름을 github-test 라고 했으니까
이걸 README.md( 마크다운 코드 )에 넣어준다는 것

이니셜라이즈의 약자 init
👉 git init 실행하면 현재 작업 디렉토리에 새 리포지토리에
필요한 모든 Git 메타데이터가 git 하위 디렉토리가 생성됨🎆

이거 다 복사하고 vsCode 터미널 열어서 붙여넣기

만약 이렇게 뜨면 이 명령어 하면 됨

README.md 파일 생성된 걸 볼 수 있음

gitHub에 잘 올라 온 것도 볼 수 있음

test.js 파일 만들고 hello 입력했는데 그럼 변경사항이 생긴거니까 ( 작업 디렉토리 )

깃에서 어떤 상황들이 일어나고 있는지 알기 위한 명령어 : git status

. 현재 디렉토리 안에 있는 모든 파일들 다 포함
스테이징 에리아로 파일이 올라왔다는 뜻

변경 사항을 로컬 저장소로 저장하고 싶을 때 : git commit -m "메시지 입력"

옵션 -am : git add랑 git commit 합친 것
이렇게 해줄 수도 있음🤓

로컬 저장소에 commit 한것들 보고 싶으면 : git log

커밋한 내용 변경하고 싶으면 : git commit --amend

원격 저장소에 올리고 싶으면 : git push

🔸git branch

Git에서 브랜치 생성, 삭제, 목록 표시 등을 관리하기 위한 명령어❗

Git에서 브랜치는 특정 시점에서 코드의 "스냅샷"을 저장해두는 기능으로
새로운 기능 개발하거나 버그 수정할 때 원본 코드를 안전하게 유지하면서 작업 가능

git 생성하기

git branch 브랜치 이름

# 현재 어떤 브랜치들이 있는지 알 수 있는 명령어
git branch

# 브랜치 이동하기
git checkout 브랜치 이름
git switch 브랜치 이름

# 브랜치 생성하고 이동하는 걸 한방에 하고 싶을 때 쓰는 명령어
git checkout -b 브랜치 이름
git switch -c 브랜치 이름

# 브랜치 이름 수정하기 -> test2를 test3으로 바꾸기
git branch -m test2 test3

# 브랜치 삭제하기
git branch -d 브랜치 이름

test 브랜치에서 코드 추가하고 저장

깃허브( 원격 )로 가보면 현재 main 브랜치 한개뿐

푸시까지하고

원격으로 다시 가서 새로고침 후 확인해보면 test 브랜치가 생긴 걸 볼 수 있음

main 브랜치 test.js엔 hello 코드 밖에 없는 걸 볼 수 있음
( 🥕 test 브랜치에 푸시했기 때문 )

이 명령어 쓰면

로그가 깔쌍하게 나오는 걸 볼 수 있게 됨( 이런게 있다 정도 )✨

😎merge, rebase로 브랜치 병합하기

👉 test에 있는 걸 main에 반영해주고 싶으면 ( 병합 ) : git merge or rebase 사용🔥

1️⃣ merge

git merge 브랜치 이름

세개의 커밋의 모든 변화를 main에 한꺼번에 적용❗

-a( All ) 해주면 원격까지 브랜치 확인 가능👌

test 브랜치는 작업할거 다하고 병합까지 했으니까
브랜치 필요없으므로 지워주고 싶다면 'git branch -d 브랜치 이름' 해주면 됨

원격에 있는 브랜치 지워주고 싶다면 'git push origin -d 브랜치 이름'
👉 원격에 있는 걸 지우는 건 결국, 업데이트 한다는 것이기에 push를 사용하는 것❗

2️⃣ rebase

🤷‍♀️ merge와 어떤 부분이 다를까 ⁉
👉 merge : 커밋된게 한방에 하나로 합쳐서 main으로 바로 넣어버림
👉 rebase : 커밋의 변화를 main에 옮겨줌

merge 할 땐 main 브랜치로 와서 git merge test 라고 했었음( ➕main에 바로 병합 )

🎯rebase는 먼저 test로 가서 rebase를 해줘야함
그러고 main으로 브랜치 이동한 담에 test 브랜치를 merge 시키고 푸시⚡


🐱‍💻pull, fetch로 원격 소스 코드 가져오기

다른 사람이 올려놓은 소스 코드 가져올 땐➡git pull || git fetch 이용해서 가져올 수 있음

🔹 git pull : 커밋 가져온 후 자동으로 병합( merge )을 시도
상황에 따라 달라지므로 가져온 모든 커밋이 현재 활성 브랜치에 병합됨
커밋을 먼저 검토하지 않고도 커밋을 자동으로 병합
👉 브랜치 신중하게 관리하지 않으면 자주 충돌 발생
💥

🔹 git fetch : 현재 브랜치에 존재하지 않는
대상 브랜치에서 커밋을 수집하여 로컬 리포지토리에 저장
( 단, 현재 브랜치와 병합하진 않음❌ )

↩커밋한 거 되돌리기 - reset & revert

커밋의 값 기니까 인식할 정도만 이렇게 넣으면 됨👌 ( 커밋했던 거 리셋 )

이 명령어 이용하면 해당 커밋 이후의 작업들은 모두 사라지게 됨

이 명령어는 특정 사건을 없었던 일로 만드는 것

insert 모드 나가려면 Esc
w : 이 환경에서 수정한 걸 적용한다는 뜻, q : 나간다는 뜻, ! : 강제

git log로 보면 바뀐게 잘 적용되는 걸 볼 수 있을거임


🧹git stash

깃에서 작업 도중 변경된 파일들을 임시로 저장하고
작업 디렉토리 깨끗하게 비워두기 위해 사용하는 명령어❗
GitHub Desktop에서도 이 기능 사용 가능

작업 디렉토리에서 새로운 변경된게 생기는것

변경사항이 생겼는데( 실제론 엄청 많은 작업을 했을것 )
그러다 어떤 분이 다른 게 버그가 나서 그 작업을 해야한다고 했을 때
현재 해놓은 걸 잠시 보관해두고 싶으면➡git stash 하면 됨😎

git stash 하니까 추가했던 한줄이 어디론가 사라지는 걸 볼 수 있음

아예 사라진 게 아닌 어딘가로 보관 되어 있는 상태📦

git stash pop 명령어 이용해서 보관해둔거 가져올 수 있음🔥

git stash list 하면 보관한 리스트들을 볼 수 있음

stash 한걸 가져올 때 pop || apply 쓸 수 있는데
스택에 남아있게 하려면 apply 쓰면 되고 .... clear 쓰면 list에 있는거 다 날려짐
( 이런게 있다 정도로 알고 가면 됨 )


🐱‍👓Github Flow

🧐깃 실제로 사용할 때 어떤식으로 사용하는지 알아보자❗
👉 팀마다 다를건데 기본적으로 사용하는 방식을 살펴볼 것

👑팀장을 정하고 그 팀장이 '저장소를 생성'할거임➡🔗원격저장소와 프로젝트 연결
팀장이 '전체적인 구조 생성'하기 ( 필요한 설정들 해줘야함 )

👥여기서 팀원들 초대하면 됨

👑팀장이 '기본적인 브랜치'를 만들어줘야함

Develop 까지 브랜치를 만들어줘야함

팀장이 그담에 해줘야할게 'Main 브랜치 보호하기'🔐
👉 메인 브랜치에다 아무나 푸시하면 안 되기 때문

어떠한 브랜치를 보호할건지 main

어떻게 보호할건지
많은 것들이 있는데 주로 사용하는건 노란네모 박스친 부분

프로젝트 생성하기

프로젝트 생성할 때 굉장히 많은 템플릿이 있음
주로 보드를 많이들 사용함✔

앞으로 개발하게 되면 어떠한 것들을 할건지를 여기다 그냥 다 만들어놓으면 됨

여기다 누가 이 기능을 만들건지 해주면 위임이 됨

위임 받은 사람은 어떻게 하면 되냐면

이걸 이슈로 만들면 되는것

여기서 브랜치를 만들고 명령어 복붙해서 로컬에 넣으면 됨

...


여러가지 사용해보고 본인한테 맞는거 쓰면 됨

이건 스펠링 많이 틀리는데 이거 사용하면 좋음

profile
안녕하세요! 퍼블리싱 & 프론트엔드 개발 공부 블로그 입니다!

0개의 댓글