(1) 깃허브를 사용하는 이유
(2) Git 설정 범위
a. 하나의 프로젝트를 여러명이 동시에 개발해야 한다.
b. 개발 중 문제가 발생하면, 문제의 전후 상황을 파악하여 특정 시점의 버전으로 돌아갈 수 있어야 한다.
c. 버전별로 소스가 관리되어야 한다.
d. 여러 개발 시스템이 연동되어야 한다.
Git은 분산 버전 관리 시스템으로 여러 명이 동시에 하나의 프로젝트를 개발할 수 있다. Git을 사용해 각 개발자는 로컬 컴퓨터에서 안전하게 작업을 하며, 필요할 때 서버에 변경 사항을 업로드하여 협업할 수 있게 만든다.
개발 중 실수를 저질러 이틀 전의 코드로 돌아가고 싶지만 매일 매일 변경한 코드를 여러 개의 메모장 파일로 저장하여 관리하기 힘들지만 불러올 수 있다.
하지만 버전 관리 시스템인 Git은 개발 진행시 코드의 각 변경 사항을 커밋(Commit)이라는 단위로 관리함으로써 문제가 발생하면 해당 시점의 커밋으로 쉽게 돌아가 다시 문제를 해결할 수 있다. 여기서 git reset, git checkout 등의 명령어를 사용하여 특정 시점의 버전으로 손쉽게 되돌릴 수 있습니다.
Git은 모든 변경 사항을 버전별로 관리한다. 커밋과의 차이점이라면 각 커밋은 프로젝트의 특정 시점에서의 상태를 나타내며, 커밋 간의 차이를 비교하거나 필요한 경우 커밋을 모두 담고 있는 특정 버전으로 이동할 수 있다.
각 개발자는 로컬 저장소에서 자신만의 버전 히스토리를 가질 수 있어 중앙 서버에 영향을 미치지 않고 자신의 로컬에서 어떤 커밋들을 수행했는지 확인하고 관리할 수 있으며, 필요한 경우 다양한 실험적인 변경사항을 시도하거나 과거 버전으로 되돌아갈 수 있다. 이렇다고 해도 중앙 서버에 영향을 주지 않고 개인 저장소에서 여러 문제를 해결하고 중앙 서버로 옮기는 것이 가능하다.
Git은 다양한 개발 시스템과 연동이 가능하다. 주로 사용되는 원격 저장소 플랫폼(예: GitHub, GitLab, Bitbucket)을 통해 여러 개발자가 협업할 수 있다.
🖍️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)
Git의 core.autocrlf 설정은 운영 체제 간의 줄바꿈 문자 차이로 인해 발생할 수 있는 문제를 해결하기 위해 사용된다. 줄바꿈 문자는 파일의 행 끝을 표시하는 문자로, 운영 체제마다 다르게 사용된다.
Windows: 줄바꿈 문자로 CR (캐리지 리턴, \r)과 LF (라인 피드, \n)를 함께 사용해 CRLF (\r\n)로 표시한다.
Unix/Linux/Mac: 줄바꿈 문자로 LF (라인 피드, \n)만 사용해 표시한다.
다양한 운영 체제에서 작업하는 사람들과 협업하는 경우 줄바꿈 문자 차이로 인해 문제가 발생할 수 있다. Git의 core.autocrlf 설정은 이러한 문제를 해결하기 위해 줄바꿈 문자를 자동으로 변환해 준다.
core.autocrlf = trueA. 설명: 이 설정은 파일을 커밋할 때 줄바꿈 문자를 자동으로 변환해 준다.
B. 동작:
- 파일을 커밋할 때: 줄바꿈 문자를 CRLF에서 LF로 변환한다.
- 파일을 체크아웃할 때: 줄바꿈 문자를 LF에서 CRLF로 변환한다.
- 사용 예시: Windows와 Unix/Linux/Mac 시스템에서 협업하는 경우 사용한다. Windows에서 작업한 파일을 커밋할 때 줄바꿈 문자가 LF로 변환되어 저장되고, 다시 체크아웃할 때 Windows 환경에서는 CRLF로 변환된다.
core.autocrlf = falseA. 설명: 이 설정은 줄바꿈 문자를 변환하지 않는다.
B. 동작:
- 파일을 커밋하거나 체크아웃할 때: 원본 파일에 사용된 줄바꿈 문자를 그대로 유지한다.
- 사용 예시: 모든 개발자가 동일한 운영 체제에서 작업하거나 줄바꿈 문자가 일관된 경우 사용한다.
core.autocrlf = inputA.설명: 이 설정은 파일을 커밋할 때만 줄바꿈 문자를 변환하고, 체크아웃할 때는 변환하지 않는다.
B.동작:
- 파일을 커밋할 때: 줄바꿈 문자를 CRLF에서 LF로 변환한다.
- 파일을 체크아웃할 때: 줄바꿈 문자를 변환하지 않는다.
- 사용 예시: Unix/Linux/Mac 시스템에서 주로 작업하는 경우 사용한다. 커밋할 때 Windows의 CRLF 줄바꿈 문자가 LF로 변환되지만, 체크아웃할 때는 변환되지 않는다.
- 예시
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 라는 설정한 값이 출력 될 것이다.