tutorial-git

tutorial-git

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

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

GitGitHub版本控制协作开发代码管理Github开源项目
<h1 align="center">어떻게 깃을 사용하는지 빠르게 알아봅시다</h1> <p align="center"><img src="https://www.pigno.se/static/assets/images/octocat.svg" width="240" /></p> <p align="center">Quick learn How to use the Git</p> <p align="center"><a href="https://www.pigno.se/barn/tutorial-git/docs" target="_blank">가이드 페이지에서 보기</a></p>

: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를 생성하시면 됩니다.
<img width="760" alt="Refer SSH" src="./docs/images/fcd72616-69b0-4712-9098-9206df777cad.png" />
  • SSH Key를 생성하셨으면 ~/[사용자 폴더]/.ssh/ 에 파일이 존재하는 것을 확인하실 수 있습니다.
<img width="680" alt="Refer folder ssh" src="./docs/images/f7c3fb60-63bd-4611-9db8-6b694028228d.png" />
  • 생성한 키 중 id_rsa.pub는 GitHub에 등록해주셔야 합니다.
  • 아래 절차를 따라해주시면 됩니다.
  • GitHub 홈페이지를 접속하셔서 로그인을 해주세요.
  • ProfileSettings 메뉴를 눌러주세요 (아래 그림을 참고해주세요.)
<img width="260" alt="Refer Setting" src="./docs/images/edc03865-0e75-4fca-9577-8d63c5547808.png" />
  • Settings 화면 중 우측 사이드메뉴에서 SSH and GPG keys를 클릭해주세요.
<img width="760" alt="Refer SSH Keys" src="./docs/images/6400a29a-92fd-476e-9389-6bcd37f58dab.png" />
  • SSH Keys 화면에서 New SSH key 버튼을 찾아 클릭 해주세요.
<img width="480" alt="Refer New SSH key" src="./docs/images/1581b8f6-a8f4-455b-bd61-abc98be062db.png" />
  • 입력 화면에 아까전의 id_rsa.pub의 내용을 입력해주시면 됩니다.
<img width="640" alt="Refer SSH contents" src="./docs/images/1be45d6b-9b55-439b-bfd9-67b76dbf3860.png" />

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

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

<img width="400" alt="SSH connection string" src="./docs/images/99dda035-cfa6-4586-9827-82902cdeb609.png" />

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

<img width="760" alt="SSH remote set-url" src="./docs/images/63c9f406-7978-40bd-b3bd-53781bae8b07.png" />
# 혹시 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에 리모트 주소가 잘 등록되었는지 확인해보세요.
<img width="760" alt="Remote show origin" src="./docs/images/171e7a0a-b9e7-43d0-b07b-3ed1e2eceeb4.png" />

:pencil2: 소스 커밋

  • 소스를 커밋하시면 staged 상태의 파일이 히스토리로 기록되고 적재됩니다.
  • 파일 추적상태의 경우 git status 명령을 이용해서 확인합니다.
$ git status
  • git add 이후 git status를 하면 아래와 같은 화면이 나옵니다.
<img width="760" alt="Git add files" src="./docs/images/6382ff87-4c55-4c3f-9c99-ff92906e6df4.png" />
  • Staged 상태의 파일은 아직 기록된 상태가 아닙니다.
  • 파일의 기록을 위해서는 커밋 작업이 필요합니다.
  • git commit 명령을 통해 Staged 상태의 파일을 커밋할 수 있습니다.
<img width="760" alt="Git commit" src="./docs/images/ae9b3394-acce-41e5-ba59-773d3236829f.png" />
  • -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에서는 마치 가지를 펼치듯 하나의 근본에서 여러 갈래로 쪼개어 관리할 수 있습니다.
<img width="540" alt="Git branch" src="https://www.pigno.se/static/assets/images/git_tutorial_branch.png" />

이미지 출처 StackOverflow

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

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

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

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

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

$ git branch new
  • main

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多