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

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

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

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

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

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

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