oris9

[Git] Github 명령어 정리 본문

Git

[Git] Github 명령어 정리

oris9 2024. 3. 5. 02:31

 

Github 명령어 정리


 

1. 상태확인

git status 현재 git 상태를 확인
git remote -v 현재 origin 되어 있는 repository 알려줌
저장소와 연결되었는지 확인
git branch branch 목록 확인
git ignore Git 버전 관리에서 제외할 파일 목록을 지정하는 파일

 

2. 기본 명령어

git init git 초기 파일 생성 (해당 폴더에서 실행)
git add .
모든 파일들을 git에 추가
git add 파일명 특정 파일을 git에 추가
git commit -m "메세지내용" "메세지내용" 메모를 남기고 commit 실행 (히스토리 생성)
git remote add origin 깃허브주소 origin에 깃허브주소 연동
git push origin 브랜치이름
로컬 브랜치의 변경 사항을 원격 저장소의 브랜치에 푸시

** -u 옵션
-u 옵션은 해당 브랜치를 upstream으로 설정하여, 이후에는 간단히 git push만 입력해도 해당 원격 브랜치로 푸시할 수 있도록 한다.

 

3. branch, pull, merge

** pull이나 merge,  chekout 등을 하기 위해서는 기존의 코드들이 commit 되어있는 상태여야한다.

git clone 깃허브주소 폴더명  깃허브 주소에 있는 소스코드 다운로드 
(폴더명 생략시 자동으로 프로젝트명으로 폴더 생성됨)
 
git pull origin master 마스터 브랜치에서 소스 가져오기(pull)
git pull origin main --allow-unrelated-histories ** --allow-unrelated-histories 옵션
원격 저장소로부터 변경 사항을 가져오는 명령어. --allow-unrelated-histories 옵션을 사용하여, 관련이 없는 히스토리를 허용하고 병합을 수행합니다.
   
git fetch 로컬 레포지토리에서 현재 HEAD가 가리키는 브랜치의 업스트림(upstream) 브랜치로부터 최신 커밋들을 가져옴
(가져오기만 한다는 점에서, 가져와서 머지까지 하는 git pull과는 차이가 있음)
 
git branch 브랜치이름 새로운 브랜치 생성
git branch -d 브랜치이름
브랜치 삭제
git checkout 브랜치이름
브랜치 이동(변경, 전환)

** -b 옵션
새 브랜치를 생성하고 전환
`git checkout -b 브랜치이름`
 
git merge 합칠브랜치이름 현재 체크아웃되어있는 곳에 '합칠브랜치이름'의 브랜치를 병합

**--no-ff 옵션
'브랜치이름'에 존재하는 커밋 이력을 모두 합쳐서 하나의 새로운 커밋 객체를 만들어 merge 한다. 즉, 브랜치에서 따로 작업한 커밋내역을 포함시켜 merge하는 것.
`git merge --no-ff 브랜치이름`
git merge --abort 머지를 하다가 conflict가 발생했을 때, 
일단은 머지 작업을 취소하고 이전 상태로 돌아감
 
git checkout master
git merge --no-ff release-1.2
git tag -a 1.2
'master' 브랜치로 이동한다.
'master' 브랜치에 release-1.2 브랜치 내용을 병합(merge)한다.
병합한 커밋에 Release 버전 태그를 부여한다.
 
 

4. 기타 명령어

git reset 커밋아이디 커밋되지 않은 변경사항 버리거나 커밋 폐기
git reset 파일명 파일 staging 취소
reset 명령어 옵션 --hard
--mixed
--soft
git checkout 커밋아이디 커밋 되돌리기
git checkout 파일명 워킹디렉토리에서 수정한 내용 취소하기(복구불가)
git revert 특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성
(reset하면 리모트레퍼지토리에서 확인이 안되기때문에 revert를 사용)
// 푸시한 커밋 수정하기
(공동 작업시에는 커밋을 재작성하면 협업하는 사람들 사이에서 문제가 발생할 수 있기때문에 주의해야한다.)

git revert

git rebase HEAD~1 -i

git push --force 
푸시한 내용을 수정, 

i를 눌러 편집 모드로 들어간 뒤, 'pick'를 reword'로 바꾼다.
(reword는 내용을 그대로 둔 뒤 커밋 메시지만을 수정하는 명령어이다)

따라서 편집 모등서 맨 앞의 pick를 reword로 수정한 뒤,
esc를 눌러 편집을 종료하고,
:wq!를 입력하고 enter하여 내용을 저장한다.
 
그러면 이전에 push해 놓은 commit message를 수정할 수 있게 된다.

이제 본격적으로 커밋 메시지를 수정하러 들어가서 입맛대로 수정을 한다.
모든 수정이 완료되면 2번에서와 같이 esc -> :wq! -> enter하여 종료.

git push --force 메시지로 덮어씌운다.
수정을 완료했다면 아래를 입력해서 수정된 커밋 메시지를 저장한다.

--force 옵션

 로컬 변경 사항을 고려하지 않고 원격 저장소를 강제로 업데이트

완료 이후에 다시 버전을 확인하러 들어가 보면 원하던 커밋 메시지로 변경된 것을 볼 수 있다.
(SourceTree 기준으로는 '패치'를 통해 업데이트 내역을 바로 받아볼 수 있다.)
 
   
git blame 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지 출력
git reflog 커밋 이력 확인 
   
git stash 작업 내용 저장 (스택으로 저장됨)
git stash list 작업 내용 조회(=스택 살펴보기)
git stash apply 작업 내용의 아이디 작업 내용 적용
(작업 내용의 아이디를 생략하면 가장 최근의 작업 내용이 적용됨)
git stash drop 작업 내용의 아이디 작업 내용 제거
(작업 내용의 아이디를 생략하면 가장 최근의 작업 내용이 제거됨)
git stash pop 작업 내용의 아이디 특정 작업 내용을 적용함과 동시에 그것을 스택에서 제거
(apply+drop ,저장된 작업 내용을 적용하고 나중에 다시 쓸 필요가 없다면 pop을 이용하는게 더 간단하다.)

 

 

 

5. git config (단축어 !)

 

추후 업데이트 예정

git log --decorate --graph

Git 로그를 시각적으로 표시하고, 각 커밋의 브랜치 및 태그를 표시
프로젝트의 커밋 히스토리를 파악하거나 현재 브랜치 구조를 이해하는 데 사용