github 사용하기
토큰 만들기
📌 Personal access token 만들기
- 우측 상단의 프로필 - Settings
- Developer Settings
- Personal access tokens - Generate new token
- repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
- 토큰 안전한 곳에 보관해 둘 것
﹅ MAC
KeychainAcess 앱 실행
github 의 인터넷 암호 항목 선택
사용자명과 토큰 붙여넣기
원격 저장소 사용하기
로컬에 원격 저장소 추가 후 푸시
- HTTPS 프로토콜 사용
📌 GibHub 레포지토리 생성 후 복붙 명령어
git remote add origin (원격 저장소 주소)
- 로컬의 git 저장소에 원격 저장소로의 연결 추가
- 원격 저장소 이름에 흔히 origin 사용, 다른 것으로 수정 가능
git branch -M main
- github 권장 - 기본 브랜치명을 main 으로
git push -u origin main
- 로컬 저장소의 커밋 내역들 원격으로 push(업로드)
- -u 또는 --set upstream : 현재 브랜치와 명시된 원격 브랜치 기본 연결
GitHub 에서 프로젝트 다운받기
- Download ZIP : 파일들만 다운받음, Git 관리 내역 제외
- Git clone : Git 관리내역 포함 다운로드
📌 터미널이나 Git Bash 에서 대상 폴더 이동 후
git clone (원격 저장소 주소)
1. Git 최초 설정
📌 git 전역으로 사용자 이름과 이메일 주소를 설정
GitHub 계정과는 별개
터미널 프로그램 (Git Bash, iTerm2) 에서 아래 명령어 실행
git config --global user.name "이름"
git config --global user.email "~~@gmail.com
아래 명령어들로 확인
git config --global user.name
git config --global user.email
📌 기본 브랜치명 변경
git config --global init.defaultBranch main
2. 프로젝트 생성 & Git 관리 시작
📌 해당 폴더에서 아래 명령어 입력
git init
📌 폴더에 숨김모드로 .git 폴더 생성 확인
- 이 폴더를 지우면 Git 관리 내역이 삭제된다 (현 파일들은 유지)
git status
📌 Git 의 관리에서 특정 파일/폴더를 배제해야 할 경우
포함할 필요가 없을 때
- 자동으로 생성 또는 다운로드 되는 파일들 (빌드 결과물, 라이브러리)
포함하지 말아야 할 때
- 보안상 민감한 정보를 담은 파일
- .gitignore 파일을 사용해서 배제할 요소들을 지정할 수 있다.
1. .gitignore 파일 생성
2. 깃이그노어 파일 안에 배제 할 파일 이름 저장
3. git status 로 상태 확인
📌 1. 프로젝트의 변경사항들을 타임캡슐(버전)에 담기
변경사항 확인
git status
- 추적하지 않는(untracked)파일 : Git 의 관리에 들어간 적 없는 파일
파일 하나 담기
git add 파일명
- git status 로 확인
모든 파일 담기
git add .
- git status 로 확인
📌 2. 타임캡슐 묻기
아래 명령어로 commit
git commit
커밋 메시지 함께 작성하기
git commit -m "first commit"
아래 명령어와 소스트리로 확인
git log
📌 3. 캡슐에 담기
git add .
- git status 로 확인
git commit -m "second"
add와 commti 한꺼번에
git commit -am "메시지"
- 새로 추가된(untracked) 파일이 없을 때 한정
🔥 실무에서 develop (기준 다름) 을 origin 을 기준으로 개발 feature 브랜치를 따서 개발을 진행한다
실무에서 자주 쓰이는 git 사용법을 알아보자.
여러 branch 만들어보기
💠 Branch : 분기된 가지 (다른 차원)
프로젝트를 하나 이상의 모습으로 관리해야 할 때
- ex) 개발 서버 / qa 서버 / 운영 서버
여러 작업들이 각각 독립되어 진행될 때
- ex) 신기능 1, 신기능 2, 코드개선, 긴급수정 ...
- 각각의 차원에서 작업한 뒤 확장된 것을 메인 차원에 통합
➡ 이 모든 것을 하나의 프로젝트 폴더에서 진행할 수 있도록!
📌 브랜치 생성 / 이동 / 삭제하기
add-coach 란 이름의 브랜치 생성
git branch add-coach
브랜치 목록 확인
git branch
add-coach 브랜치로 이동
git switch add-coach
- checkout 명령어가 Git 2.23 버전부터 switch, restore 로 분리
📌 브랜치 생성과 동시에 이동하기
git switch -c (새브랜치명)
- 기존의 git checkout -b (새 브랜치명)
📌 브랜치 삭제하기
git branch -d (삭제할 브랜치명)
📌 브랜치 이름 바꾸기
git branch -m (기존 브랜치명)(새 브랜치명)
Branch 합치기 ( merge | rebase )
💠 merge 로 합치기
ex) add-coach 브랜치를 main 브랜치로 merge
- main 브랜치로 이동 [git switch main]
- 아래의 명령어로 병합
git merge add-coach
- :wq 로 자동입력된 커밋 메시지 저장하여 마무리
- 소스트리에서 확인
📌 merge 는 reset 으로 되돌리기 가능
merge도 하나의 커밋
merge 하기 전 해당 브랜치의 마지막 시점으로
📌 병합된 브랜치는 삭제
삭제 전 소스트리에서 add-coach 위치 확인
git branch -d add-coach
💠 rebase 로 합치기
ex) new-teams 브랜치를 main 브랜치로 rebase
- new-teams 브랜치로 이동 [git switch new-teams] 💥 merge 때와는 반대!
- 아래의 명령어로 병합
git rebase main
소스트리에서 상태 확인
- main 브랜치는 뒤쳐져 있는 상황
main 브랜치로 이동 후 아래 명령어로 new-teams 의 시점으로 fast-forward
git merge new-teams
new-teams 브랜치 삭제
git branch -d new-teams
6. 브랜치 간 충돌
파일의 같은 위치에 다른 내용이 입력된 상황
feature에서 충돌이 난 경우
- fetch, merge, rebase등 편한 걸 사용한다.
- 충돌이 난 경우 해결한다.
여러 feature를 묶은 브랜치의 해결
- develop에서 변경한 사항을 묶음 브랜치로 가져와서 충돌을 해결한다.
- 해결한 묶음 브랜치를 develop으로 붓는다.
Hotfix 배포
- main, master에서 작업한다.(저희는 staging도 있다)
- 배포한 이후에 동일한 브랜치를 develop에도 merge해준다.(master로 rebase하거나 merge하는게 아님)
// git conflict
git fetch --all
git reset --hard origin/master
git pull origin master
내가 수정한 파일이 conflict 되면 fetch 로 파일들을 remote 저장소에서 이전 fetch 들을 받은 다음
local 에서 다시 reset hard 를 사용하여 내 상태를 conflict 나기 전인 수정하기 전으로 되돌린다.
이후 pull 하면 remote 에서 local 로 정상적으로 다운받아진다.
Origin 최신 변경사항 가져오기
내가 작업 중인 브랜치인 브랜치 A 에서 최신 develop 변경사항을 가져오려면
1️⃣ 로컬 브랜치 A 로 이동
git checkout A
2️⃣ 브랜치 A 를 develop 브랜치로 rebase
git rebase develop
이 명령은 브랜치 A 의 커밋들을 develop 브랜치의 가장 최신 커밋 위로 이동시킨다
3️⃣ push / pull 이 같이 쌓이면?
git push origin A --force
Cherry Pick
ex) 브랜치 A 에서 가장 처음에 커밋한 b60d94b 커밋을 삭제하고 싶다면, **git rebase**를 사용할 수 있습니다. 다음은 해당 작업을 수행하는 단계입니다:
1️⃣ 터미널에서 브랜치A 로 이동
git checkout A
2️⃣ git rebase 명령을 사용하여 b60d94b 커밋을 제외하고 나머지 커밋들을 재배치한다.
git rebase -i b60d94b^
이 명령은 인터랙티브한(rebase interactive) 모드로 들어간다. 편집기가 열리면 커밋 목록이 표시된다.
3️⃣ 편집기에서 b60d94b 커밋을 삭제한다 커밋 목록이 다음과 비슷하게 보일 것이다
// i -> insert 모드 진입
pick b60d94b // 이부분 지운다
pick be0fc6d
pick 63f0e99
// esc -> :wq
4️⃣ 원격 저장소에 강제 푸시
git push origin A --force
이전 커밋 되돌리기
git reset --mixed HEAD^
'frond-end' 카테고리의 다른 글
로그아웃 시 다른 에러 상태 코드 도 같이 보여주는 문제 (axios + vue3) (0) | 2024.03.07 |
---|---|
[CSS] z-index 의 동작방식 (1) | 2024.03.04 |
[typescript] any VS unknown (0) | 2024.02.21 |
CORS (0) | 2023.09.06 |
TDD (Test-Driven Development) (0) | 2023.09.02 |