1.Git이란?
개발자를 위한 클라우드라고 생각하면 이해하기 쉽다.
'개발자를 위한'이란 수식어가 붙은 만큼 코드를 저장하고 관리하는데에 용이한 기능들을 제공한다.
협업하여 개발하는 경우를 생각해보자.
조직의 업무분담에 따라 다르겠지만, 철수는 A기능을, 영희는 B기능을 개발하게 될 것이다.
따로따로 작업하다가도 결국 하나의 프로젝트에 합쳐야한다. 이 때 아주 단순한 방식으로 하자면, 코드를 보내주고 붙여넣기 하는 식으로 해야한다. 철수와 영희까지만 있으면 괜찮다. 만약 협업하는 사람이 10명이라면? 아무래도 각각의 사람이 작성한 코드를 일일히 비교하고 합치는 역할을 담당하는 사람이 둘은 있어야될테다.
또, 철수와 영희가 다음 날 코드를 수정하게 되었다. 그러면 고친 부분을 일일히 비교하며 수정해야한다. 그리고 또 합쳐야한다.
Git은 서로가 한 장소에 프로젝트(코드)를 공유하고 합칠 수 있도록 도와준다. 서로가 작성한 코드 중 겹치는 부분이 있으면 겹치는 부분에 충돌이 있음을 알리고 확인하며 수정하도록 도와준다. 수시로 커밋&푸쉬를 통해 버전관리가 가능해지고 사람마다 서로다른 Branch를 사용하며 개발을 하다가 merge를 통해 프로젝트를 완결하도록 도와준다.
협업하는 경우가 아니더라도, 본인의 코드를 관리하는데에도 용이하다.
만약 오늘 코드를 수정하게 된다면, 백업을 해야한다. 그럼 그 코드 파일을 복사하고 날짜 또는 시간을 붙여서 저장할것이다. 시간이 조금만 지나더라도 06.27일에 작성한 코드는 어떤 특징이 있는지 알지도 못할 뿐더러, 이전과 어떤 차이점이 있는지 파악하기도 어렵다. 무엇보다도 지저분해진다. 10번 백업을 하면 10개의 파일이 존재한다.
git은 지정한 저장소에 있는 파일들의 변화를 완벽하게 추적해내고, 한 줄 한 줄 변화를 읽어낸다. 덕분에 그때그때 commit history와 commit comment를 통해 각각의 코드를 쉽게 파악하고 저장할 수 있게 해준다. 일일히 파일을 백업하는 번거로운 작업도 필요하지 않다.
1.2 깃허브는 뭐?
깃과 깃허브의 관계는 '커피'와 커피숍이라고 보면 된다. 깃허브는 깃 저장소 호스팅 서비스를 지원하는 웹서비스이다. 수많은 커피숍 중 스타벅스의 위치가 아닐까 싶다. 투썸, 폴바셋 등등 수많은 카페숍이 있듯 Bitbucket, Git lab, Azure DevOps등 깃을 사용하게 해주는 많은 서비스가 있다.
2. Git 설치 및 Git Bash 실행
구글에 git 치면 최상단에 나온다. 다운로드 후 설치.
딱히 기본 설정 외에 변경한 내용은 없었다.
마지막에 Launch Git Bash 체크하면 바로 실행.
'git' 입력해서 매뉴얼이 나오면 정상설치 성공.
2.2 Git Bash 사용법(순서대로)
먼저 git config에서 유저의 이름과 이메일을 설정해준다.(이름과 이메일은 아래 명령어를 통해 추후에 수정이 가능)
참고로 Git Bash에서는 복사 붙여넣기 할 때 Ctrl + c / Ctrl +v가 아니라, Ctrl + ins, Shift + ins!
// commit할 때 쓰일 유저이름
git config --global user.name (Git닉네임)
// commit할 때 쓰일 유저이메일
git config --global user.email (Git이메일)
이렇게 설정된 내역을 확인하려면 아래와 같은 코드를 입력한다.
git config --list
긴 문장의 일부에서 유저네임과 메일을 확인할 수 있다.
이제는 로컬경로를 지정해야하는데, 파일탐색기에서 경로를 복사하면 편하다.
하지만 파일탐색기의 경로를 복사하면 \(역슬래쉬)이지만 git bash에서는 /(슬래쉬)로 입력해야한다.
https://hi098123.tistory.com/11
스마트하게 위 사이트를 이용해 역슬래쉬를 슬래쉬로 바꾸면 편하다.
cd C:/Users/......복사한 경로
명령어를 입력하면 노란 글씨로 경로가 표시된다.
이제 이 디렉터리를 로컬 저장소로 설정한다.
// 로컬저장소로 설정
git init
// 로컬저장소 설정을 취소하려면
rm -r .git
git init을 입력하면 초기화되었다고 뜨고, master가 되었다.
경로에 들어가 숨김파일을 확인해보면 .git이라는 폴더가 생겼다.
아래 명령어를 입력하면 현재 상태를 알 수 있다.
git status
아무것도 하지 않았기 때문에, 아직 커밋이 없다고 뜬다.
2.3 Github 레파지토리 생성
이제 로컬저장소의 파일과, 온라인의 레파지토리를 연결하기 위해 깃허브에서 레파지토리를 생성한다.
git허브에 접속, 로그인 후 아이콘을 클릭한 후 your repository에 들어가면 아래와 같은 화면이 뜬다.
오른쪽 New 클릭 -> Create New Repository
프로젝트의 목적이 잘 드러나도록 이름과 설명을 작성한 후,
public (공개) / private (미공개) 를 선택하고
README파일(프로젝트에 대한 내용을 설명하는 파일)을 생성하길 원하면 체크.
.gitignore 는 Git에 저장하지 않을 파일들을 설정하는 파일이다.
자바의 경우 src 폴더안의 .java파일만 있으면 실행할 수 있는데, 실행하는순간 .class파일 등 여러 부가파일들이 생성되게 되는데, gitignore를 작성하지 않으면 이러한 부가파일까지 같이 레파지토리에 커밋되고 생성되기때문에 지저분해진다. 나의경우는 자동생성을 체크하지 않고 별도로 생성해주기 때문에 pass. (아래 부록 : git .ignore 자동완성 프로그램 참고.)
Choose a license는 다른 라이센스를 가져다 쓰거나 본인이 쓴 코드는 이러이러한 라이센스를 따른다고 알리기 위한 것인데, 아직 학습용인 나에겐 중요치 않은 듯하다.
설정을 해주고 Create repository 버튼 클릭!
이제 repository가 생성되었다.
2.4 레파지토리 연결 및 업로드(add / commit / push )
로컬저장소와 레파지토리를 연결해주기 위해 위의 레파지토리 링크가 필요하다.
레파지토리 연결
git remote add origin 레파지토리주소
연결된 레파지토리 확인
git remote -v
그리고 커밋을 하기 위해선 추가든 변경이든 내용이 있어야 하므로,
IDE(나의 경우 IntelliJ)에서 New - Java Project, New- Class를 통해 Hello World를 찍어주었다.
아래는 스테이지로 넘기고, 커밋하는 명령어이다.
<git add 명령어 류 >
변경내용의 일부만 넘길 때 : 수정한 파일/경로를 추가
$ git add <파일/디렉토리 경로>
현재 디렉토리의 모든 변경 내용을 모두 스테이징 영역으로 넘김 ->
git add .
작업 디렉토리 내의 모든 변경내용을 모두 스테이징
git add -A
변경 사항을 터미널에서 직접 눈으로 하나씩 확인하면서 스테이징 영역으로 넘기거나 또는 제외할 때
git add -p
=======================
커밋 메시지 추가.
git commit -m "첫 커밋"
master 브런치에 푸쉬
git push -u origin master
git add . 과 git add -p가 차이가 없어보이는데,
git add . 은 명령어를 실행한 경로 이하에서 발생한 변경내용만 포함하는 반면,
git add -A는 작업디렉토리 상모든 변경 내용을 포함한다. 즉, gi add . 을 프로젝트 최상위경로에서 실행하면 -A와 동일한 효과. (https://www.daleseo.com/git-add/ 를 참고하였음.)
나는 git add -A로 진행하였다.
여기까지 하면 Push까지 완료.
Github에 가보면 커밋이 된 모습을 확인할 수 있다.
3.부록
아래의 사이트를 이용하면 손쉽게 .git ignore파일을 만들 수 있습니다.
https://www.toptal.com/developers/gitignore
저의 경우 InteliJ와 Java를 검색하여
메모장에 붙여넣기 후 .gitignore 로 저장하여 유용하게 사용했습니다.
4. 마치며
Git Bash는 GUI에 익숙한 우리에게 너무나 힘듭니다. 2023년에 터미널이란 쉽지 않습니다.
다음 포스트는 GIt GUI프로그램인 SourceTree를 통해서 한층 쉽게 Git을 관리하는 방법을 포스팅 하겠습니다.
'About Dev. > Git' 카테고리의 다른 글
깔끔하고 직관적인 Git GUI 툴, 소스트리(Sourcetree) 설치 및 사용법 (0) | 2023.07.12 |
---|