oris9
[Git] Github 명령어 정리 본문
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 로그를 시각적으로 표시하고, 각 커밋의 브랜치 및 태그를 표시
프로젝트의 커밋 히스토리를 파악하거나 현재 브랜치 구조를 이해하는 데 사용
'Git' 카테고리의 다른 글
[Git] merge 외의 branch를 합치는 또 다른 방법 Rebase와 Squash (0) | 2024.03.20 |
---|---|
[Git] 좋은 commit 작성과 commit관련 명령어들 (0) | 2024.03.20 |
[Git] ISSUES, PR(pull request)에 대해 알아보기 (0) | 2024.03.07 |
[Git] Git flow? Github flow? (1) | 2024.03.06 |
[Git] Please enter a commit message to explain why this merge is necessary, especially if it merges an updated upstream into a topic branch (0) | 2024.03.04 |