[TIL]/*elice*/DAY5

박소정·2022년 4월 19일
0

오늘은 깃에 대해 배웠다.
init, commit -m"", push만 사용했던것 같은데,, 깊이 알게되니까 너무 어렵다...!

Git을 사용하는 이유

Git은 협업을 위한 툴이며, 여러 버전을 동시에 관리할 수 있어 데이터의 안정성이 보장된다.

✅ 깃은 가지치기와 병합이 가능
✅ 서버와의 통신없이 로컬에서 진행되기 때문에 가볍고 빠름
✅ 사용자들이 복사된 파일로 동시에 작업이 가능!
✅ 프로젝트의 무결성 보장
✅ 수정내용을 repository에 업로드하기 전 준비 영역에서 미리 검토 후 반영할 수 있음.

Git 초기 설정

사용자 정보 설정

저장소에 코드를 반영할 때 등록될 사용자 정보를 설정

$ git config --global user.name "dyo"
$ git config --global user.email "gitaccount@google.com"

프로젝트마다 다른 사용자 정보를 지정하고 싶으면 저장소 생성 후 --global옵션을 빼고 실행

설정 정보 확인

$ git config --list

Git 저장소 생성

$ git init : 기존의 디렉토리를 git repository로 설정
기존의 디렉토리를 사용하고 싶다면 Git을 사용할 폴더로 이동 후 git init 실행
$ git init foldername을 입력하면 폴더를 생성할 수 있다!

새로운 파일 생성

$ git add comment.js
git add 명령어를 사용하여 staging area으로 보내기
$ git add . 명령어를 사용하면 현재 폴더의 모든 파일을 staging area으로 보낼 수 있음!
$ git status 명령어로 staging area의 어떤 파일이 변경되었는지 파일의 상태를 확인할 수 있음

Git 저장소 반영

staging area로 파일을 올렸으면 무엇을 수정하고 추가했는지 메시지를 남겨 저장소에 저장
$ git commit git저장소 내에 staging area에 있는 모든 파일을 저장
$ git commit -m "Initial commit" 저장소에 반영할 때 -m을 사용해 메세지를 넣어주면 나중에 사용할때 어떤 부분이 바뀌었는지 알 수 있고, 협업을 할때도 중요한 역할을 함.

Git 저장소 반영 내용 변경

$ git commit --amend 메세지에 오타가 있거나 누락된 파일이 있을 경우에는 해당 옵션을 이용하여 수정하고 싶은 부분을 수정할 수 있음!
$ git commit --amend -m"수정할 커밋 메세지"로도 수정할 수 있다.
$ git log를 통해 저장소 반영 내역을 확인할 수 있음

Git 관리 상태 확인

$ git status staging file들의 상태를 확인
$ git log .git repository에 존재하는 commit history 확인 (저장소 반영내역 확인 가능)

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

$ git diff commit된 파일 중 변경된 사항 비교

Git 가지치기

Git Branch

독립적으로 어떤 작업을 진행하기 위함
각각의 branch는 다른 branch의 영향을 받지 않음!!

main branch

배포할 수 있는 수준의 안정적인 Branch

topic branch

기능 추가나 버그 수정과 같은 단위 작업을 위한 Branch

Git branch 생성

$ git branch 브랜치 이름 : 브랜치 생성
$ git branch : 명령어를 통해 생성된 branch들 확인 가능
$ git checkout 브랜치 이름 : branch 전환

HEAD가 가리키는 것이 현재 있는 branch

fast-forward

master브랜치의 변경사항없이 다른 브랜치를 병합하여 새로운 내용이 추가됨

다른 브랜치를 master브랜치로 병합하고 싶다면

$ git checkout master 로 이동한 후,
$ git merge 다른 브랜치 명령어로 병합할 수 있다.

$ git branch --merged 명령어로 병합된 브랜치를 볼 수 있다.

Git branch 삭제

$ git branch -d 브랜치 이름 명령어를 통해 사용을 끝낸 브랜치를 삭제할 수 있다.
$ git branch -D 브랜치 이름 명령어는 병합하지 않은 브랜치를 강제로 삭제할 수 있다.

Git Merge conflict

병합한 두 브랜치에서 같은 파일을 변경했을 때 충돌이 발생한다.

$ git status 명령어로 어느 파일에서 충돌이 파일했는지 확인 할 수 있다.

수정을 한 후에는 git addgit commit과정을 거쳐서 다시 병합해줘야한다.

Git 원격 저장소

원격 저장소 받아오기

$ git clone 원격저장소 주소 기존의 원격 git repository를 복사
$ git remote add origin 원격저장소 주소 원격 저장소와 연결
$ git remote 연결된 원격 저장소 확인
$ git remote show origin 원격 저장소 살펴보기
$ git remote rename origin 새이름 원격 저장소 단축 이름을 origin 에서 새이름으로 변경
$ git remote rm 이름 저장소 삭제

원격 저장소 동기화

$ git pull: 원격 저장소에서 데이터 가져오기 + 로컬 데이터와 병합
$ git fetch: 원격 저장소에서 데이터 가져오기 + $ git merge origin/master로 병합 완료

$ git push origin master : 로컬 저장소에서 작업한 내용을 원격 저장소에 반영

  • 다른 사람이 먼저 push하면 push 할 수 없으므로 다른 사람이 작업한 것을 먼저 병합 하고 push 해야함.

What is origin?

$ git remote add origin 원격저장소 주소
원격 저장소의 이름을 origin으로 지정하겠다는 의미!!
origin에 다른 이름이 들어가는 것도 가능함.
origin이 default이기 때문에 clone으로 복사해 온 저장소는 origin이 된다.

$ git remote -v : 지정한 저장소의 이름과 주소를 볼 수 있다.


이것 외에도 더 많은 옵션들이 존재했는데, 어느정도 이해는 했지만 완벽하게 이해하기 위해서는 조금 더 해봐야 할 것같다!

0개의 댓글