1.git init
Git 저장소 초기화
- --bare: 워킹 디렉토리 없이 리포지토리만 생성하는 옵션이다
- -q 또는 --quiet: 명령어 실행 시 출력을 억제하는 옵션이다
- --shared[=<permissions>]: 리포지토리의 공유 권한을 설정하는 옵션이다 (group, all, umask 등이 가능하다)
2.git clone <repository_url>
새로운 원격 저장소 추가
- --depth <depth>: 복제할 깊이를 지정합니다. 즉, 히스토리를 얼마나 가져올지 결정합니다.
- --branch <branch>: 특정 브랜치를 복제합니다.
- --single-branch: 하나의 특정 브랜치만 복제합니다.
- --recurse-submodules: 서브모듈도 함께 복제합니다.
3.git remote
원격 저장소 관련 작업을 수행할 때 사용된다.
- add <name> <url>: 새로운 원격 저장소를 추가합니다.
- remove <name>: 지정한 이름의 원격 저장소를 제거합니다.
- rename <old-name> <new-name>: 원격 저장소의 이름을 변경합니다.
- show: 현재 설정된 모든 원격 저장소를 보여줍니다.
- set-url <name> <new-url>: 지정한 원격 저장소의 URL을 변경합니다.
4.git fetch
원격 저장소의 최신 변경 사항 가져오기
( 최신 변경 내용만 다운로드할 뿐 로컬 복사본과 병합하지않는다.)
- <remote>: 특정 원격 저장소에서 변경 사항을 가져옵니다.
- <branch>: 특정 브랜치에서 변경 사항을 가져옵니다.
- --all: 모든 원격 저장소에서 변경 사항을 가져옵니다.
- --tags: 태그를 가져옵니다.
5.git pull
원격 저장소에서 변경 사항을 가져오고 병합하기
(변경 내용을 로컬 복사본과 자동으로 병합)
- <remote>: 가져올 원격 저장소를 지정합니다.
- <branch>: 가져올 원격 브랜치를 지정합니다.
- --rebase: 가져오기 전에 리베이스를 수행합니다.
- --ff-only: Fast-forward 병합만 허용합니다.
6.git push
로컬 변경 사항을 원격 저장소로 푸시하기
- <remote>: 푸시할 원격 저장소를 지정합니다.
- <branch>: 푸시할 로컬 브랜치를 지정합니다.
- -u <remote> <branch>: 원격 브랜치에 로컬 브랜치를 연결하고 푸시합니다.
- --force 또는 -f: 강제 푸시하여 충돌을 무시합니다.
7.git branch
브랜치 목록 보기
- -a: 로컬 브랜치와 리모트 브랜치 모두를 보여줍니다.
- -r: 리모트 브랜치만 보여줍니다.
- -v: 각 브랜치의 마지막 커밋 메시지도 함께 보여줍니다.
8.git checkout
특정 브랜치로 이동
- <branch>: 특정 브랜치로 이동합니다.
- -b <new-branch>: 새로운 브랜치를 생성하고 그 브랜치로 이동합니다.
- -: 이전 브랜치로 이동합니다.
- <commit>: 특정 커밋의 상태를 확인합니다 (뒤로 빠져나가기 위해).
- -vv: 로컬 브랜치와 연결된 원격 브랜치 정보 보기
9.git add
작업 디렉토리에서 변경된 파일을 스테이징 영역에 추가하는 데 사용
- . : 모든 변경된 파일을 스테이징 영역에 추가합니다.
- <file>: 특정 파일을 스테이징 영역에 추가합니다.
- -A 또는 --all: 모든 변경 사항을 스테이징 영역에 추가합니다.
- -p 또는 --patch: 변경 사항을 부분적으로 스테이징 영역에 추가할 수 있게 합니다.
10.git commit
스테이징 영역에 있는 변경 사항을 로컬 저장소에 커밋하는 데 사용
- -m "<message>": 커밋 메시지를 인라인으로 작성합니다.
- -a: 모든 변경 사항을 자동으로 스테이징하고 커밋합니다.
- --amend: 이전 커밋을 수정합니다.
- --no-edit: 커밋 메시지를 수정 없이 이전 커밋을 재사용합니다.
11.git reset
작업 디렉토리와 인덱스(스테이징 영역)를 조정하는 데 사용
- --soft <commit>: 지정한 커밋까지 되돌아가지만 변경 사항은 유지한 채로 스테이징 영역으로 되돌립니다.
- --mixed <commit>: 지정한 커밋까지 되돌아가고, 스테이징 영역의 변경 사항을 유지하지만 인덱스에서 취소합니다. 기본값입니다.
- --hard <commit>: 지정한 커밋까지 되돌아가고, 모든 변경 사항을 삭제하여 작업 디렉토리와 스테이징 영역을 해당 커밋 상태로 만듭니다.
- HEAD: 최신 커밋을 가리키는 기본적인 명령어입니다
12.git revert
이전 커밋을 되돌리는 데 사용
- <commit>: 되돌릴 커밋을 지정합니다.
- --no-commit: 변경 사항을 스테이징 영역에만 추가하고 커밋을 생성하지 않습니다.
- -m <parent-number>: 메르지 커밋에서 변경 사항을 되돌릴 때, 부모 번호를 지정합니다.
- --strategy <strategy>: 충돌 시 사용할 전략을 지정합니다. (recursive, resolve, ours, theirs 등)
- --mainline <parent-number>: 메르지 커밋에서 변경 사항을 되돌릴 때, 주요 라인을 지정합니다.
- --abort: 현재 진행 중인 revert 작업을 취소합니다.
- --quit: revert 시퀀스를 종료하고 헤드를 복구합니다.
- --continue: 충돌을 해결한 후 revert를 계속합니다
13.git cherry-pick
다른 브랜치에서 특정 커밋을 현재 작업 중인 브랜치로 가져오는 데 사용
- <commit>: 가져올 커밋의 해시값을 지정합니다.
- -m <mainline>: 메르지 커밋의 주요 라인을 지정합니다.
- -n 또는 --no-commit: 커밋을 하기 전에 작업을 스테이징 영역에만 추가합니다.
- -e 또는 --edit: 커밋 메시지를 편집할 수 있도록 편집기를 엽니다.
- -x: cherry-pick으로 가져온 커밋의 원본 해시값을 커밋 메시지 끝에 추가합니다.
14.git status
현재 작업 디렉토리와 인덱스(스테이징 영역)의 상태를 보여준다.
- -s 또는 --short: 간결하게 상태를 요약하여 보여줍니다.
- -b 또는 --branch: 현재 브랜치에 대한 추가 정보를 포함하여 상태를 보여줍니다.
15.git diff
변경 사항을 비교하고 확인하는 데 사용
- <commit>: 특정 커밋과 현재 작업 디렉토리 간의 차이를 보여줍니다.
- <commit>..<commit>: 두 커밋 간의 차이를 비교합니다.
- --staged 또는 --cached: 스테이징 영역에 있는 파일들과 최신 커밋 간의 차이를 보여줍니다.
- --name-only: 변경된 파일 이름만 표시합니다.
- --name-status: 변경된 파일의 이름과 상태를 표시합니다 (추가, 수정, 삭제 등).
- --color: 컬러 출력을 사용하여 변경 사항을 강조합니다.
- --word-diff: 단어 단위로 변경 사항을 비교합니다.
16.git log
저장소의 커밋 히스토리확인
- --oneline: 각 커밋을 한 줄로 요약해서 보여줍니다.
- --decorate: 각 커밋의 참조(브랜치나 태그)를 함께 보여줍니다.
- -n <num>: 최신 <num> 개의 커밋만 보여줍니다.
- --author=<pattern>: 지정된 저자와 관련된 커밋만 표시합니다.
- --since=<date>: 특정 날짜 이후의 커밋만 표시합니다.
- --until=<date>: 특정 날짜 이전의 커밋만 표시합니다.
- --grep=<pattern>: 커밋 메시지에서 지정된 패턴을 포함하는 커밋만 표시합니다.
- --graph: 각 커밋 사이의 브랜치 그래프를 그립니다.
17.git show
특정 커밋이나 객체의 세부 정보를 보여준다.
- <commit>: 특정 커밋의 변경 내용과 메타 데이터를 보여줍니다.
- --name-only: 커밋에 포함된 파일 이름만 보여줍니다.
- --name-status: 커밋에 포함된 파일 이름과 상태(추가, 수정, 삭제 등)를 보여줍니다.
- --patch 또는 -p: 커밋의 변경 사항을 패치 형식으로 보여줍니다.
- --stat: 각 파일의 수정된 통계를 한 줄로 요약해서 보여줍니다.
- --graph: 커밋과 그래프로 렌더링 된 태그
18.git blame
파일의 각 라인이 어떤 커밋에서 추가되었는지, 누가 마지막으로 수정했는지를 확인하는 데 사용
변경 이력을 추적하고, 각 라인의 소유자를 찾는 데 유용
- <file>: 추적할 파일을 지정합니다.
- -L <start>,<end>: 특정 라인 범위 내에서만 변경 이력을 확인합니다.
- -C 또는 --find-copies-harder: 파일 내에서 복사된 코드도 추적합니다.
- -M 또는 --find-renames: 파일 내에서 이름이 변경된 코드도 추적합니다.
- -w 또는 --ignore-space-at-eol: 라인 끝의 공백 문자를 무시합니다.
- -p 또는 --porcelain: 머신 판독 가능한 형식으로 출력합니다.
19.git stash
현재 작업 디렉토리의 변경 사항을 임시로 저장하고, 깨끗한 작업 디렉토리 상태로되돌린다.
- save: 변경 사항을 스택에 임시로 저장합니다.
- list: 저장된 stash 목록을 보여줍니다.
- pop: 가장 최근 stash를 꺼내와 적용하고, stash 목록에서 제거합니다.
- apply: 가장 최근 stash를 꺼내와 적용하지만, stash 목록에서 제거하지 않습니다.
- drop: 가장 최근 stash를 삭제합니다.
- clear: 모든 stash를 삭제합니다.
20.git tag
특정 커밋에 태그를 붙이거나 태그 관리를 할 때 사용
- <tag>: 태그 이름을 지정하여 특정 커밋에 태그를 붙입니다.
- -a <tag> -m "<message>": 주석이 달린 태그를 생성합니다.
- -d <tag>: 지정된 태그를 삭제합니다.
- -l <pattern>: 패턴에 맞는 태그 목록을 보여줍니다.
- -v <tag>: 태그에 대한 세부 정보를 보여줍니다.
21.git clean
작업 디렉토리에서 추적되지 않은 파일을 제거
- -n 또는 --dry-run: 실제로 파일을 삭제하지 않고 어떤 파일들이 제거될 것인지 미리 보여줍니다.
- -f 또는 --force: 추적되지 않은 파일을 강제로 삭제합니다.
- -d: 추적되지 않은 디렉토리도 함께 삭제합니다.
- -i 또는 --interactive: 대화형 모드로 파일을 선택적으로 삭제할 수 있습니다.
- -x 또는 --remove: .gitignore 파일에 지정된 파일도 삭제합니다.
22.git config
Git의 설정을 관리하는 데 사용
- --global <key> <value>: 전역 Git 설정을 변경하거나 추가합니다.
- --local <key> <value>: 현재 저장소의 로컬 Git 설정을 변경하거나 추가합니다.
- --unset <key>: 지정된 설정 키를 삭제합니다.
- --get <key>: 지정된 설정 키의 값을 가져옵니다.
- --list: 모든 설정을 나열합니다.
23.git grep
Git 저장소 내에서 특정 패턴이 포함된 파일을 검색하는 데 사용
- <pattern>: 검색할 패턴을 지정합니다.
- --ignore-case: 대소문자를 구분하지 않고 검색합니다.
- -i: 대소문자를 구분하지 않고 검색합니다.
- --word-regexp: 정확한 단어 매칭을 위해 정규 표현식을 사용합니다.
- -w: 정확한 단어 매칭을 위해 검색합니다.
- --extended-regexp: 확장된 정규 표현식을 사용하여 패턴을 검색합니다.
- --line-number: 검색 결과에 라인 번호를 포함하여 출력합니다.
- --all-match: 모든 검색 결과를 표시합니다.
'GIT,GITHUB' 카테고리의 다른 글
[Github] 리포지터리(Repository) (0) | 2024.07.10 |
---|---|
[GITHUB] 깃허브를 저장소로 사용하기,외부에서 불러오기(githubusercontent) (0) | 2024.07.06 |
[GIT] 좋은 commit message (0) | 2024.06.17 |