[Git] Git 명렁어 모음
글 작성자: 망고좋아
반응형
🎯 Git
- Git은 오픈 소스이다.
- 분산 버전 관리 시스템이다.
- 여러 사람과 효율적인 협업을 가능하게 한다.
📝 Git Life Cycle
📝 Git 사용자 정보 설정
- 저장소 코드를 반영할 때 등록될 사용자 정보를 설정
git config --list
: 설정 정보 확인git config --global user.name "xxx"
: name 설정git config --global user.email "xxx@xxx.xx"
: email 설정
📝 Git 저장소 생성
git init
: 기존의 디렉토리를 git repository로 설정- git을 사용할 프로젝트 폴더로 이동후 git init 명령어 실행
📝 Git 파일 생성
git add
: 파일을 준비 영역으로 보내기git add test.js
git add .
: 디렉토리의 모든 변경 내용을 준비 영역으로 넘기기
📝 Git 저장소 반영
- staging에 있는 파일들을 메시지를 남겨 저장소에 저장하는 작업
git commit
git commit -m "commit message"
git commit —amend
: 가장 최근 commit의 메시지에 오타가 있거나 누락된 파일이 있을 경우 수정.git commit --amend -m "수정할 커밋 메시지"
순서 요약
git init
git add xx.xxx
git commit -m "message"
📝 Git 관리 상태 확인
git status
: staging file들의 상태 확인git log
: commit history 확인, 저장소 반영 내역을 확인하는 명령어git diff
: commit 된 파일 중 변경된 사항을 비교할 때- status에는 준비 영역, 파일이 수정되었지만 준비 영역에 없다, 준비 영역에 없다. 이렇게 나뉜다. 준비 영역은 add가 된 상태이다.
📝 Git Branch
- 독립적으로 어떤 작업을 진행하기 위한 개념
- 각각의 branch는 다른 branch의 영향을 받지 않음
깃 브랜치 종류
- 메인 Branch : 배포할 수 있는 수준의 안정적인 브랜치
- 토픽 Branch : 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치
git branch
: 현재 branch 확인git branch branchName_feature
: 브랜치 생성git branch -m 브랜치이름 바꿀브랜치이름
: 브랜치 이름 변경git checkout branchName
: branch 전환git checkout s92s12(snapshot_hash)
: snapshot을 넘나들 때도 사용 가능. 즉, 과거의 파일 내용을 확인할 수 있다.git checkout -b 브랜치이름
: 브랜치 생성과 동시에 이동
📝 Git merge
git checkout branchName
: 해당 브랜치로 이동git merge like_feature
: 해당 브랜치에서 like_feature 브랜치 병합git branch -d branch_name
: 브랜치 삭제- topic 브랜치는 기능 개발이나 작업이 끝나면 삭제하는 것이 일반적이다.
순서 요약
git checkout master
git merge add_app
git branch -d add_app
📝 Git 원격 저장소 받아오기
git clone
: 기존의 git repository를 복사하는 것git clone 원격저장소주소
git remote add origin 원격저장소주소/그룹명/프로젝트명
: 원격 저장소 연결git remote
: 현재 프로젝트에 등록된 리모트 저장소를 확인git remote show origin
: 모트 저장소의 구체적인 정보를 확인git remote rename origin git_test
: 원격 저장소 이름 변경, origin에서 git_test로 변경git remote rm git_test
: 주소가 변경되었거나, 필요 없어진 저장소 삭제
- git clone명령어를 실행하면 현재 폴더 내에 새로운 폴더를 하나 더 생성한다.
- 현재 위치해 있는 폴더가
myproject
라고 한다면git clone
으로 생성된 폴더는myproject/"test"
로 생성된다.myproject
는 저장소가 아닌 상태이다. - 만약
myproject
폴더를 저장소로 쓰고 싶다면git clone
명령의 마지막에.
을 찍어주면 된다.
📝 Git 원격 저장소 동기화
git pull 원격저장소명 원격브랜치명
: 원격 저장소에서 데이터 가져오기(fetch) + 병합(Merge)- 즉, 원격 저장소에서 데이터를 가져와 로컬 데이터와 병합
git pull origin master
: origin(원격 저장소)의 master(원격 브랜치) 코드를 fetch해서 merge
fetch
: 원격 저장소에서 데이터 가져오기git log origin/master
→git merge origin/master
git push 원격저장소명 로컬브랜치명
: 원격 저장소에 코드 업로드- 로컬 저장소에서 작업한 내용을 원격 저장소에 반영한다.
- 다른 사람이 먼저 push한 상태에서는 push 할 수 없다.
- 다른 사람이 작업한 것을 merge부터 해주기
git push origin master
: origin(원격 저장소)에 master(브랜치) 코드 전송
요약
git remote add origin(또는 다른 원격저장소 이름)
으로 로컬 저장소와 연결git fetch
또는git pull
을 이용하여 원격 저장소의 내용을 동기.- fetch를 실행한 경우 git merge origin/master로 병합을 완료해준다.
git push origin master
를 이용하여 변경된 사항을 원격 저장소에 전달pull
은 로컬 저장소에 있는 master를 자동으로 원격 저장소에 있는 내용과 합쳐주는 역할을 수행한다.
📝 Git rebase
- rebase는 브랜치가 너무 많아져서 history정리가 필요한 상황에 사용한다.
- 그래프를 선형으로 만든다.
- rebase는 공통된 부모까지의 commit을 가져와 원하는 브랜치 옆에 이어 붙인다.
요약
git rebase master
- 현재 위치해 있는 브랜치의 commit부터 master의 공통된 부모 전까지의 commit을 master 옆에 이어 붙인다는 의미
📝 conflict 해결
- merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
- git status로 어느 파일에서 충돌이 발생했는지 확인할 수 있다.
- 다시 충돌이 일어난 파일에 git add, git commit 과정을 거쳐 다시 merge
- 충돌을 방지하기 위해서는 master branch의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거해준다.
📝 취소
git reset finaname.xxx
: 커밋 취소git reset — merge
: merge 취소
반응형