git과 함께 사용하는 원격저장소(Cloud Remote Repository Services)

  • Github: 비영리였지만, 이후 Microsoft에 인수되었습니다. 현재 가장 유명한 서비스입니다.
  • Bitbucket
    • Atlassian이 서비스
    • jira, confluence, trello 등의 부가도구와 유기적입니다.
  • GitLab
    • GitLab이 서비스
    • 사설 서버 구성이 가능합니다(보안)
    • github private repository이더라도 github에 업로드된 소스코드는 github 데이터 센터에 저장되는 것이기 때문에, 보안에 민감할 경우 GitLab을 통해 회사 사설 서버로 구성하여 사용이 가능합니다

준비사항

여기에서는 가장 많이 이용하는 github과 같이 연동하여 사용하는 것을 전제로 진행해보겠습니다.

git

  • git 설치
    • macOS : git 홈페이지에서 다운로드 https://git-scm.com/
    • window
      • gitforwindows 홈페이지에서 다운로드 https://gitforwindows.org/
      • git bash를 통해 unix-like 명령어로 cli이용이 가능(window 명령프롬프트에서 ls와 같은 명령어는 동작하지 않습니다)하며, 이후 브랜치 전략으로 git flow를 적용할 때 작업을 편리하게 해주는 command가 기본 내장되어 있음 => window에서 편하게 git으로 개발하기 위해 다운로드
        window_shell
        window_git_bash
  • 설치 확인
$ git -v
  • git 환경설정
$ git config --global user.name "github유저네임(아이디)"
$ git config --global user.email "github메일주소"
$ git config --global core.editor "vim"
$ git config --global core.paper "cat"
  • $ git config --global user.name "github유저네임(아이디)"

    • --global 플래그(옵션)이 없으면 새 프로젝트를 할 때마다 계속 설정해야 될 수 있습니다. 번거로운 작업이 될 수 있고 로그인을 여러번 하는 것을 방지하는 등의 이유로, 해당 플래그를 사용해서 설정하는 것을 권장합니다.
      (다른 사이트에서 참고할 때 --global 설정하는 내용이 많이 보이는 것도 그런 이유가 아닐까 생각됩니다)
    • github과 연동할 때 여기서 설정한 유저네임은 매치되지 않기 때문에 일치할 필요성은 없다고 하지만, 특별한 이유가 아니라면 github에서 사용하는 유저네임(아이디)로 설정하는 것을 권장합니다.
  • $ git config --global user.email "github메일주소"
    github과 연동할 때 여기서 설정한 이메일을 매치하여 작업하기 때문에, github에서 등록한 email주소와 다르다면 에러가 발생할 수 있습니다. github과 연동하고자 할 때 에러가 발생한다면 git config --global --list 또는 git config --list 명령을 통해 email이 올바르게 작성되었는지 먼저 확인해보시는 것도 괜찮습니다.
    git_config_global_list

  • $ git config --global core.editor "vim"
    git에서 vim을 이용하여 텍스트 에디트를 할 경우 설정합니다.

  • $ git config --global core.paper "cat"
    cli에서 텍스트 입력이 필요할 때 다른 프로그램(e.g. VSCode)이 열릴 수 있습니다. DX(Developer Experience, 개발자 경험)측면에서 좋지 않기 때문에 shell에서 텍스트를 출력하고 확인할 수 있도록 설정합니다.

    잘못 설정한 경우 해결 방법

  1. vi ~/.gitconfig 명령으로 텍스트를 편집하여 (직접) git 환경설정 파일을 수정

  2. git config --global --unset user.email => git config --global user.email "수정할 메일 주소"
    (위는 예시 입니다. --unset과 수정하고 싶은 환경설정이름을 사용하여 설정을 제거해주고, 이후 다시 설정해주면 됩니다)

    window git bash에서 붙여넣기

    마우스 우클릭으로 붙여넣기 하거나, shift + insert 키 입력으로 붙여넣기

github

  • github 가입 https://github.com/
  • 가입할 때 등록한 username, email, password 를 잃어버리지 않고 잘 기억하기
  • repository(저장소) 생성
    github_create_path
    Profile페이지 - Repositories탭 에서 New 버튼 클릭
    github_createRepository_detail
    • * 표시된 항목은 필수 입력 항목입니다.
    • Owner
      repoistory를 생성할 계정을 선택해주시면 됩니다.
    • Repository name
      생성할 repository의 이름입니다.
    • Description
      생성할 repository에 대한 설명입니다. 입력하지 않아도 repository 생성이 가능합니다(Optional)
    • Public, Private
      repository를 모든 사용자에게 공개(Public)할지 비공개(Private)로 할 것인지를 설정합니다. Private repository의 경우 추가로 비용을 지불하지 않을 경우 제약사항이 있을 수 있으니 Public으로 사용하는 것을 권장합니다.
    • Add a README file
      • README.md 파일을 자동으로 생성해줍니다.
      • create react app(CRA)과 같이 자동으로 README.md파일을 생성하는 라이브러리와 같이 사용한다면, 서로 충돌이 발생(github에서 생성한 README.md, CRA에서 생성한 README.md - 둘 다 루트경로에 생성하기 때문에 동일한 위치)할 수 있습니다.
        conflict를 해결하면 이용이 가능하지만, 번거롭기 때문에 이런 문제를 방지하고자 하는 경우에는 설정하지 않는 것을 권장합니다.
    • Add .gitignore
      gitignore.io 사이트를 통해 .gitignore파일을 커스텀하게 작성할 예정이기 때문에 여기에서는 설정하지 않습니다. https://www.toptal.com/developers/gitignore/
    • Choose a license

사용해보기

git process flow

git_process_flow_and_command

git commit convention

  1. commit의 제목은 commit을 설명하는 하나의 구나 절로 완성
  2. Important of Capitalize와 같이 가독성을 위해 대문자를 적절히 사용
  3. prefix 작성
prefix의미
feat기능 개발 관련
fix오류 개선 혹은 버그 패치
docs문서화 작업
testtest 관련
conf환경설정 관련
build빌드 관련
ciContinuous Integration
refactor코드 리팩토링(코드의 결과물은 동일하고 구조 등이 수정되었을 경우 등)

commit 할 때 기억해야 할 것

  • commit 메시지의 기본 구조
prefix: subject

body

footer
  • 동작 가능한 최소단위로 자주 commit합니다.
  • 해당 작업단위에 수행된 모든 파일 변화가 해당 commit에 포함되어야 합니다.
  • 모두가 이해할 수 있는 log를 작성해야 합니다.
  • Open Source Contribution의 경우 영어가 강제되지만, 그렇지 않을 경우 팀 내 사용언어를 따라 씁니다.
  • 제목은 50자이내로 축약해서 작성하며, 내용은 문장형으로 작성하여 추가설명 합니다. 해당 commit의 구성과 의도를 충실히 작성할 수 있도록 합니다.
  • 제목과 내용은 구분할 수 있도록 한 줄 띄워 분리합니다.

git commands

  • status
$ git status

추적상태를 출력해줍니다.

  • add
$ git add 파일경로
  • 해당 파일을 스테이지에 올립니다(commit을 작성하기 이전에 관련된 파일들을 설정)

  • git add .을 통해 변경된(추적되지 않은) 모든 파일을 스테이지에 올리고 commit을 작성할 수 있습니다. 그러나, (최소한으로 동작하는) 기능의 단위로 commit을 작성한다는 취지와는 어긋날 수 있습니다. 그래서, 관련된 파일을 직접 지정해서 add하고 commit을 작성하는 것이 올바른 습관이라고 할 수 있습니다.

    add 할 때 CRLF 관련 경고(warning) 메시지가 출력될 경우

    운영체제에서 개행문자를 처리하는 방식이 다름에서 오는 경고이며, 그냥 사용하셔도 동작은 되지만, 해결하고 싶으신 경우는
    https://www.lesstif.com/gitbook/git-crlf-20776404.html 참고해보시는 것이 좋을 것 같습니다.

  • commit

$ git commit
  • commit을 작성합니다.
  • -m 플래그(옵션)은 가급적이면 사용하지 않는 것을 권장합니다.
  • git commit -m "메시지"로 작업할 경우 git commit 명령을 통해 생성되는 기본적인 내용을 무시하고 지정한 메시지가 강제로 적용되어 작성됩니다(기본적인 내용이더라도 유용한 정보들이 요약되어 작성되있는 경우가 있습니다). 그래서, git commit => 제목, 내용 직접 작성 의 흐름으로 git을 사용하는 것이 올바른 습관이라고 할 수 있습니다.
  • log
    이력을 확인할 수 있습니다.
  • push
$ git push {원격저장소 별칭} {브랜치 이름}

git push origin main
작성한 commit들을 origin(별명, alias)으로 설정한 원격저장소의 main 브랜치에 보냅니다.

경험할 수 있는 에러

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.

정책이 변경되어서 패스워드 인증대신에 token을 발급하고 사용해야 됩니다.

  • settings - developer settings 클릭
    settings
  • Personal access tokens - Generate new token - Generate new token(classic) 클릭하여 토큰 생성
    access_tokens
    토큰을 발급하면 한번만 보여주기 때문에 기억하거나 저장해서 사용해야 됩니다.(잃어버린 경우 다시 발급해야 됩니다)
  • 비밀 번호입력시 해당 토큰 값으로 입력
  • 참고할만한 사이트
    https://yian.tistory.com/38

unable to acess 'https://github.com/아이디/저장소.git':The requested URL returned error: 403 (403에러)

github에 최초로 등록한 계정과 현재 push하는 계정(환경설정에서 설정한 계정)이 달라 해당 저장소에 접근 권한이 없어서 나타나는 에러입니다.

  1. 윈도우 자격증명 관리자로 해결
    https://itsjh.tistory.com/47 참고하시면 도움이 될 것 같습니다.
  2. git remote set-url로 Remote URL 변경하기
    https://velog.io/@arthur/GitHub-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0-The-requested-URL-returned-error-403 참고하시면 도움이 될 것 같습니다.

gitignore.io 사용법 및 .gitignore를 사용하는 이유

  1. 입력 창에 운영체제(window, macOS, ...), 프레임워크(React, Vuejs, ...), 프로그래밍 언어(Node, JAVA, ...)를 입력합니다.
  2. 자동완성 목록에서 선택하고, 없을 경우 유사한 것이 있다면 그것을 선택해도 됩니다(e.g. javascript 대신에 Node 선택)
  3. 생성 버튼을 누릅니다.

gitignore.io

  1. 텍스트 파일을 모두 선택 및 복사하여 사용합니다.

ignore

.gitignore를 사용하는 이유

  • .gitignore에서 명시한 파일들은 git에서 변경사항이 발생했다고 인식하지 않습니다.
  • 실제 소스코드와 관련된 파일이 아닌 다른 설정파일들도 추적하게 된다면, 의미없는 파일들을 commit하고 push해야 됩니다. window 설정파일 등이 이에 해당한다고 볼 수 있고, 이런 이유로 운영체제 등에 대해 추적할 필요가 없는 파일을 설정하는 것입니다.
  • npm을 사용할 경우 package.json만 잘 작성되어 있다면 npm i를 통해 의존 라이브러리(사용되는 라이브러리)를 모두 설치할 수 있기때문에 실제 라이브러리 파일들이 저장되는 공간인 node_modules가 github에 올라가지 않아도 됩니다. node_modules는 용량을 많이 차지하는 편이기 때문에 사이즈를 줄이기 위해서라도 git에서 무시하도록 설정하는 것이 좋습니다.
  • .env와 같이 IDE (e.g. VSCode, WebStorm, ...)상에서 노출되어서 않되는 값들을 설정한 경우 git에서 무시하도록 설정해야합니다.( github 등의 원격저장소에 업로드 되고, 일반 사용자들이 해당 값을 본다면 ... ?)
profile
$ npm run dev:ryan

0개의 댓글