험난한 깃허브 여행이 시작되었습니다 ^ㅅ^
학습시간 09:00~02:00(당일17H/누적841H)
내가 보려고 만든 Git & GitHub 명령어 모음
# 터미널 화면만 깔끔하게 정리
clear
# 로컬 Git 저장소 초기화 (.git 폴더 삭제)
rm -rf .git
# 현재 디렉토리의 모든 일반 파일과 폴더 삭제
rm -rf *
# 숨김 파일 및 폴더 삭제 (.gitignore 등 포함)
rm -rf .*
# 특정 파일 삭제
rm hello.txt
# 특정 폴더 삭제
rm -rf test-folder/
# Git 사용자 이름 전역 설정 제거
git config --global --unset user.name
# Git 사용자 이메일 전역 설정 제거
git config --global --unset user.email
# Git 전역 설정 파일 자체 삭제
rm ~/.gitconfig
# Git 자격증명 캐시 종료
git credential-cache exit
# Git 자격증명 캐시 설정 제거
git config --global --unset credential.helper
# 새 Git 저장소 생성
git init
# 파일 상태 확인
git status
# 변경 파일 스테이징
git add filename.txt
git add .
# 커밋 생성
git commit -m "메시지"
# 커밋 수정
git commit --amend
# 파일 변경점 비교
git diff
# 스테이징된 파일과 커밋 간 비교
git diff --cached
# 커밋 로그 보기
git log
git log --oneline
git log --graph --oneline --all
# 파일 추적 해제 (삭제 X)
git rm --cached filename.txt
# 파일 삭제 + 추적 제거
git rm filename.txt
# 파일 이름 변경
git mv old.txt new.txt
# 브랜치 목록 보기
git branch
# 원격 브랜치까지 모두 보기
git branch -a
# 브랜치 생성
git branch new-branch
# 브랜치 생성 + 바로 이동
git checkout -b new-branch
# 브랜치 전환
git checkout main
# 브랜치 삭제 (병합된 경우만 가능)
git branch -d old-branch
# 브랜치 강제 삭제 (병합 안 돼도 삭제)
git branch -D old-branch
# 브랜치 이름 변경 (현재 브랜치에서 실행)
git branch -m new-name
# 브랜치 병합 (현재 브랜치 기준으로)
git merge branch-name
# 병합 충돌 발생 시 병합 중단
git merge --abort
# 병합 대신 리베이스 시작
git rebase branch-name
# 리베이스 중 충돌 해결 후 계속 진행
git rebase --continue
# 리베이스 중단
git rebase --abort
# 브랜치 차이점 확인
git diff main..feature
# 커밋 그래프 확인 (브랜치 흐름 시각화)
git log --oneline --graph --all --decorate
# 깃허브 레포지토리 복제
git clone https://github.com/팀이름/프로젝트.git
cd 프로젝트
# 작업 전 항상 최신 상태 동기화
git checkout main
git pull origin main
# 새 브랜치 생성 및 이동 (기능 단위 작업)
git checkout -b feature/login-ui
# 코드 작업 후 변경 확인
git status
git diff
# 변경사항 스테이징 및 커밋
git add .
git commit -m "로그인 UI 레이아웃 구현"
# 원격 브랜치로 푸시
git push -u origin feature/login-ui
# GitHub에서 Pull Request(PR) 생성 → 팀원 리뷰 요청
# 팀원이 merge하기 전, 최신 main 반영하기
git checkout feature/login-ui
git fetch origin
git rebase origin/main # 내 브랜치에 최신 main을 덮어씌움
# 충돌 발생 시 수동 해결 후:
git add .
git rebase --continue
# PR 승인 후 병합 → main으로 이동
git checkout main
git pull origin main
# 작업 브랜치 정리
git branch -d feature/login-ui
git push origin --delete feature/login-ui
팀원 PR 리뷰할 때 체크할 것
동시 작업 시 주의사항
❗ git merge 안 될 때
# [1] 병합하려고 했는데 충돌(conflict)이 발생한 경우
# 에러 메시지: "Automatic merge failed; fix conflicts and then commit the result."
# 해결 방법:
git status # 어떤 파일에 충돌이 났는지 확인
# 충돌 파일 열어서 직접 수정 (<<< >>> 표시 있는 부분 수정)
git add 충돌해결한파일들
git commit -m "병합 충돌 해결"
# [2] 병합 도중 중단하고 싶을 때
git merge --abort # 병합 전 상태로 되돌림 (단, 아직 커밋 전일 때만 가능)
# [3] 병합 전에 main이 최신이 아닌 경우
git checkout main
git pull origin main # 최신 상태 반영
# [4] 내 브랜치가 너무 오래된 상태일 때 → rebase로 최신화
git checkout 내브랜치
git fetch origin
git rebase origin/main
# 충돌 발생 시:
git status
# 수정 → add →
git rebase --continue
# [5] fast-forward 병합만 허용되어 있어서 병합 안 되는 경우
# (보통 깃허브에서 PR merge policy 때문)
# → main에서 새 브랜치 만들고, 최신화 후 rebase → PR 재작성
# [6] 병합이 안 되는 정확한 이유 모를 때
git status
git log --oneline --graph --all
# 위 두 명령어로 현재 브랜치 상태와 병합 지점 확인
# [1] vi 에디터로 파일 열기
vi filename.txt
# [2] vi 모드 기본 조작
# 입력 모드 전환
i # 현재 커서 위치에서 입력 시작
a # 커서 다음 위치부터 입력
o # 아래 줄에 새 줄 추가 후 입력
# 명령 모드 (ESC 누르고 아래 조작)
:w # 저장
:q # 종료
:wq # 저장 후 종료
:q! # 저장 없이 강제 종료
dd # 한 줄 삭제
yy # 한 줄 복사
p # 붙여넣기
# [3] Git 커밋 메시지를 vi로 수정할 때
git commit --amend
# 또는 충돌 해결 후 커밋 시 vi가 뜸 → 위 조작 사용
# [4] 커밋 메시지를 편집기 없이 직접 쓰고 싶을 때
git commit -m "메시지 내용"
# [5] Git이 vi가 아니라 nano나 다른 편집기를 여는 경우
git config --global core.editor "vim" # 기본 에디터를 vi로 설정
# [6] 터미널 내에서 파일 빠르게 확인 (수정은 아님)
cat filename.txt # 내용 출력만
less filename.txt # 페이지 단위로 보기
head filename.txt # 앞쪽 10줄 보기
tail filename.txt # 뒤쪽 10줄 보기
# [1] 실수한 커밋 되돌리기 (작업은 그대로 보존)
git reset --soft HEAD~1
# [2] 실수한 커밋 + 스테이징까지 되돌리기
git reset --mixed HEAD~1
# [3] 커밋도 스테이징도 전부 없애기 (파일만 남음)
git reset --hard HEAD~1
# [4] 특정 파일만 이전 커밋 상태로 되돌리기
git checkout HEAD -- filename.txt
# [5] 작업 중인 코드 임시로 저장 (stash)
git stash
# [6] 저장한 stash 다시 꺼내기
git stash apply
# [7] 여러 개 stash 중 특정 stash 보기
git stash list
git stash show stash@{0}
# [8] 과거 커밋으로 이동 (checkout은 읽기 전용)
git checkout 커밋ID
# [9] 커밋 되돌리기 (되돌린 기록도 남음)
git revert 커밋ID
# [10] .gitignore 수정 후 바로 반영
git rm -r --cached .
git add .
git commit -m ".gitignore 적용"
# [11] 자주 쓰는 상태 확인 세트
git status
git log --oneline
git branch
git remote -v
####################
## 셋팅
####################
# 팀프로젝트 불러오기
git clone 링크
cd 폴더명
# 브랜치 생성
git checkout -b feature/login
####################
## 파일 관련
####################
# 파일 생성
echo "# 아래 내용을 먼저 읽어주세요." > README.md
# 파일 수정
vi README.md
# 파일 확인
ls -al
# 파일 삭제
rm -f README.md
####################
## 깃허브 관련
####################
# Git 스테이징 & 커밋
git add README.md
git commit -m "README.md 작성 완료"
git push -u origin feature/login
####################
## 신규 브랜치 끼워넣기
####################
git checkout main # main 브랜치로 이동
git pull origin main # GitHub의 main 다운로드
git checkout -b develop # 브랜치 생성 및 이동
git push -u origin develop # 브랜치 GitHub에 업로드
git checkout feature/login # 작업 중이던 위치로 복귀
git fetch origin # GitHub 변경사항으로 패치
git rebase origin/develop # 내 브랜치를 origin/develop 위에 올림
git add . # rebase 충돌 시 수정내역 확인 [문제 직접 확인 필요]
git rebase --continue # 충돌 해결 후 재시도
# 이후 GitHub 홈페이지 가서 PR 진행
# 시간을 되돌리는 방법
git rebase -i --root
# 내 로컬에서 충돌 수정
git checkout 내브랜치명
git pull origin main
git add README.md
git commit -m "내용"
git push -u origin 내브랜치명