% git init // 깃 시작하기
% git config --global user.name {이름} // 전역 이름 설정
% git config --global user.email {깃이메일} // 전역 이메일 설정
% git remote add {원격저장소별명} {깃주소} // 깃 원격 저장소 연결
% git pull {원격저장소별명} {브랜치이름} // 업데이트
% git push {원격저장소별명} {브랜치이름} // 업로드
// 맥-윈도우 간 개행문자가 다름으로 인해 텍스트파일 깨지는거 잡아주는 명령
% git config --global core.autocrlf true
% git clone {깃 주소}
% git pull {원격저장소별명} {브랜치명}
% git add {파일명} // 경로에서 .을 입력하면 변경된 모든 파일
% git add -u // 수정되거나 삭제된 파일 반영
% git commit -m“커밋 메세지”
% git commit -a-m”커밋 메세지” // 수정되거나 삭제된 파일만
% git push {원격저장소별명} {브랜치명} // 원격 저장소에 업로드
% git push origin 브랜치명 -f // 경고 무시하고 강제로 push하기
% brew install git-lfs // git-lfs 설치
% git las install // 해당 디렉토리로 이동후
% git rm -r --cached // git add기록이 있다면 unstaging
% git las track “파일명” // 업로드하려는 파일 선택
% git add .gitattributes
% git reset HEAD [파일명] // git add 취소하기
% git reset HEAD^ // git commit 취소하기
% git commit --amend // git commit 메세지 변경
% git init // 현재 폴더에 Git 로컬 저장소 생성 (최초 1회만 생성)
% git status // Git 워킹트리의 상태를 보는 명령
% git status -s // git status 명령보다 짧게 요약해서 상태를 보여주는 명령, 변경된 파일이 많을 때 유용
❗️프롬프트: 끝에 브랜치명이 보인다면 이는 Git 작업 폴더라는 의미
❓워킹트리: 작업 폴더와 같은 말로 사용자가 파일과 하위폴더를 만들고 결과물을 저장하는 곳
우선순위 : 지역 > 전역 > 시스템
--system: pc 전체 사용자를 위한 시스템옵션
--golbal: 현재 사용자를 위한 전역옵션
--local: 현재 git 저장소에서만 유효한 지역옵션
% git config --system core.editor // 기본 에디터 조회
% git config --global {옵션명} // 전역옵션 조회
% git config --global {옵션명} {새로운값} // 전역옵션 지정
% git config --global --unset {옵션명} // 지정 전역옵션 삭제
% git log -n{숫자} // 숫자 만큼의 최신 커밋만 반환
% git log --oneline // 간단히 커밋 해시와 제목만 반환
% git log --oneline --graph --decorate // --graph는 브랜치 흐름 표시, --decorate는 브램치 태그 참조 표시
% git log --oneline --graph --all --decorate // 모든 브랜치를 보고 싶을 때 사용하는 명령
💫Tip) 커밋히스토리에 보이는 앞의 16진수 7자리 숫자는 커밋 체크섬 혹은 커밋 아이디
% git remote add {원격 저장소이름} {원격저장소주소} // 원격 저장소 등록 시 사용
% git remote -v // 원격저장소 목록 반환
% git clone {저장소주소} {새로운폴더명} // 저장소 복제, 폴더명 생략하면 프로젝트 이름으로 폴더 생성,
% git fetch {원격저장소별명} {브랜치이름} // 원격저장소의 브랜치와 커밋들을 로컬 저장소와 동기화
% git merge {브랜치이름} // 지정한 브랜치의 커밋들을 현재 브랜치 및 워킹트리에 반영
% git switch {브램치이름} // 브랜치 변경 (기존에 없는 브랜치인 경우 생성하면서 변경)
% git restore {파일명} // 변경사항 복원 (작업중인 파일을 기존 마지막 커밋상태로 되돌리기)
% git branch [-v] //로컬 저장소 브랜치 목록 조회, [-v옵션 주면 마지막 커밋도 표시]
% git branch [-f] {브랜치이름} {커밋체크섬} // 새로운 브랜치 생성, 커밋체크섬 값 없으면 HEAD*로 부터 브랜치 생성
% git branch -r[v] // 원격저장소에있는 브랜치를 보고싶을 때 사용 [-v옵션 주면 마지막 커밋도 표시]
% git chechout {브랜치이름} // 특정 브랜치로 체크아웃*할 때 사용
% git checkout -b {브랜치이름} {커밋체크섬} // 특정 커밋에서 브랜치 새로 생성과 동시에 체크아웃
% git merge <대상브랜치> // 현재 브랜치와 대상 브랜치를 병합할 때 사용
% git rebase <대상브랜치> // 내 브랜치의 커밋들을 대상 브랜치에 재배치
% git branch -d {브랜치이름} // 브랜치 삭제 (HEAD 브랜치나 병합되지 않은 브랜치는 삭제되지 않음)
% git branch -D {브랜치이름} // 브랜치 강제 삭제
❓HEAD: 현재 작업중인 브랜치의 최근 커밋
❓체크아웃: 브랜치가 가르키는 커밋의 내용을 워킹트리에 반영
% git remote update // 원격 저장소 업데이트
% git branch -r // 원격 저장소 브랜치 확인
% git checkout -t origin {원격 저장소 브랜치이름}
% git reset --hard {이동할커밋체크섬} // 현재 브랜치를 지정한 커밋으로 옮기고 폴더 내용도 함께 변경
% git reset --hard HEAD~{숫자} // n번째 위쪽 조상으로 브랜치 되돌리기
% git reset HEAD^ //바로 이전 커밋으로 돌아감
% git reset HEAD^2 //병합 커밋처럼 부모가 둘 이상인 커밋에서 두번째부모 지칭
% git revert {커밋체크섬} //해당 커밋만 삭제하는 커밋을 생성 (최신커밋부터 취소하는 것이 좋음)
% git revert --no-commit {커밋체크섬} // revert한 결과를 commit하지 않기 위한 옵션 이후 git commit -m "어떤 커밋을 왜 리버트했는지 메모" 한 뒤 git push 하는 것이 좋다.
% git tag -a -m {간단한 메세지} {태그이름} {브랜치 or체크섬} // -a로 주석이 있는 태그 생성(브랜치, 체크섬 생략하면 HEAD에 태그 생성)
% git push {원격저장소별명} {태그이름} // 원격 저장소에 태그 업로드
참고 : https://github.com/choiyun9yu/OperatingSystem/blob/main/Git.md
미션 저장소 Fork 하기
간단하게 미션 저장소를 복사하는 과정입니다.
저장소 우측 상단의 'Fork' 를 눌러줍니다.
그러면 자신의 저장소에 새로운 저장소가 생깁니다.
우리는 이 저장소에 새로운 브랜치를 만들어 코딩하면 됩니다!
fork한 저장소 clone 하기
원격 저장소의 소스 코드를 본인 컴퓨터로 옮기는 과정입니다.
mac 기준 터미널에서 아래 명령어를 입력합니다.
git clone https://github.com/{본인 아이디}/{저장소 아이디}.git
제 경우엔 아래처럼 할 수 있습니다.
git clone https://github.com/junseoparkk/java-onboarding.git
새로운 브랜치 생성하기
fork한 저장소엔 아마 main 브랜치만 있을텐데, 자신의 브랜치를 만들고 이곳에 커밋을 해야 합니다.
저는 여기서부터 IntelliJ 터미널에 작성합니다.
git branch {브랜치명}
ex) git branch junseoparkk
그리고 해당 브랜치로 이동하기 위해선
git checkout {브랜치명}
명령어를 사용하시면 됩니다.
원격 저장소에 initial commit 하기
우선 main 브랜치가 아닌, 새로 만든 브랜치를 원격 저장소에 올려주어야 합니다.
(만약 다른 브랜치라면 새로 만든 브랜치로 이동해야 합니다.)
이 때 다음 명령어를 사용합니다.
git push origin {브랜치명}
ex) git push origin junseoparkk
add, commit, push
만약 코드를 작성하고 원격 저장소에 올리고 싶다? 아래 순서대로 명령어를 입력하시면 됩니다.
git add {파일명}
git commit -m "커밋 메시지"
git push [-u] origin {브랜치명}
자주 사용하는 명령어 정리
클론 :
git clone https://github.com/{본인 아이디}/{저장소 아이디}.git
푸시 :
git push origin {브랜치명}
브랜치 목록 (현재 브랜치는 *로 표시) :
git branch
브랜치 생성 :
git branch {브랜치명}
브랜치 삭제 :
git branch -d {브랜치명}
브랜치 이동 :
git checkout {브랜치명}
변경 파일을 모두 스테이징 영역에 추가 :
git add .
특정 파일을 스테이징 영역에 추가 :
git add {파일명}
커밋 :
git commit -m "커밋 메시지"
최근 커밋 메시지 수정 :
git commit --amend
커밋 로그 확인 :
git log
상태 확인 :
git status
변경 내용 확인 :
git diff