Web Development

git 명령어 정리

짬짬이기록하기 2023. 10. 29. 18:09
반응형

- git : 버전관리(VCS:version control system) 목적의 소프트웨어, Distribute(분산) VCS환경, 원격저장소를 로컬에 복제
- github : 원격저장 서비스(MS가 인수)
- git Bash : 윈도우OS에서 Git을 위한 명령어(리눅스)를 실행하기 위한 커맨드창

< 로컬저장소의 3개 영역 >
1. Working Directory : 폴더 그 자체 
     git add 
2. Staging Area(Index Area) : 준비영역(임시 저장) commit할 객체를 생성(SnapShot)함, SnapShot 등록
      git commit 
3. Head : 최종 확정본, SnapShot 저장됨, 마지막 커밋 SnapShot

명령어 설명 예시 
git init  로컬저장소 만들기  working directory 생성 후 git 초기화 (master or main 브랜치 생성)
git help  git 명령어 간단 설명  git add --help
git help add  (add에 대한 설명링크 브라우저 띄움)
git add -h (add에 대한 설명을 git bash상에 띄움)
git status 현재 관리 상태 git status 파일명 (파일명의 관리 상태)
git status (현재 폴더의 관리 상태)
git add staging 영역으로 추가 git add . (모든 파일을 add)
git add 파일명 (파일을 add)
git commit Head 영역으로 추가  git commit (vim에디터가 뜸)
git commit -m "commit message"
git log commit log 보기  git log (한 화면단위로 노출, 키보드 q는 빠져나감)
git log --oneline (커밋로그 축약 보기)
git log --oneline --graph --all (그래프로 보기, 브랜치 로그 포함)
git log -n 2 (최신의 2개만 보겠다)
git log --author="사용자name" (사용자이름 필터링 보기)
git log --grep="특정단어" (특정 단어 필터링 보기)
git show commit log 상세보기  git show (변경된 내용까지 확인)
git show 로그식별자번호 (commit hash값)
git show head^ (최신커밋의 바로 전 버전)
git show head^^ (최신커밋의 2개 전, ^는 1개의 로그)
git show head~3 (최신커밋의 3개 전)
git rm  remove 삭제  git rm --cache 파일명 (staging 영역에서 파일을 제거하겠다. working directory에는 남아있음)
git rm 파일명 (working directory의 실제 파일삭제, 단 commited된 파일만 삭제가능, staging영역에 있는 파일은 삭제 안됨, 파일이 삭제됨과 동시에 삭제상태가 스테이지에 add 된다. )
git rm -f (commited되지 않아도 staging되어있는 상태에서도 강제로 실제 파일삭제)
git restore 내용 복구 git restore 파일명 (내용은 이전상태로 복구되고 커밋정보는 그대로 유지)
git restore --source=hash값 파일명 (특정 로그로 복구)
git reset  HEAD를 특정hash로 복원. 특정 로그 이후의 로그 커밋을 삭제 - git reset --hard hash값 (HEAD를 조정하고, 해당 hash값의 working directory도 복구)
git commit --amend 이전 커밋로그로 내용을 합침.  git commit --amend -m "commit message" 
git reflog 삭제된 정보를 포함한 모든 commit 로그 보기,
복구도 가능 
git reflog (*reference log)
git tag  특정 hash에 식별가능한 문자를 추가함
보통은 version을 표기
tag명으로 reset 가능 
git tag v1.0.0
git tag 태그명 hash : 특정 hash에 태그 달기  

vim에디터 
- 입력모드 바꾸기 : 키보드 a 입력 ==> Insert 모드로 변경 
- 명령모드 바꾸기 : 키보드 esc 입력, :wq!(write and quit), 엔터


< Branch >

명령어 설명  예시
git branch  branch 목록 조회 git branch (브랜치명 조회)
git branch -vv (로컬브랜치와 연결된 원격브랜치명 확인)
git branch dev1  dev1 브랜치 생성   
git switch dev1  dev1 브랜치로 이동  git checkout dev1로도 가능
git merge dev1 현재 브랜치에서 dev1을 병합
부모에서 개별브랜치로 병하는 것이 좋다. 
fast-forward merge (부모 브랜치에서 변경된 사항이 없는 경우) : 새로운 커밋없이 Head 이동 
3-way merge (각 브랜치에서 커밋이 일어난 경우) : 새로운 커밋이 만들어지며 Head 이동 
git branch -d dev1 dev1 브랜치 삭제   
git diff  차이점 difference 확인 git diff master dev1 (master,dev1 비교)
git diff hash hash (로그와 로그 비교)
git diff --staged (stage와 head비교)
git stash    커밋 전에 작업을 스택에 잠깐 저장해둠
git remote  원격저장소 관련  git remote  -v: 원격 저장소 목록 상세 조회 
git remote add 원격브랜치명 원격URL(원격URL에 원격브랜치명으로 원격저장소를 등록)
git remote set-url 원격브랜치명 원격URL (재설정)
git remote remove 원격브랜치명 (원격브랜치 연결 삭제)
git remote rename A B (원격브랜치명 A를 B 이름으로 변경) 
git push -u remote명 브랜치명   git push -u origin master (master branch를 origin에 push)
git pull remote명 브랜치명   원격브랜치의 변경사항을 가져오고 병합함 
git fetch  remote의 정보를 가져와서 별도의 브랜치로 저장되고,
로컬과 비교후 받을지 말지 판단 후 받을 거면 merge 명령 (diff and merge)
원격브랜치의 변경 사항을 가져오되 현재 로컬 브랜치에 병합하지 않을 때 fetch를 사용
git config 

--system, --global, --local 3가지  git config --system --unset credential.helper => 저장되어있는 git 인증서 모두 초기화 (관리자권한) (--global, --local 모두 동일 수행)

git config user.name (보기)
git config user.name 사용자명 (사용자명으로 설정)

- .gitignore : 언트랙킹할 파일목록 정의 파일
- git config : git 설정파일, 로컬에 설정한 것이 우선
  1. system (C:/Program Files/Git/etc/gitconfig ) : 관리자권한, 모든 사용자와 모든 저장소에 적용되는 설정 
  2. global (사용자/.gitconfig) : 한 user의 모든 저장소
  3. local (./git/config) : 개별 프로젝트 설정 


< git 생성 및 원격 연동 >
0. 로컬 작업 파일 생성 
1. git init (초기화)
2. git config user.name 사용자명 (local user.name 설정)
3. git config user.email 사용자@email.com (local user.email 설정)
4. git remote add 리모트네임 리모트유알엘
5. git add .
6. git commit -m "message"
7. git push -u <리모트네임> <브랜치네임>
8. git pull <리모트네임> <브랜치네임>


< github >
- github 호스팅 : settings - pages - github pages 
- github 인증키 토큰 발급 : 프로필 - settings - developer settings -  personal access tokens - generate new token
- Contributors(기여자) : 프로젝트를  fork해서 프로젝트에 기여하고자 하는 사람, 프로젝트에 직업 push할 권한은 없다. 
- Collaborator(협업자) : private 프로젝트라면 관리자가 협업자를 등록
- Pull Request(PR)  => merge 요청서
- issue : 이슈게시판
- project : 상황판
- 인증정보 포함한 remote url 형식: https://username(아무거나):토큰키@giturl(https주소,https://지우고붙임)

반응형