git-2

연성·2021년 9월 30일
0

git

목록 보기
3/6
post-thumbnail

git-2

git repository

git init

  • local repository(repo)를 remote repo에 연결하는 방식이다.
  • git init 명령어를 입력하면 local repo가 생성된다.
    • 사용자의 위치에 .git directory가 생성된다.
  • git의 repo는 directory 단위로 관리하는 것이 좋다.
    • git init 명령어를 사용할 때 현재 내가 위치한 directory path를 확인해야 한다.
    • 잘못된 위치에서 git init을 사용하여 local repo를 생성했을 경우, 생성된 .git directory를 제거해주면 된다.
  • git remote add: 생성된 local repo를 remote repo에 연결하는 명령어다.
    • 처음 push 할 때 -u 옵션을 사용한다.
$ git remote add origin https://github.com/{username}/{reponame}.git
$ git push -u origin master(main)

git에서는 master를 사용하지만 github에서는 main을 사용한다.

git clone

  • remote repo를 복제하여 local repo를 생성하는 방법이다.
git clone REMOTE_REPO_URL

add, commit, push

git add FILE_NAME
  • 새로 생성(untracked)되었거나 수정된 파일(modified)을 staging area에 등록한다.
git commit
  • staging area에 등록된 blob들을 local repo로 올린다.
  • git commit 명령어를 입력하면 등록된 에디터로 commit message를 등록할 수 있다.
git push
  • local repe에 등록된 commit들을 remote repo에 올린다.

commit

commit 할 때 기억해야 할 것

  • commit은 동작 가능한 최소단위로 자주 해야 한다.
  • 해당 작업 단위에 수행된 모든 파일 변화가 해당 commit에 포함되어야 한다.
  • 제목과 내용은 한 줄 띄어 분리한다.

Convetional Commits

참고 자료

  • commit message를 작성할 때 다른 이용자가 보기 편하게 작성하는 것이 좋다.
  • commit message의 제목은 문장이 아닌 구나 절로 작성하다.(50자 이내)
  • commit message 제목에 prefix를 작성한다.
  • 대표적인 prefix
    • feat: feature, 기능 개발 관련 커밋
    • fix: bug-fix, 오류 개선 혹은 버그 패치 커밋
    • docs: documentation, 문서화 작업 커밋
    • test: test, 테스트 관련 작업 커밋
    • conf: configuration, 환경 설정 관련 커밋
    • refactor: refactoring, 코드 개선 관련 커밋(내부 알고리즘 등)
    • 그 외에 bulid, ci 등이 있다.

Convetianl Commmits example

feat: Add server.py
fix: Fix typo server.py
docs: Add README.md, LICENSE
conf: Create .env, .gitignore
refactor: Refactor user classes

branch

  • branch는 가지로 git은 여러 개의 branch로 나누어 작업을 할 수 있다.
  • branch 덕분에 비선형적으로 작업을 할 수 있다.

Create branch

git branch BRANCH_NAME
  • branch를 생성한다.
git branch
  • 존재하는 브랜치 목록 보여준다.

Switch branch

  • 옛날 명령어
git checkout BRANCH_NAME
  • 최신 명령어
git switch BRANCH_NAME
  • git checkout 명령이 브랜치 이동과 시점 이동 두가지 기능을 하는 것이 적절하지 않아 git switchgit restore 두 가지 명령으로 분리 되었다.
    • 아직까지는 둘 다 쓸 수 있다.
  • 브랜치를 변경하기 전에 작업 중인 브랜치의 변경사항을 모두 add, commit 후에 브랜치를 변경해야 한다.

Merge branch

  • 다른 브랜치에서 작업하던 내용을 합칠 수 있다.
  • 브랜치를 병합하기 위해서는 우선 현재 브랜치를 병할을 할 브랜치로 옮겨 주어야 한다.
    • A 브랜치를 B 브랜치에 병합하려고 한다면 B로 옮겨야 한다.
git merge BRANCH_NAME
  • 병합은 잘 될 수도 아닐 수도 있다.
    슈뢰딩거의 머지
  • 병합이 자동으로 이루어지지 않으면 conflict가 발생하고 해당 문자를 개발자가 직접 조정해야 한다.
    • conflict 메세지를 잘 보면 어디서, 왜 conflict가 발생했는지 알 수 있다.
    • conflict 된 파일을 보면 어떤 코드에서 conflict가 발생했는지 알 수 있다.
      서로 원만하게 합의를 하면 된다.

Delete branch

git branch -D BRANCH_NAME

.gitignore

  • .gitignore는 git이 파일을 추적(tracking)할 때, 특정 파일이나 폴더 등을 추적하지 않도록 명시하기 위해 작성한다.
  • .gitignore에 작성된 리스트는 수정사항이 발생해도 git이 무시한다.
  • gitignore.io에서 운영체제, IDE, 프로그래밍 언어를 선택하면 .gitignore에 추가되어야 할 리스트를 생성해준다.
  • 설정 파일 등이 주로 포함되고 다른 사람에게 보여주어서는 안되는 key 값 등도 포함된다.

LICENSE

  • 해당 프로젝트를 어떻게 사용할 수 있는가 규정한다.
  • 오픈 소스 프로젝트는 많은 부분에서 자유롭지만 라이센스는 신경써야 한다.
  • MIT License
    • MIT에서 만든 라이센스
    • 모든 행동에 제약 없음
    • 저작권자는 소프퉤어와 관련된 책임에서 자유로움
  • Apache Licens 2.0
    • Apache 재단이 만든 라이센스
    • 특허권 관련 내용이 포함
  • GNU General Public License v3.0
    • 가장 많이 알려져 있으며 다른 라이센스에 비해 규정이 까다로움
    • 해당 라이센스가 적용된 소스코드를 사용시 따라야할 의무사항 있음

0개의 댓글