본문 바로가기
Frontend/엘리스 SW 엔지니어 트랙

[ 엘리스 SW 엔지니어 트랙 ] 5일차

by YWTechIT 2021. 10. 30.
728x90

📍 10.30.토. 5일차(온라인 강의)

오늘은 Git 사용법에 대해서 배웠다. 평소에 CLI 환경 대신 Github-desktop을 사용했는데, CLI 명령어를 하나부터 열까지 배울 수 있어서 좋았다. 기록해놨다가 나중에 현업에서 써먹었으면 좋겠다.


❏ Git의 특징

  1. master는 독립성을 유지한 채 진행하고 나중에 master에서 주로 배포하게 끔 설정한다.
  2. 다른작업을 독립적으로 진행하고 원하는 시점에 branch끼리 병합 할 수 있다.
  3. 가볍고 빠르다. (서버와의 통신 없이 로컬에서 진행, 원격 저장소 사용 제외)
  4. 네트워크: SVN(SubVersion)은 항상 네트워크가 필요한 반면, Git은 다른사람과 코드를 공유할 때만 네트워크가 필요하다.
  5. 분산작업의 효율성: 개발자들은 개발만 하고 통합 관리자는 개발된 코드를 병합하는데 집중한다.
  6. 데이터 보장: 모든 파일은 checkSum 과정을 거친다. (16진수 문자열로 구성, commit ID 라고도 불린다.) commit ID 가 동일하다는 것은 파일 구성이 완벽히 동일하다. 누가 어떤 파일을 작업했는지 기록 또는 hash 값으로 알 수 있다.
  7. 준비 영역(Staging area): 수정한 내용을 실제 repository에 반영하기 전 검토하는 단계
  8. 오픈 소스(Open source): 소스코드를 공개한 상태에서 인터넷에서 누구나 프로젝트 발전에 기여할 수 있다.
  9. Git 호스팅 서비스: Github, Bitbucket, Gitlab
  10. Git에서 관리하는 세 영역: 작업 영역(Working Directory), 준비 영역(Staging Area), 저장소(Repository)

 

 

728x90

❏ Git 주요 명령어

  1. git add: 파일을 준비영역(staging area)로 보내야 한다. 이때 git add 명령어를 이용하자. 파일의 현재 상태를 확인하려면 git status 명령어를 이용하자.
  2. git commit: comment.js 파일을 staging 으로 이동하였으므로 무엇을 수정하고 추가했는지 메시지를 남겨 저장소에 저장하는 작업을 진행한다. 이때 commit message도 추가하고 싶다면 다음의 명령어를 사용하자. git commit -m "message"
  3. git commit --amend: 앞서 커밋한 메시지에 오타가 있거나 누락된 파일이 있는 경우 저장소 반영 내용 변경
  4. git log --pretty=oneline : 각 commit 을 한 줄로 출력
  5. git log --graph: commit 간의 관계를 아스키 그래프로 출력한다. (보통 branch 과정에서 많이 사용한다.)
  6. git log -S function_name: -S 코드에서 추가되거나 제거된 내용 중 특정 텍스트(예시는 function_name ) 가 포함되어 있는지 검사한다.
  7. git status : git 명령소의 현재 상태를 알 수 있다.
  8. untracked : 코드의 변경 내용을 추적하는 단계가 아니다. staging area로 보내야 코드의 수정 내용을 추적 가능함.
  9. git reset filename : untracked 상태로 변경
# untracked인 파일 crawling.py와 README.txt 파일 중 crawling.py 파일 만 commit 하고 싶을 때
$ git add crawling.py
$ git commit -m "commit crawling.py"
$ git log --graph

❏ Git branch

 

  1. branch: 독립적으로 어떤 작업을 진행하기 위한 개념, 각각의 branch는 다른 branch에 영향을 받지 않는다. 독립적 기능 단위, 작업 단위로 나눌 수 있다.
  2. main branch: 배포할 수 있는 수준의 안정적인 branch
  3. topic branch: 기능을 추가하거나 버그 수정과 같은 단위 작업을 위한 branch (수시로 내용이 변경될 수 있음)
  4. git branch <name>: branch 생성 명령어
  5. git branch: 현재 branch의 정보를 보여주는 명령어
  6. git checkout <name>: branch 전환 (HEAD는 현재 가리키고 있는 레포지토리를 말함)
  7. checkoutbranch의 전환 뿐만 아니라 git log로 확인한 snapshot을 넘나들 때도 사용이 가능하다. (git checkout snapshot hash)
# checkout 전 snapshot hash
$ git log --pretty=oneline
e4abb6f... (HEAD -> master) this is master
d917274... another snapshot

$ git checkout d917274
...
HEAD is now at d917274 another snapshot

# checkout 후 snapshot hash
$ git log --pretty=oneline
e4abb6f... (master) this is master
d917274... (HEAD) another snapshot
  1. 새로운 branch를 만들고 해당 branch로 이동하기
# 현재 branch 확인
$ git branch 

# "alice" branch 생성
$ git branch alice

# "alice" branch로 이동
$ git checkout alice
  1. fast-forward 방식: foo branch 의 내용이 master branch 에서 업데이트된 내용이기 때문에 곧바로 merge 가 된다. 즉 기존의 master branch 의 내용은 변한 것 없이 foo 브랜치의 내용만 합쳐졌기 때문에 fast-forward 방식이라고 할 수 있다.
  2. 갈라지는 branchmergegit log --graph -all 을 사용하면 commit graph 로 편하게 확인 할 수 있다.
  3. git branch -d <branch name> : branch 삭제 명령어
  4. conflict: 병합하는 두 Branch 에서 같은 파일을 변경했을 때 충돌이 발생한다. 이때 git status 명령어로 어느 파일에서 충돌이 발생했는지 확인할 수 있다. 수정 완료 후 기호(<<<<< =====, >>>>>)들을 삭제 해준다. 수정 완료 후 git add, git commit 과정을 거쳐서 다시 merge 한다. master 브랜치의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거한다. 더 좋은 것은 master 브랜치가 자주 변경되는 일이 없도록 하는 것

❏ 원격 저장소

  1. 원격 저장소: 인터넷이나 네트워크 어딘가에 있는 저장소
  2. Git 원격 저장소 받아오기: Git clone url(기존 repository를 복사), clone 버튼을 누르고 CLI창에 $ git clone url을 입력한다.
  3. 원격 저장소와 로컬저장소 연결하기: $ git remote add origin https://gitlab.com/group/project (웹 호스트 서비스: gitlab.com, 그룹 명 group, 프로젝트 명 project) 이후 git remote로 연결된 저장소가 무엇인지 볼 수 있음 git remote show origin 을 통해 어떤 원격 저장소가 있는지도 확인 가능
  4. 원격 저장소 동기화
$ git pull: 원격 저장소에서 데이터 가져오기 + 나의 로컬 레포지터리와 병합(Merge)한다. (따로 merge하지 않아도 적용됨.)
$ git Fetch: 원격 저장소에서 데이터 가져오기 (별개로 merge 단계를 거쳐야 한다.)
  1. origin/master: 내 컴퓨터에 저장되어 있는 저장소와 원격 저장소를 연결하기 위해서 다음의 명령어를 사용한다. git remote add origin https://~ 여기서 origin은 원격 저장소의 단축 이름을 origin으로 지정한다는 의미다. origin이 아닌 다른 이름으로도 원격 저장소의 이름을 지정해 줄 수도 있다. (git remote add foo https://~) 원격 저장소의 이름의 default 값은 origin 이다. 따라서 clone 으로 복사해온 저장소의 이름은 origin 으로 통일하게 된다. git remote -v 명령어를 사용하면 지정한 저장소의 이름과 주소를 함께 볼 수 있다.
반응형

댓글