내가 생각하는 초보 개발자 필수 용어 정리 ! (1)

Ju Young Jun·2021년 8월 3일
4

👨‍💻

Git

1_1 형상관리도구(Configuration Management Tool) 중 하나

  • 참고로 형상 관리 도구는 버전 관리 시스템이라고도 한다.
  • Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어.
  • SVN보다 여러 장점이 있어 SVN을 쓰던 개발 조직들은 하나둘씩 Git으로 갈아타고 있다

1_2 SVN과 Git의 차이점

  • Git이 SVN과 다른 점은 분산형 관리 시스템이라는 것이다.
  • SVN은 중앙 서버에 소스코드와 히스토리를 저장하는 방식과 달리 Git은 소스코드를 여러 개발 PC와 저장소에 분산해서 저장, 그렇기 때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
  • 사본을 로컬에서 관리하기 때문에 Git이 SVN에 비해 훨씬 빠르다.(SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야 한다.)

2 Git의 장점

  • 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
  • 즉 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있다.
  • 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서두 개발을 진핼할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구 할 수 있다.
  • 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해지나.(pull을 통한 업데이트, patch 파일 배포)

3 공식 사이트에 나온 Git의 특징

3_1 Distributed development

  • 전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다.
  • 이러한 변경은 추가개발지점을 가져와, 로컬개발 지점과 동일하게 병합(merge)할 수 있다. 저장소는 Git protocol 및 HTTP로 쉽고 효율적(특별한 웹서버 구성없이)으로 접근할 수 있다.

3_2 Strong support for non-linear development

  • 신속하고 편리한 branch 및 merge 지원, 비선형(여러갈래) 개발 이력을 시각화 하고 탐색 할 수 있는 강력한 도구를 제공한다.

3_3 Efficient handling of large projects

  • Git은 매우 빠르고, 대형 프로젝트나 이력이 많은 작업에 매우 합리적이다. Git은 대부분의 다른 버전 관리시스템 보다 빠르게 요청한다. 그리고 일부 작업에서는 더 빠르게 진행한다.
  • 또한, 최근의 정상급 오픈소스 시스템 보다 장기간의 수정내역을 매우 효율적인 압축 방법을 사용한다.

3_4 Cryptographic authentication of history

  • Git의 이력은 성공한 개발이력의 commit에 의해 개정명으로 저장된다. 일단 그것이 배포되면, 그것을 모르고 예전 버전으로 변경하는 것은 불가능하다. 또한, 그것들을 암호화 할 수 있다.

3_5 Tookit design

  • UNIX의 전통에 따라, Git은 C로 작성된 많은 소규모 도구모음이다, 그리고 많은 스크립트들이 기능 보강을 제공한다. Gir은 새로운 기발한 작업을 위한 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공한다.

4 Git? Github?

  • Git : 형상 관리 도구(버전 관리 시스템)
  • Github : 형상 관리 도구(버전 관리) 웹 호스팅 서비스

4_1 Git(형상 관리 도구)

  • 프로젝트를 진행하면서 소스 코드를 USB나 메일로 주고 받는건 엄청나 낭비임과 동시에 보안성에 위험이 존재, 그렇기 때문에 형상 관리 도구를 사용한다.
  • 형상 관리 도구를 사용하면 변경을 쉽게 되돌릴 수 있다. 소스코드를 과거의 특정 시점으로 되돌리거나, 특정 시점의 변경 사항을 취소하거나, 두 버전의 소스코드를 비교하는 등의 일이 가능하다.

4_2 Git 웹 호스팅 시스템

  • 협업하고 있는 코드를 저장할 서버가 필요하다.
  • 버전 관리 시스템을 지원하는 웹 호스팅 서비스의 기능을 통해 push, pull, request 같은 이벤트에 반응하여 자동으로 작업(배포 등)을 실행하게 할 수 있다.
    Ex) GitHub, GitLab, BitBucket ..

4_3 Git GUI

  • 너무 많은 git 명령어를 자유자재로 외울 자신이 없을 땐 GUI를 사용할 수도 있다.
    Ex) GitHub Desktop, SourceTree, GitKraken ..

5 관련 용어들

-Repository : 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인할 수 있다.
-Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점
-Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.
-Commit : 현재 변경된 작업 상태의 점검을 마치면, 확정하고 저장소에 저장하는 작업
-Head : 현재 작업중인 Branch를 가리킨다.
-Branch : 가지 또는 분기점을 의미하며, 작업을 할 때에 현재 상태를 복사하여 Branch에서 작업을 한 후에, 완전하다 싶을 때 Merge를 하여 작업을 한다.
-Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.

6 Git 사용하기 위한 기초 용어

  • git init : 버전관리 하고 싶은 폴더에서 초기화를 하는 준비
  • git branch
    -독립적인 공간을 만든다.
    -새로 만든 branch lab1은 master와 동일한 상태를 가진 공간.
    -브랜치에서 수정을 한 후, 커밋하면 lab1에만 기록되며 master 브랜치에는 어떤 영향도 주지 않는다.
    -원하는 만큼 빠르게 branch를 만들 수 있다.
    -실험 중 다른 브랜치로 돌아가야 할 때 :checkout master로 head를 옮겨야 한다.
    (cf > 작업중인 위치를 가르키는 가상의 커서가 존재하는데 이를 git에서는 HEAD라고 한다.)
    -실험 성공 : lab1 브랜치의 내용을 마스터 브랜치와 병합(Merge)한다.
    -실험 실패 : lab1 브랜치를 삭제한다.
  • checkout : 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다.
  • git commit : 의미있는 수정 작업이 끝났을 떄 마침을 알리는 작업
  • pull : 리모트 저장소의 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업을 pull이라 한다. git push의 반대 성격이라 생각하면 된다.
  • git fetch : 로컬 저장소와 원격 저장소의 변경 사항이 다를 때 이를 비교 대조하고 git merge 명령어와 함께 최신 데이터를 반영하거나 충돌 문제 등을 해결한다. 팀원과 협업을 하며 프로젝트를 진행할 때 원격 저장소의 업데이트 된 내용이 나의 로컬 저장소에는 최신화가 되어있지 않기 때문에 이럴 때 pull 과 fetch를 사용하면 된다.
    ->git fetch와 git pull의 차이점
    git fetch : 패치(fetch)는 원격 저장소의 커밋들을 로컬 저장소로 가져온다. 그리고 자동으로 병합(Merge)를 해주지 않기 때문에 본인이 직접 확인을 한 후에 병합(Merge)하는 과정을 거쳐야 한다.
    git pull : git pull이란 원격 저장소의 정보를 가져오면서 자동으로 로컬 브랜치에 병합(Merge)까지 수행해주는 명령어이다.
  • master : git init을 했을 떄, default로 만들어지는 가지가 'master'이다.
  • 동료와 함께 작업하려면 ? -> github ! or bitbucket !
    -git은 'remote 저장소'를 지원한다.
    -github가 바로 remote 저장소이다.
    -bitbucket은 5명까지 공동작업이 가능하다.(그 이상은 유료)
    -github는 private가 유료이다.
    ( 그림 출처: http://osteele.com)
    (글 출처 : https://goddaehee.tistory.com/91)
profile
안녕하세요 :)

0개의 댓글