[GIT] : 깃과 깃허브, 깃 설정 기본문법

김대현·2024년 6월 16일

(1) 깃허브를 사용하는 이유
(2) Git 설정 범위


(1) 깃허브를 사용하는 이유

  • 한 개발 프로젝트를 진행할 때에는 다음과 같은 사항을 고려해야 하며 Git은 아래의 고려 사항을 모두 충족하는 프로그램이다.

a. 하나의 프로젝트를 여러명이 동시에 개발해야 한다.
b. 개발 중 문제가 발생하면, 문제의 전후 상황을 파악하여 특정 시점의 버전으로 돌아갈 수 있어야 한다.
c. 버전별로 소스가 관리되어야 한다.
d. 여러 개발 시스템이 연동되어야 한다.


  • 하나의 프로젝트를 여러명이 동시에 개발해야 한다.:

Git은 분산 버전 관리 시스템으로 여러 명이 동시에 하나의 프로젝트를 개발할 수 있다. Git을 사용해 각 개발자는 로컬 컴퓨터에서 안전하게 작업을 하며, 필요할 때 서버에 변경 사항을 업로드하여 협업할 수 있게 만든다.

  • 개발 중 문제가 발생하면, 문제의 전후 상황을 파악하여 특정 시점의 버전으로 돌아갈 수 있어야 한다. :

개발 중 실수를 저질러 이틀 전의 코드로 돌아가고 싶지만 매일 매일 변경한 코드를 여러 개의 메모장 파일로 저장하여 관리하기 힘들지만 불러올 수 있다.

하지만 버전 관리 시스템인 Git은 개발 진행시 코드의 각 변경 사항을 커밋(Commit)이라는 단위로 관리함으로써 문제가 발생하면 해당 시점의 커밋으로 쉽게 돌아가 다시 문제를 해결할 수 있다. 여기서 git reset, git checkout 등의 명령어를 사용하여 특정 시점의 버전으로 손쉽게 되돌릴 수 있습니다.

  • 버전별로 소스가 관리되어야 한다.:

Git은 모든 변경 사항을 버전별로 관리한다. 커밋과의 차이점이라면 각 커밋은 프로젝트의 특정 시점에서의 상태를 나타내며, 커밋 간의 차이를 비교하거나 필요한 경우 커밋을 모두 담고 있는 특정 버전으로 이동할 수 있다.

각 개발자는 로컬 저장소에서 자신만의 버전 히스토리를 가질 수 있어 중앙 서버에 영향을 미치지 않고 자신의 로컬에서 어떤 커밋들을 수행했는지 확인하고 관리할 수 있으며, 필요한 경우 다양한 실험적인 변경사항을 시도하거나 과거 버전으로 되돌아갈 수 있다. 이렇다고 해도 중앙 서버에 영향을 주지 않고 개인 저장소에서 여러 문제를 해결하고 중앙 서버로 옮기는 것이 가능하다.

  • 여러 개발 시스템이 연동되어야 한다:

Git은 다양한 개발 시스템과 연동이 가능하다. 주로 사용되는 원격 저장소 플랫폼(예: GitHub, GitLab, Bitbucket)을 통해 여러 개발자가 협업할 수 있다.




(2) Git 설정 기본 문법


🖍️GIT 설정 범위

  • System Config

시스템의 모든 사용자와 모든 저장소에 적용한다. 이 설정은 시스템 전체에 걸쳐 공통적으로 적용되는 Git 설정을 정의한다. 그리고 git config --system 명령어를 사용해 설정할 수 있다.

  • Global Config

시스템의 특정 사용자에게 적용한다. 이 설정은 내 컴퓨터에서 특정 사용자가 사용하는 모든 저장소에 적용되는 Git 설정을 정의한다. git config --global 명령어를 사용해 설정할 수 있다. 예를 들어, 사용자 이름과 이메일 주소 같은 설정이 여기에 포함된다.

  • Local Config

특정 저장소에 적용한다. 이 설정은 특정 저장소에만 적용되는 Git 설정을 정의한다. git config --local 또는 git config 명령어를 사용해 설정할 수 있다. 로컬 설정은 전역 설정이나 시스템 설정보다 우선적으로 적용된다.

  • 보통은 개인 단위 작업을 진행할 때는 Global Config 를 주로 사용한다.

🖍️User Name & Email

 git config user.name <user_name>
 git config user.email <email_address>
  • git 서버에 공유 및 배포할 때마다 이메일과 이름을 참고해 사용해야 한다.

  • 이 명령어는 Git에서 사용자의 이름과 이메일 주소를 설정한다. <user_name> 부분에 실제 사용자 이름을, <email_address> 부분에 실제 이메일 주소를 입력한다.

  • 예를 들어, git config user.name "John Doe"라고 입력하면, 이후에 이 사용자가 커밋을 할 때 커밋 기록에 "John Doe"라는 이름이 기록된다.

  • git config user.email "john.doe@example.com" 라고 입력하면, 이후에 이 사용자가 커밋을 할 때 커밋 기록에 "john.doe@example.com" 이라는 이메일 주소가 기록된다.

  • 이는 협업 시 커밋을 누가 했는지 쉽게 확인할 수 있게 도와준다. 그리고 이메일 주소는 추가적인 식별 정보를 제공하여, 동일한 이름을 가진 여러 사용자를 구분할 수 있게 한다


🖍️CRLF (End of Line)

  • Gitcore.autocrlf 설정은 운영 체제 간의 줄바꿈 문자 차이로 인해 발생할 수 있는 문제를 해결하기 위해 사용된다. 줄바꿈 문자는 파일의 행 끝을 표시하는 문자로, 운영 체제마다 다르게 사용된다.

  • Windows: 줄바꿈 문자로 CR (캐리지 리턴, \r)LF (라인 피드, \n)를 함께 사용해 CRLF (\r\n)로 표시한다.

  • Unix/Linux/Mac: 줄바꿈 문자로 LF (라인 피드, \n)만 사용해 표시한다.

  • 다양한 운영 체제에서 작업하는 사람들과 협업하는 경우 줄바꿈 문자 차이로 인해 문제가 발생할 수 있다. Gitcore.autocrlf 설정은 이러한 문제를 해결하기 위해 줄바꿈 문자를 자동으로 변환해 준다.


  • core.autocrlf = true

A. 설명: 이 설정은 파일을 커밋할 때 줄바꿈 문자를 자동으로 변환해 준다.

B. 동작:

  • 파일을 커밋할 때: 줄바꿈 문자를 CRLF에서 LF로 변환한다.
  • 파일을 체크아웃할 때: 줄바꿈 문자를 LF에서 CRLF로 변환한다.
  • 사용 예시: Windows와 Unix/Linux/Mac 시스템에서 협업하는 경우 사용한다. Windows에서 작업한 파일을 커밋할 때 줄바꿈 문자가 LF로 변환되어 저장되고, 다시 체크아웃할 때 Windows 환경에서는 CRLF로 변환된다.
  • core.autocrlf = false

A. 설명: 이 설정은 줄바꿈 문자를 변환하지 않는다.

B. 동작:

  • 파일을 커밋하거나 체크아웃할 때: 원본 파일에 사용된 줄바꿈 문자를 그대로 유지한다.
  • 사용 예시: 모든 개발자가 동일한 운영 체제에서 작업하거나 줄바꿈 문자가 일관된 경우 사용한다.
  • core.autocrlf = input

A.설명: 이 설정은 파일을 커밋할 때만 줄바꿈 문자를 변환하고, 체크아웃할 때는 변환하지 않는다.

B.동작:

  • 파일을 커밋할 때: 줄바꿈 문자를 CRLF에서 LF로 변환한다.
  • 파일을 체크아웃할 때: 줄바꿈 문자를 변환하지 않는다.
  • 사용 예시: Unix/Linux/Mac 시스템에서 주로 작업하는 경우 사용한다. 커밋할 때 Windows의 CRLF 줄바꿈 문자가 LF로 변환되지만, 체크아웃할 때는 변환되지 않는다.

주의. 서로 다른 OS 에서 함께 Git 으로 작업한다면 core.autocrlf = ture 사용하는 것이 일반적으로 좋다.

- 예시

  • Windows와 Unix/Linux/Mac에서 협업하는 경우: git config --global core.autocrlf true
    이 설정을 사용하면 Windows에서 작업한 파일을 커밋할 때 줄바꿈 문자가 LF로 변환되고, Unix/Linux/Mac에서 체크아웃할 때 다시 CRLF로 변환된다.

  • 모든 개발자가 동일한 운영 체제에서 작업하는 경우: git config --global core.autocrlf false 이 설정을 사용하면 파일의 원래 줄바꿈 문자가 그대로 유지된다.

  • Unix/Linux/Mac 시스템에서 작업하고, Windows의 줄바꿈 문자를 자동 변환하고 싶은 경우:
    git config --global core.autocrlf input 이 설정을 사용하면 커밋할 때만 줄바꿈 문자가 변환되고, 체크아웃할 때는 변환되지 않는다.


🖍️git config core.editor <editor_name>

  • git config core.editor <editor_name> 명령어는 Git에서 커밋 메시지를 작성할 때 사용할 텍스트 편집기(에디터)를 설정하는 명령어이다. 이 명령어를 통해 Git은 사용자가 지정한 편집기를 자동으로 실행하여 커밋 메시지를 작성할 수 있게 된다.

  • 여기서 <editor_name>에는 사용하고자 하는 편집기의 이름이나 실행 파일의 경로를 입력합니다. 대표적인 편집기로는 Vim, Emacs, Nano 등이 있다.


🖍️git config init.defaultBranch <branch_name>

git config init.defaultBranch <branch_name>
  • git config init.defaultBranch <branch_name> 명령어는 Git에서 새로운 저장소를 초기화할 때 기본 브랜치를 설정하는 명령어이다.

  • git init 명령어로 새로운 Git 저장소를 초기화할 때 사용된다. 저장소를 초기화할 때 Git은 기본적으로 master 브랜치를 생성한다. 그러나 이 설정을 사용하면 기본 브랜치의 이름을 원하는 이름으로 변경할 수 있다.

  • pc 로컬 브랜치와 github 브랜치의 이름이 다른 경우 이를 사용해 이름을 동일하게 만들어줄 수 있다.

  • 동작: <branch_name> 자리에 원하는 기본 브랜치의 이름을 입력한다. 예를 들어, main 등의 이름을 지정할 수 있다.

  • default branch는 master, main 등 조직에서는 둘 중 하나로 정해서 통일해서 사용하는 것이 중요하다.


🖍️ Git의 설정구성 리스트 추출

git config --list
  • git config --list 명령어는 Git의 설정들을 리스트로 보여주는 명령어이다.

  • git config —l 라고 사용할 수도 있다.

  • 설정된 모든 Git 설정을 출력해서 보여주며 사용자 이름, 이메일 주소 같은 정보와 Git의 동작을 제어하는 다양한 설정들을 볼 수 있다.

  • 예를 들어, git config --list를 실행하면 현재 설정된 사용자 이름, 이메일 주소, 편집기 설정 등이 출력돼. 이 명령어는 Git 설정이 어떻게 구성돼 있는지 확인할 때 유용해.


🖍️ Git의 범위별 설정 확인

git config —l —show-origin
 git config —list — show-origin 
  • git config --list --show-origin 명령어는 Git의 설정들을 리스트로 보여주면서 각 설정이 어디서 설정되었는지도 함께 보여준다.

  • 예를 들어 설정이 시스템 설정으로 또는 글로벌 설정 둘 중 어느 범위로 설정 됐는가를 보고 싶을 때 사용하면 된다.

  • Git 설정들을 출력하면서 각 설정이 정확히 어느 설정 파일에서 설정되었는지를 함께 표시한다.

  • 이 명령어를 사용하면 각 설정이 전역 설정, 사용자 설정, 저장소 설정 등에서 어떻게 설정되었는지를 쉽게 확인할 수 있다. 출력하면 아래와 같이 출력된다.

file:/path/to/global/config    user.name=John Doe
file:/path/to/global/config    user.email=johndoe@example.com
file:/path/to/repo/config      core.editor=vim

🖍️ Git 항목별 설정 확인

git config <key>
  • git config <key> 명령어는 Git 설정에서 특정 설정 항목의 값을 조회하는 명령어이다.

  • <key>에는 조회하고자 하는 설정 항목의 이름을 넣는다. 이 명령어를 사용하면 해당 설정 항목의 값을 출력할 수 있다.

  • 예를 들어 autocrlf 설정을 어떻게 했는지 확인해보고 싶다면 key 자리에 autocrlf 를 넣으면 된다. true로 설정되어 있다면 autocrlf=true 라는 설정한 값이 출력 될 것이다.

profile
데이터 분석 스쿨 블로그 입니다.

0개의 댓글