Project Icon

tutorial-git

Git使用教程,版本控制与团队协作基础

本教程全面介绍Git基础知识,包括配置、SSH设置、代码提交、源码更新、版本回滚和分支管理。内容涵盖Git在团队协作中的应用及GitHub平台的作用,适合开发人员和团队快速入门Git版本控制系统。

어떻게 깃을 사용하는지 빠르게 알아봅시다

Quick learn How to use the Git

가이드 페이지에서 보기

:innocent: 바쁘잖아요 다들

  • 읽는데 걸리는 예상시간 15분
  • 다 외우기 위하여 반복 학습이 필요한 횟수 3번

:flushed: 누가 읽어야 할까요

  • 개발 회사에 일하는 Git을 모르시는 개발자.
  • Git을 도입할지 망설이시는 관리자, 담당자.
  • 2명이상의 협업을 하는 스타트업 담당자, 인디 개발자는 도입을 고려해주세요.

:clap: 시작하며

깃을 왜 사용하죠?

  • 빠른 협업환경 조성

  • 누가, 언제, 무엇을, 왜, 어떻게 수정했는지 코드리뷰가 가능.

  • 이슈트래커 (Issue Tracker) 지원.

  • 깃헙 (GitHub)을 이용하여 자신의 git을 쉽게 공유 가능.

  • 지속적인 통합 (Continuous Integration) 지원.

  • Visual Studio, Jetbrains IntelliJ, Android Studio 등 대부분의 IDE에서 git 연동 제공.

  • 요약: 협업을 위해서, 개발에서 사용, 두명 이상이 똑똑하게 소스를 공유하고 개발한 소스들을 합치세요!

도대체 깃헙(GitHub)이 뭐야!?

  • 디자이너에게는 Dribbble, 데이터사이언티스트에게는 Kaggle이 있듯이 개발자에게는 깃헙 (Github)이 있습니다.
  • 여러분이 퇴근길에 페이스북으로 글을 둘러보며 좋아요 하듯이 개발자들은 깃헙으로 스타(star)를 날립니다.
  • 진짜 퇴근길에 깃헙 들어가는 개발자가 있다면 :scream:
  • 깃헙(Github)랑 깃(Git)은 다른 것입니다. 깃헙이 깃을 기반으로 온라인으로 서비스하는 형태입니다.
  • 쉽게 생각해서 Microsoft® Office를 Office 365로 서비스하는 것과 비슷하다 생각해주세요.

깃이 어떤 역할을 하는건가요?

  • 소스 병합 (merge, rebase)
  • 소스 리비전 관리 (reset, commit, branch)
  • 소스 릴리즈 (push)
  • 소스 태깅 (tag)
  • 소스 변경사항 검토 (diff, log)

깃은 어디에서 지원하나요?

  • 윈도우즈 (Windows)
  • 맥 (OS X)
  • 리눅스 (Ubuntu, CentOS, Redhat, Debian, etc)
  • 유닉스 (FreeBSD, Solaris, etc)

:wrench: 설정

  • 처음 시작하는 것이라면 git의 config 과정을 진행해야합니다.
  • git config 명령어를 이용하여 계정에 대한 정보를 설정합니다.
$ git config --global user.name "Kenneth"
$ git config --global user.email "kenneth@pigno.se"
  • 깃은 초기에 git init 작업을 진행합니다
  • 혹여나 GitHub에서 클론을 받은경우 이 작업은 필요하지 않습니다.
  • 아래 샘플 코드를 확인해주세요.
$ git init
  • git init을 하셨으면 git 리모트를 설정하실 수 있습니다.
  • git 리모트란 git을 원격저장소에 저장하는 앤드포인트를 의미합니다.
$ git remote add origin https://github.com/KennethanCeyer/tutorial.git
  • git 리모트 URL을 이용하여 원격저장소에 저장된 파일을 컴퓨터로 복사해올 수 있습니다.
  • 이때 git clone 명령어를 사용하여 복사를 시작합니다.
$ git clone https://github.com/KennethanCeyer/tutorial.git
  • git clone을 통해 원격파일을 복사해오면, origin 에는 기본적으로 클론해온 리모트 URL이 저장되있습니다.

:lock: SSH

  • git 연결을 보다 안전하고 빠르게 하기 위해서는 SSH Key 등록을 권장합니다.
  • 이미 존재하는 문서로 SSH 생성 가이드를 참고하시거나 아래 절차를 따라주시면 됩니다.
  • 우선 ssh-keygen 명령어로 SSH Key를 생성하시면 됩니다.
Refer SSH
  • SSH Key를 생성하셨으면 ~/[사용자 폴더]/.ssh/ 에 파일이 존재하는 것을 확인하실 수 있습니다.
Refer folder ssh
  • 생성한 키 중 id_rsa.pub는 GitHub에 등록해주셔야 합니다.
  • 아래 절차를 따라해주시면 됩니다.
  • GitHub 홈페이지를 접속하셔서 로그인을 해주세요.
  • ProfileSettings 메뉴를 눌러주세요 (아래 그림을 참고해주세요.)
Refer Setting
  • Settings 화면 중 우측 사이드메뉴에서 SSH and GPG keys를 클릭해주세요.
Refer SSH Keys
  • SSH Keys 화면에서 New SSH key 버튼을 찾아 클릭 해주세요.
Refer New SSH key
  • 입력 화면에 아까전의 id_rsa.pub의 내용을 입력해주시면 됩니다.
Refer SSH contents

Q. SSH 설정을 해도 아이디와 비밀번호를 물어봐요!

접속 정보에서 Use SSH를 클릭해 SSH 접속 정보를 이용하시기 바랍니다.

SSH connection string

이때, git remote set-url 명령어를 이용하여 기존의 원격지 주소를 수정해야 합니다.

SSH remote set-url
# 혹시 HTTPS 주소를 Remote URL로 사용하는지 체크해주세요.
# Remote URL은 ssh 포맷을 사용해주셔야 ssh 인증을 통해 아이디/비밀번호 입력을 넘어가실 수 있습니다.

# origin의 Remote URL 변경방법.
$ git remote set-url origin git@github.com:KennethanCeyer/tutorial-git.git

# origin의 Remote URL이 제대로 변경됬는지 체크해주세요.
$ git remote show origin

:page_with_curl: 소스 기록

  • 소스를 업로드 하기 위해서는 git add 명령어를 이용합니다.
  • 샘플을 참고하세요
$ git add .
  • ignore 파일이나, 삭제한 파일 이력까지 커밋을 하실 경우, -f 옵션을 이용합니다.
$ git add . -f
  • git remote show origin을 통해 origin에 리모트 주소가 잘 등록되었는지 확인해보세요.
Remote show origin

:pencil2: 소스 커밋

  • 소스를 커밋하시면 staged 상태의 파일이 히스토리로 기록되고 적재됩니다.
  • 파일 추적상태의 경우 git status 명령을 이용해서 확인합니다.
$ git status
  • git add 이후 git status를 하면 아래와 같은 화면이 나옵니다.
Git add files
  • Staged 상태의 파일은 아직 기록된 상태가 아닙니다.
  • 파일의 기록을 위해서는 커밋 작업이 필요합니다.
  • git commit 명령을 통해 Staged 상태의 파일을 커밋할 수 있습니다.
Git commit
  • -m 옵션을 이용하여 커밋 메시지를 작성하는 것을 권장합니다.
  • 실수로 커밋을 하여, 다시 커밋을 할 경우 커밋을 덮어씌울 수 있습니다. 이때 --amend 옵션을 이용합니다.
$ git add *
$ git commit -m "UI 레이아웃 이슈 수정."

# 수정사항 발생
$ git add *
$ git commit -m "UI 레이아웃 이슈 수정 및 관리자 벨리데이션 추가." --amend

:tada: 소스 업데이트

  • 상대방이 커밋한 파일은 명령어를 통해서 직접 업데이트를 하셔야 동기화가 됩니다.
  • 이때 사용하는 명령어는 git pullgit fetch가 있습니다.
# main 브랜치를 pull하여 업데이트
$ git pull origin main

# main 브랜치를 fetch하여 업데이트
$ git fetch origin main
  • pullfetch 의 차이점은 merge 작업을 하느냐 안하느냐로 나뉘어지며.
  • pullfetch + merge 작업이라고 생각하시면 됩니다.

:clock11: 소스 복원

  • 여러분이 git을 쓰는 이유중에 중요한 부분을 차지하는 영역입니다.
  • 정상적으로 커밋된 히스토리는, 리비전으로 git에 관리됩니다.
  • 실수로 잘못 작업하였거나, 예전 버전으로 롤백하여 적용할 경우 여러분은 예전 버전으로 리셋하실 수 있습니다.
  • 리셋은 git reset 명령을 사용합니다.
$ git reset HEAD^ --soft
  • git reset 다음 인수로는 되돌리는 버전의 위치를 가리킵니다.

  • 현재위치(HEAD)를 기준하여 상대적인 위치를 설정하거나, 특정 버전 리비전 고유의 해시값을 지정합니다.

  • HEAD를 확인하시고 싶으면 git reflog 명령을 이용합니다.

  • git reset의 옵션 중 리셋 특성을 정하는 --soft, --hard, --mixed 옵션이 있습니다.

  • 위 옵션은 아래에서 자세히 설명합니다.

  • --soft는 약한특성의 리셋입니다, 되돌릴 때 기존의 인덱스와 워킹트리를 보존합니다.

  • --hard는 강한특성의 리셋입니다, 되돌릴 때 기존의 인덱스와 워킹트리를 버립니다.

  • --mixed는 중간특성의 리셋입니다, 되돌릴 때 기존의 인덱스는 버리고 워킹트리를 보존합니다.

  • 되돌리는 위치의 경우 아래와 같은 타입이 있습니다.

# 바로 이전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD^ --hard

# 바로 두번째 전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD~2 --hard

# 특정 리비전의 기록으로 인덱스는 버리고 워킹트리를 보존하여 리셋.
$ git reset 991ee8c --mixed

:seedling: 브랜치

  • 브랜치는 한국말로 가지(branch)입니다.
  • git에서는 마치 가지를 펼치듯 하나의 근본에서 여러 갈래로 쪼개어 관리할 수 있습니다.
Git branch

이미지 출처 StackOverflow

  • branch의 특징은 아래와 같습니다.

  • 기본은 main 브랜치라고 불리며, 필수로 제공되는 브랜치이다.

  • 서로다른 브랜치들은 같은 조상을 가지고 있다.

  • 브랜치를 새로 만드신다면 git branch [브랜치명]으로 생성합니다.

  • 아래 명령라인에서는 new라는 브랜치를 생성하고 있습니다.

$ git branch new
  • main
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

问小白

问小白是一个基于 DeepSeek R1 模型的智能对话平台,专为用户提供高效、贴心的对话体验。实时在线,支持深度思考和联网搜索。免费不限次数,帮用户写作、创作、分析和规划,各种任务随时完成!

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

Trae

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号