Git의 명령어

Son_Doobu96·2023년 1월 29일
0

DevOps 이론

목록 보기
11/25
post-thumbnail
post-custom-banner

◎ Git 환경 설정 명령어

  1. 사용자 이름 설정
$ git config user.name "사용자 이름"
  1. 사용자 이메일 주소 설정
$ git config user.email "이메일 주소"
  1. 사용 에디터 설정
$ git config core.editor "사용 에디터"
  1. 설정된 환경 리스트 확인
$ git config --list

#. --global 옵션
사용자 홈에 저장되는 옵션으로 해당 옵션을 사용하게 되면 모든 git프로젝트에서 global 설정된 이름 이메일 등을 사용할 수 있다.

사용예시 : $ git config --global user.name "사용자 이름"

◎ 연결 및 확인 명령어

■ clone :

Remote repository를 내 Local repository로 가져오는 작업

$ git clone <Remote repository 주소>

■ status :

staging area와 untracked files을 확인할 수 있다.
어떤 파일이 충돌하고 있는지를 확인 할 수 있다.

#여기서 잠깐?! track, untracked가 뭘까?
Track : 추적하다. → Git에서 파일의 버전 관리를 위해 해당 파일을 추적하고 있는 '상태'를 의미한다.

◐ Tracked :
한 번이라도 commit을 한 파일의 수정 여부를 계속 추적하는 상태

◐ Tracked area : Git에 의해 관리되는 영역

◐ Untracked :
한 번도 git에서 버전 관리를 하지 않았기 때문에 수정 내역을 추적하지 않는 상태

◐ Untracked area :
Git이 관리하고 있지 않은 영역

■ log :

현재까지 commit 된 내역들을 터미널 창에서 확인할 수 있습니다.

#. --stat 옵션
commit에 관련된 파일까지 함께 기록 확인

■ remote :

Local repository와 연결된 repository들을 보여준다. (이름만)

#. -v 옵션
현재 Local Repository에 연결되어있는 모든 Remote Repository 목록을 확인할 수 있다.

#. remote add
새로운 git repository를 연결한다.

$ git remote add origin <repository 주소>
$ git remote add friend <repository 주소>

#. remote rm
기존에 연결된 git repository를 제거할 수 있다.

$ git remote rm origin
$ git remote rm friend

◎ 생성 및 추가, 수정 명령어

■ init :

작업 공간에 local Git repository를 생성한다.
또는 새로운 Repository를 초기화 하는데 사용된다.

■ add :

untracked한 파일을 staging area로 이동시켜 주는 명령어이다.

$ git add <파일명>

#. add .
모든 untracked한 파일을 staging area로 이동시켜 주는 명령어이다.

■ restore :

commit 되지 않은 Local Repository의 변경 사항을 취소할 수 있다.

$ git restore <파일명>

■ commit :

변경된 사항을 기록할 수 있는 명령어이다. (변경 이력, 변경 주체, 시간)

#. commit -m 'commit messages'
commit messages를 입력할 수 있는 명령어이다. commit messages는 최대한 알아보기 쉽고
정교하게 작성해야 한다.

■ reset :

Local에서 commit한 내용을 취소할 때 사용한다.

$ git reset HEAD^ : 가장 최근의 commit을 취소한다.
$ git reset HEAD^^ : 가장 최근 2개의 commit을 취소한다.
$ git reset HEAD~3 : 가장 최근 3개의 commit을 취소한다.

#. reset에는 3개의 옵션이 있습니다!

■ push :

Local에서 변경, commit된 사항을 Remote Repository에 업로드할때 사용한다.
Push가 끝나면 변경된 사항에 대해 Pull Request를 진행한다.

$ git push origin main

■ pull :

다른 사람의 원격 repository에 있는 변경사항을 내 Local repository로 가져올때 사용한다.

$ git pull friend main

#. Pull 명령어 사용시 발생하는 충돌 상황?

◐ 충돌이 발생하는 이유?
병합 과정에서 동일한 라인에 동류의 내용이 포함되어 있을때 발생하며 충돌 발생시
병합이 되지 않는다.
따라서 충돌 상황을 이해하고 해결 할 수 있어야 한다.

# 충돌 사례 예시
<<<<<<<<<<<
내 소스코드
==========
타인의 소스코드
>>>>>>>>>>>

#. 해결방법?
해결 방법은 의외로 쉽다.
두 소스 코드 모두 정상적으로 작동한다면
두 소스 코드중 한 가지를 취사 선택하여 파일을 수정하는 것으로 충돌을 해결할 수 있다.

이후 add 명령어를 통해 해당 충돌 문제가 해결되었다는 것을 git에 전달해야 하고
충돌상황에서는 자동으로 commit 메시지가 생성되기 때문에 commit 명령어를 통해
생성된 메시지를 기록해야 한다.


◎ Branch

브랜치란 나누어진 각각의 독립적인 작업 영역이다.
branch를 분리함으로써 다른 사람의 작업에 영향을 주지 않고 또 영향을 받지 않는 상태로
안전한 작업을 진행할 수 있다.

즉 Branch란 각각의 '작업 흐름의 단위'라고 생각하면 된다.

◎ Branch 명령어

♠ 생성

  • branch <새로운 브랜치 이름> : <새로운 브랜치 이름>을 가진 브랜치 생성
  • switch –c <새로운 브랜치 이름> : <새로운 브랜치 이름>을 가진 브랜치 생성 후 해당 브랜치로 전환
  • checkout –b <새로운 브랜치 이름> : <새로운 브랜치 이름>을 가진 브랜치 생성 후 해당 브랜치로 전환

♠ 확인

  • branch : 브랜치 목록 확인
  • branch -v : 브랜치 목록과 각 브랜치의 최근 커밋 확인
  • log —branches —graph --decorate : 로그에 모든 브랜치를 그래프로 표현

♠ 삭제

  • branch –d <삭제할 브랜치 이름> : 브렌치 삭제
  • branch -D : 병합하지 않은 브랜치를 강제 삭제

♠ 전환

  • switch <브랜치 이름> : <브랜치 이름>을 가진 브랜치로 전환
  • checkout <브랜치 이름> : <브랜치 이름>을 가진 브랜치로 전환

♠ 병합
병합은 아래의 순서를 따른다.

  1. 병합의 모체가 될 브랜치로 이동한다.

  2. 병합을 진행한다.

$ git switch <병합의 모체가  브랜치 이름>
$ git merge <병합 당할 브랜치 이름>

■ 병합의 방식 3가지

  • fast-foward :
    별도의 커밋을 생성하지 않고 병합하는 방식으로 두 작업이 하나의 브랜치로 이어질때 사용한다.

  • merge commit :
    별도의 커밋을 생성하는 방식으로 두 작업이 하나로 이어지며 브랜치가 하나로 이어진다.
    다만 변경 내용의 이력이 모두 남기에 이력이 복잡해진다.

  • rebase :
    브랜치 통합이 목적이지만 특정 시점으로 브랜치가 가리키는 곳을 변경하는 기능을 한다.


♠ 기타
■ stash
아직 commit하지 않은 작업을 스택에 임시로 저장한다.

profile
DevOps를 꿈꾸는 엔지니어 지망생!
post-custom-banner

0개의 댓글