2022.01.15 TIL

이예슬·2022년 1월 17일
0

TIL

목록 보기
5/14

오늘은 온라인 수업!
어제 실시간 수업 실습 때 나왔던 내용인데 오늘 온라인 강의에서 다시 한 번 배웠다.
git은 그냥 코드를 올리면 되는 줄 알았는데 git을 쓰는 방법이 이렇게 어려울 줄이야 ㅠㅠ 심지어 이정도는 기본이고 더 공부해야할 것 같다!!


Git

Git이란?

-> git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
-> git을 이용하면 한 파일에 동시에 여러명의 개발자가 접근하여 수정할 수 있고 누가 어느 부분을 수정했는지 확인하기 용이하므로 효율적으로 협업을 할 수 있고 버전관리가 쉽다.

Git 특징

  1. Branch와 Merge
    여러가지 작업을 동시에 할 때 작업이 섞이면 안되는 경우도 있는데 이 경우 사용자는 main 코드에서 독립성을 유지한 채 다른 branch로 나가 개발할 수 있다. 기능 단위로 작업 가능!
  1. 가볍고 빠르다.
    네투워크에 항상 접속해 있을 필요 없이 다른 사람과 코드를 공유할 때만 중앙서비스에 접속하면 되므로 네트워크 속도와 관계없이 사용 가능하다.

  2. 분산 작업
    개발자들은 개발만 하고 통합 관리자를 따로 두어 통합과정만 따로 진행할 수 있다

  3. 데이터 보장
    모든 파일은 체크섬이라는 과정을 거쳐야 한다. 체크섬은 16진수 문자열로 이루어지고 이를 commit ID라고 부르며 이 아이디가 같은 것은 파일 또는 구성이 완전히 같다는 의미로 이를 통해 누가 어느 파일을 관리하는지 확인이 유용하다.

  4. 준비영역 (Staging area)
    수정한 내용을 repository에 반영하기 전 검토하는 단계인 staging area가 있다.

  5. 오픈소스
    git은 오픈소스다!
    git 호스팅 서비스(원격 저장소)는 github, gitlab, bitbucket이 있다.

Git 초기 설정

git --version: 설치된 git 버전 확인

  • 사용자 정보 설정: 저장소에 코드를 반영할 떄 등록될 사용자 정보를 설정한다.
    git config --global user.name "name"
    git config --global user.email
    -> 프로젝트마다 다른 사용자 정보를 지정하고 싶으면 저장소 생성 후 global 옵션을 빼고 실행하면 된다!
    git config: 설정 정보 확인

Git 저장소에 반영하기

git에는 working directory, staging area, repository가 있다.
untracked: staging 되지 않은 파일
modified: commit된 파일 중 수정된 파일이 있을 경우

  • git add <file_name> : 새로운 파일 생성
    working directory -> stage area
  • git commit -m "message" : 저장소
    staging area -> repository
    -m 을 이용해 반영한 내용을 나중에 알기 쉽도록 메세지 작성 가능!
    생략도 가능!
    -> git commit --amend : 메세지 내용 수정
  • git status: staging file들의 상태 확인

  • git log : git repository에 존재하는 history 확인

  • 대표적인 log 옵션들
    -p, --patch: 각 commit의 수정 결과를 보여주는 diff와 같은 역할을 수행한다.
    -n: 상위 n개의 commit만 보여준다.
    --stat: 어떤 파일이 commit에서 수정되고 변경되었는지 파일 내 라인이 추가되거나 삭제되었는지 확인
    --pretty=online : 각 commit을 한 줄로 출력
    --graph: commit간의 연결된 관계를 아스키 그래프로 출력한다.
    -S : 코드에서 추가되거나 제거된 내용 중 특정 텍스트가 포함되어 있는지 검사

  • git reset <file_name> : add 명령을 취소

  • git diff : commit된 파일 중 변경된 사항을 비교할 때

Git branch

-> 독립적으로 어떤 작업을 진행하기 위한 개념, 각각의 brnach는 서로 다른 branch의 영향을 받지 않음

main branch: 배포할 수 있는 수준의 안정적인 branch
topic branch: 기능 추가나 버그 수정과 같은 단위 작업을 위한 branch

  • git branch <branch_name> : branch 생성
  • git branch : 현재 branch 확인
  • git checkout <branch_name> : branch 전환, git log로 확인한 snapshot을 넘나들때도 사용 가능 (hash값 이용, 과거 파일 내용 확인)

Git merge

-> A branch에서 작업을 마치고 B branch로 통합한다.
1. git checkout B
2. git merge A
-> A의 내용이 B에서 업데이트된 내용일 경우 바로 merge가 된다. 이렇게 merge가 이뤄지는 것을 fast-forward라고 한다.

  • git branch --merged : merge된 branch 확인
  • git branch -d <branch_name> : 사용을 마친 branch를 삭제
  • git reset --hard <commit_hash> : 현재 branch를 특정한 commit으로 이동할 수 있다.

Merge conflict

-> merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
1. git status로 어떤 파일에서 충돌이 발생했는지 확인
2. 충돌이 일어난 파일을 열어 확인 후 수정
3. git add, git commit 과정을 거쳐 다시 merge해준다.

-> 충돌이 발생하지 않기 위해서는 branch의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거해줘야 한다!

Git 원격 저장소

원격 저장소 : 인터넷이나 네트워크 어딘가에 있는 저장소

원격 저장소 받아오기

  • git clone <url> : 기존의 repository를 복사
  • git remote add origin : 원격 저장소 연결
  • git remote : 연결된 저장소 확인
  • git remote show origin : 원격 저장소 살펴보기
  • git remote rename origin git_test : 원격 저장소 단축 이름을 origin에서 git_test로 변경
  • git remote rm git_test : 주소가 변경되었거나 필요없어진 저장소 삭제

원격 저장소 동기화

  • 저장소 갱신
    • pull : 원격 저장소에서 데이터 가져오기 + 병합 (merge)
    • fetch: 원격 저장소에서 데이터 가져오기
      → 진행중인 작업을 마무리하고 병합해주어야 함
      → git log로 변경된 파일을 확인하고 merge해줌
    • git push origin master : 로컬 저장소에서 작업한 내용을 원격 저장소에 반영 → 다른 사람이 먼저 push한 경우 불가능 다른 사람이 작업한 거 먼저 merge해야 한다.

  1. git remote add origin으로 로컬 저장소와 연결한다.
  2. git fetch 또는 git pull 을 이용하여 원격저장소의 내용을 동기화한다.
  3. fetch를 실행한 경우 git merge origin/master보 병합을 완료한다.
  4. git push origin master를 이용하여 변경된 사항을 원격 저장소에 전달한다.
profile
꾸준히 열심히!

0개의 댓글