기본 콘텐츠로 건너뛰기

[개발 기초] Git

git

Git이란?

어떻게 하면 여러 사람이 동시에 같은 프로젝트의 개발을 진행할 수 있을까? Git은 동일한 소스 코드를 두 명 이상의 사람이 효과적으로 수정하고 협업할 수 있도록 도와주는 분산 버전 관리 시스템이다.
Git

GitHub

GitHub는 전세계인이 소스 코드를 공유하고 오픈 소스 프로젝트를 진행할 수 있도록 도와주는 거대한 Git 저장소이다.
GitHub

Git의 명령어

Git 저장소를 프로젝트의 소스 코드 사진을 찍어놓은 마법의 사진첩으로 비유할 수 있다. 여기서 각각의 사진은 프로젝트의 파일이라고 생각하면 된다.

magic photo album

우리는 이 사진첩에 새로운 사진을 추가하거나, 사진을 삭제하거나, 사진의 내용을 수정할 수 있다. Git은 이러한 사진첩의 사진(파일)들을 용이하게 관리하기 위한 명령어들을 제공한다.

init

새로운 Git 저장소를 생성한다. 새로운 프로젝트를 시작할 때 사용한다.

git init

사진첩을 생성하는 명령어라고 생각하면 된다.

clone

원격 저장소에 있는 프로젝트를 로컬에 복사한다. Github 레포지토리의 오른쪽 상단에 있는 초록색 버튼을 클릭하면 복사할 수 있는 주소를 확인할 수 있다.

git clone

커맨드라인에서 다음과 같이 입력하면 로컬에 프로젝트를 복사할 수 있다.

git clone <원격 저장소 주소>

공유용 사진첩을 복사해서 내껄로 만들었다고 생각하면 된다.

add

Git 저장소에 파일을 추가한다. 파일을 생성하거나 수정한 후에는 반드시 이 명령어를 사용해야 변경 사항을 Git에 반영할 수 있다.

예를 들어, hello.txt 파일을 생성하고 다음과 같이 입력하면 Git에 파일을 추가할 수 있다.

git add hello.txt

만약 모든 파일을 추가하고 싶다면 다음과 같이 입력하면 된다.

git add .

이는 새로운 변경 사항이 있을 때 사진을 찍어놓는 것과 같다. 아무리 멋진 코드를 썼다고 해도 사진을 찍어놓지 않으면 Git에 반영되지 않는다.

전문 용어로는 변경 내용을 스테이징 영역에 추가한다고 표현한다.

물론, 사진을 아무리 많이 찍어도 사진첩에 넣지 않으면 의미가 없다. 따라서 다음에 설명할 commit 명령어를 사용해야 한다.

commit

Git 저장소에 저장된 모든 수정 사항을 하나의 버전으로 만든다. 이 명령어를 사용하면 Git은 현재까지의 변경 내용을 하나의 버전으로 만들고, 그 버전에 대한 정보를 저장한다.

commit 명령어는 -m 뒤에 메세지를 입력함으로써 커밋에 대한 설명을 추가할 수 있다. 예를 들어, 웹사이트에 버튼을 추가했다고 하면 다음과 같이 입력할 수 있다.

git commit -m "버튼 추가"

여기서 잊지 말아야 할 것은 commit을 하기 전에 add를 해야 한다는 것이다. add 없이 commit을 하면 아무 의미도 없는 커밋이 생성될 뿐이다.

branch & checkout

Git 저장소에 새로운 브랜치를 생성한다. 브랜치는 독립된 작업 공간으로, 여러 사람이 동시에 다른 작업을 진행할 수 있도록 도와준다.

예를 들어 철수와 영희가 게임을 만드는데 철수는 이즈리얼, 영희는 티모라는 캐릭터를 만들고 싶다고 하자.

이즈리얼과 티모

그러면 철수는 다음 두가지 방법중 하나를 통해 새로운 브랜치를 생성할 수 있다.

git branch "이즈리얼-제작"
---
git checkout -b "이즈리얼-제작"

첫번째는 브랜치를 생성하기만 하는 반면, 두번째는 브랜치를 생성하고 그 브랜치로 이동까지 하는 명령어이다.

마찬가지로 영희도 티모-제작이라는 브랜치를 생성할 것이고, 철수와 영희는 각각의 브랜치에서 서로 방해받지 않고 작업을 진행할 수 있다.

만약 다른 브랜치로 이동하고 싶다면 다음과 같이 입력하면 된다.

git checkout <브랜치 이름>

merge

다른 브랜치의 변경 사항을 현재 브랜치에 병합한다. 예를 들어, 철수가 이즈리얼-제작 브랜치에서 작업을 마치고 티모-제작 브랜치와 병합하고 싶다면 다음과 같이 입력하면 된다.

git merge "티모-제작"

merge conflict

일반적으로는 두 브랜치의 변경 사항이 자동으로 합쳐지지만, 두 브랜치가 서로 같은 파일의 같은 부분을 수정했을 경우에는 자동으로 합쳐지지 않는다. 이를 merge conflict라고 한다.

이 경우 Git은 다음과 같은 메세지를 출력하고, 두 브랜치의 변경 사항을 보여준다.

Auto-merging <파일 이름>
CONFLICT (content): Merge conflict in <파일 이름>
Automatic merge failed; fix conflicts and then commit the result.

이 경우 수동으로 변경 사항을 합쳐야 한다. 아주 귀찮다.

merge conflict

push

로컬 Git 저장소에 있는 변경 사항(커밋)들을 원격 저장소에 업로드한다. 이를 통해 내가 작업한 내용을 다른 사람들과 공유하고 협업할 수 있다.

git push <원격 저장소 이름> <브랜치 이름>

여기서 기본적으로 clone을 통해 원격 저장소를 복사하면 origin이라는 이름이 붙는다. 원격 저장소의 이름은 git remote 명령어를 통해 확인할 수 있다. 또한, GitHub의 기본 브랜치 이름은 main이므로 기본 브랜치에 커밋을 업로드하고 싶다면 다음과 같이 입력하면 된다.

git push origin main

사실 매번 푸시할 떄마다 origin과 브랜치 이름을 입력하는 것은 귀찮다. 다행히도 -u 옵션을 사용하면 이후에는 git push만 입력해도 이전에 입력한 원격 저장소와 브랜치에 자동으로 푸시된다.

git push -u origin main

또한, config를 통해 기본 원격 저장소와 브랜치를 설정할 수도 있다.

git config --global push.default current

위와 같이 설정하면 앞으로 git push 명령어를 사용할 때 자동으로 현재 작업하고 있는 원격 저장소와 브랜치에 푸시하게 된다.

push

pull

원격 저장소에 있는 변경 사항(커밋)들을 로컬 Git 저장소에 불러와서 현재 작업 공간에 병합한다. 이를 통해 다른 사람들이 작업한 내용을 내 로컬 저장소에 반영할 수 있다.

git pull

.gitignore

프로젝트를 진행하다 보면 함께 원격 저장소에 올릴 필요가 없는 다양한 파일들이 생성된다. 예를 들어, VSCode의 설정 파일들이 저장되는 .vscode 폴더가 있다. 또한, 중요한 정보(데이터베이스 비밀번호 또는 API 키 등)를 포함하는 .env 파일은 보안상의 이유로 원격 저장소에 올리지 않는다.

이러한 파일들은 .gitignore 파일을 통해 지정해줄 수 있다. .gitignore 파일에 명시된 파일들은 Git에 의해 추적되지 않고 저장소에 저장되지 않는다.

.gitignore 파일은 다음과 같이 작성한다.

.vscode
build
node_modules
.env
*.log

요약 그림

summary

이 블로그의 인기 게시물

[모집] 2024학년도 1학기 신규인원 모집: 3/10(일) 마감

안녕하세요, 구글 기술 앰버서더, 성균관대학교 Google Developer Student Clubs 입니다! GDSC (Google Developer Student Clubs)는 Google에서 학생들이 개발/리더십 능력을 향상할 수 있도록 지원하는 대학생 커뮤니티 프로그램입니다. 성균관대학교 GDSC는 구글 코리아, Google for Developers, SW중심대학사업단 등 다양한 단체와 협업하여 구글 기술을 대중에 알리고 관련 행사를 주최하며, 이러한 프로그램을 통해 협업성, 인적 네트워킹 및 리더십을 향상할 수 있습니다.

[11월 행사] 머신러닝/인공지능 (ML/AI) 스터디 워크샵: 사전 신청 오픈! — Google Developers 전문가와 함께하는 머신러닝/인공지능 학습, 텐서플로우 실습 및 네트워킹 기회! (11/9 사전신청 마감)

  👉 사전 신청 종료 추가적인 사전 신청을 원하시는 경우 연락 페이지 를 통해서 문의하시길 바랍니다. 업데이트 (11/8): 본 행사는 정책상 참여자 분들께서 요청하실 경우 행사 참여 확인서를 발급해드릴 예정입니다. 행사 참석 당일날 스태프 분께 말씀하시면 됩니다. 업데이트 (11/9):  상세한 행사 정보가 부분적으로 오류가 있어서 정정했습니다. (행사 시작 시간은 변경되지 않았습니다.) 기타 문의하실 사항이 있으실 경우 연락 페이지를 통해서 문의주시면 감사하겠습니다.   안녕하세요, 성균관대학교 Google Developer Student Club (GDSC) 입니다. Google Developers 전문가 분들과 함께 저희 GDSC SKKU TensorFlow 팀에서 11월 10일 💻November ML/AI Study Workshop💻을 주최합니다! 👏🏼 프로그램에서는 TensorFlow 기초 이해부터 주요 신경망 모델링 및 학습까지 TensorFlow 기술 전반에 대한 실습이 진행되며 관련 전문가 분들과의 네트워킹 기회가 제공될 예정입니다. 🍔 또한 본 행사에서는 참가자분들을 위한 간식, 음료와 간단한 저녁식사도 준비되어 있습니다! 👇🏼 이벤트 상세 내용은 아래와 같습니다. 📍 일시: 11월 10일 (금) 16:00 ~ 20:30 📍 장소: 자연과학캠퍼스 화학관 1층 330102 첨단강의실 📍 참가대상: 성균관대학교 학부생 누구나 📍 프로그램 내용 I. TensorFlow 기초 이해 II. 주요 신경망 모델링 및 학습 (CNN, Cloud Run, RNN) III. 종료 및 네트워킹 📍 진행자 이영빈 님 (GDG Songdo Organizer) 한상준 님 (GDG Songdo Organizer) 권정민 님 (Google Developer Experts) 장현수 님 ((전)성균관대학교 박사) 📍 사전 신청링크 https://gdscskku.blogspot.com/mlai-study   머신러닝 및 인공지능 분야 및 Tenso

[글로벌 IT전문가와 킹고인의 만남 시즌2] 행사 신청/참석 안내

  글로벌 IT전문가와 킹고인의 만남 시즌2에 대해 많은 관심 감사드립니다! 본 웹페이지를 통해서 학우님들의 원활한 행사 신청 및 참석을 위해 GDSC Community Platform 사용법을 안내드리고자 합니다 [카카오톡으로 링크 접속하신 경우 안내] 카카오톡 내장 브라우저에서 Google 로그인 시 "액세스 차단됨: Bevy의 요청이 Google 정책을 준수하지 않습니다"로 표시되는 사례가 확인되었습니다. 구글 계정 보안 정책상 카카오톡 내장 브라우저 내 로그인을 허용하지 않은 관계로, 디바이스에 설치된 기본 브라우저(Google Chrome 등)를 통해서 신청하시길 바랍니다. 👉 글로벌 IT전문가와 킹고인의 만남 시즌2 신청하기 플랫폼 인프라스트럭처 운영사/제공자: Google LLC/Bevy Labs, Inc. 행사 신청하기 1. GDSC 이벤트 플랫폼 웹사이트에서 구글 계정을 이용해서 로그인을 합니다. 2. (처음 로그인하는 경우) Sign up 페이지에서 필요한 정보를 입력합니다. 3. 로그인인 된 상태일 경우 "RSVP for this event now!" 아래에 온라인/오프라인 참석을 선택할 수 있습니다. 희망하시는 참석 방법 오른쪽에 있는 RSVP 버튼을 클릭하시면 됩니다. 4. RSVP 클릭 후 참석자 (Attendee Information) 입력하세요. (한글 설명, 학번, 전공 등) 5. RSVP Confirmed가 표시될 경우 신청이 완료되었음을 확인하실 수 있습니다. 행사 참석하기 (온라인) 행사가 시작될 경우 행사 웹페이지에서 [Join Event] 버튼이 표시됩니다. [Join Event] 버튼을 클릭하시면 바로 참석하실 수 있습니다. 참고: 행사 신청하신 경우 시스템 상 자동으로 이메일을 통해서 안내드립니다.

[12월 행사] ⭐ GDSC에서 연합 해커톤💻 행사를 개최합니다! 🎉

신청 URL: https://festa.io/events/4457 신청 마감시간: 12월 22일 금요일 21시 안녕하세요, 성균관대학교 Google Developer Student Club (GDSC) 입니다.  12월 28일부터 29일까지 마루 180에서 서울여자대학교, 연세대학교, 한양대학교의 GDSC 지부와 연합한 해커톤 대회를 주최하고 있습니다. 본 프로그램에서 참가자들은 서울여자대학교, 연세대학교, 한양대학교 학생들과 연합하여 팀을 구성하고 기업의 API 혹은 자체 개발 상품을 활용한 집중 해킹을 진행하며, GDE(Google Developer Experts) 및 GDG(Google Developer Groups)의 멘토링을 받아 프로젝트를 개발하고, 제휴기업 세미나 청강 및 네트워킹을 진행합니다. 행사 참가자와 수상팀에게 식사와 상품도 제공될 예정입니다. 아래 링크를 통해 이벤트 상세 내용 확인 및 티켓 구입이 가능합니다.  신청은 12월 22일 금요일 21시까지입니다. https://festa.io/events/4457 타학교 학생들과 연합하며 팀워크를 키우고 싶으신 분, 프로젝트 개발 경험을 쌓고 자신의 분야에 전문성을 키우고 싶으신 분, 전문가 및 공통 관심사의 학우들과 정보를 교환하고 협력하고 싶으신 분 모두 환영입니다! 학부생 여러분들의 많은 관심 부탁드립니다. 🙌🏼  공동 주최:  GDSC Yonsei | GDSC SWU | GDSC Hanyang | GDSC SKKU | 알파코 K-디지털 플랫폼(DT 그라운드) 주관: 성균관대학교 SW중심대학사업단 후원:  Google for Developers,  MONSTER ENERGY,  Wrtn Technologies

[9월 행사] 구글 클라우드 스터디 워크샵: 사전 숙지사항

9월달 구글 클라우드 스터디 워크샵에 신청해주신 여러분 감사드립니다. 행사 참여에 앞서, 아래의 사전 숙지사항을 반드시 확인해주시기 바랍니다. 여러분의 원활한 참여를 위해 준비 사항을 지켜주시면 감사하겠습니다. 필수 물품: 개인 노트북 필수 : 워크샵 동안 여러분의 개인 노트북을 사용하게 되는 만큼, 필히 노트북을 지참해 주시기 바랍니다. 실물 해외 신용카드 (VISA/MasterCard): GCP 계정을 생성할 때 결제 정보가 필요합니다. 권장 물품: 노트북 충전기/멀티탭: 각자의 노트북을 사용할 예정이므로 충전이 필요한 기기를 위해 노트북 충전기 및 멀티탭을 지참하시는 것을 추천드립니다. 진행장소: 성균관대학교 자연과학캠퍼스(수원) 화학관 1층 330118 첨단강의실 Google Map:  https://maps.app.goo.gl/841LUEsJB1mB8YPG6 카카오 맵: https://kko.to/-64Z139x7E 네이버 지도:  https://naver.me/GNUIWpp5