본문 바로가기

frond-end

GitHub 사용법

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^
728x90
반응형

'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