GIT & GitHub

GIT을 사용하는 이유

버전 관리, 백업, 협업

GIT : 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템

Github : Git Repository 를 관리할 수 있는 클라우드 기반 서비스

GitHub 페이지

GitHub 페이지 설명

Git 환경 설정

사용자 정보 입력

버전을 사용할 때마다 그 버전을 만든 사용자 정보도 함께 저장하기 때문에 아래 명령어로 사용자 정보를 설정한다.

git config --global user.name "[User-name]"
git config --global user.email "[E-mail]"

Git 저장소 제어

저장소 만들기

저장소를 만들고 싶은 디렉터리로 이동해서 git을 초기화 하면 그 때부터 해당 디렉터리에 있는 파일들을 버전 관리 할 수 있음

user01@ubuntu:~/바탕화면/Github$ git init
/home/user01/바탕화면/Github/.git/ 안의 기존  저장소를 다시 초기화했습니다
user01@ubuntu:~/바탕화면/Github$ ll
합계 32
drwxrwxr-x  8 user01 user01 4096  4  7 14:14 ./
drwxr-xr-x 11 user01 user01 4096  4  5 09:54 ../
drwxrwxr-x  7 user01 user01 4096  4  9 13:46 <u><strong>.git/</strong></u>

💡 .git 디렉터리가 생성되면서 git을 사용하면서 version이 저장될 저장소(repository)가 생성 (windows 에서는 기본적으로 파일이 숨겨져있음)

git 상태 조회

user01@ubuntu:~/바탕화면/Github$ git status
현재 브랜치 master
	#On branch master : 현재 master 브랜치에 있음
아직 커밋이 없습니다

커밋할 변경 사항:
  (스테이지 해제하려면 "git rm --cached <파일>..." 사용하십시오)
         파일:       test
	#git add test 결과 커밋할 파일이 대기중인것을 출력할 수 있음
추적하지 않는 파일:
  (커밋할 사항에 포함하려면 "git add <파일>..." 사용하십시오)
        sprint-cozstory-frontend/

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add" 사용하십시오)

user01@ubuntu:~/바탕화면/Github$ git diff
	# 버전별 내용 상세 비교

💡 tracked 파일과 untracked 파일 차이 tracked 파일은 git에서 버전관리를 하고 있는 파일이고 untracked는 신규로 생긴 파일이기에 추적하지 않은 파일로 분류됨

git 버전 확인

git log

git log --stat
	# 가장 최근의 커밋부터 순서대로 커밋 메시지와 관련 파일이 나열됨
git log --oneline
	# 한줄에 한 커밋씩 간략히 나타내줌
git log [브랜치명1]..[브랜치명2]
	# 브랜치 사이의 차이점 출력

git log --oneline --branches --graph

git 스테이징

git add [파일명]
	# 해당 파일 수정한거 추가
git add .
	# 해당 디렉터리에서 수정한거 전부 추가

git commit -m "메세지"
git commit -am [파일명]
	# add, commit 동시 사용
git commit --amend 
	# commit 메세지 수정

git commit 보류

git add [파일명]
	# 파일 수정하다가 다른 파일 수정해야함 하지만 기존작업을 신규작업을 마치고
	# 다시 기존작업을 이어서 하고싶을때 이렇게 진행
git stash
git stash list #보류 중인 목록 조회
git stash pop  #기존작업 불러오기
git stash drop #기존작업 삭제

git 복원

git checkout -- "[파일명]"
	# 파일 수정을 했는데 다시 원본으로

###커밋을 삭제 하면서 복원
git reset HEAD "[파일명]"
	# git add 한 후에 취소하는 명령
git reset HEAD^
git reset --mixed HEAD^ #같은 명령
	# 가장 마지막에 한 커밋을 취소하는 명령
git reset --soft HEAD^
	# 최근 커밋을 하기 전 상태로 작업 트리를 되돌림
git reset --hard HEAD^
	# 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업트리를 되돌림 (되돌린 내용은 복구 X)
git reset [--soft|--hard] [commit hash]

###커밋을 삭제하지 않고 복원
git revert [commit hash]

브랜치 관리

git branch
	# branch 조회
git branch [브랜치명]
git checkout -b [브랜치명]
	# branch 생성
git checkout [브랜치명]
	# 합쳐져 있는 저장소에서 브랜치를 생성(약간 가지를 하나 치는 느낌)

💡 HEAD는 작업중인 브랜치를 가리키는 포인터

브랜치 병합

git merge [병합할 브랜치]

git merge [병합할 브랜치] --edit
	# 커밋메세지 수정
git merge [병합할 브랜치] --no-edit

git branch -d [삭제할 브랜치]

💡 병합 및 충돌 해결 프로그램

원격 저장소 연결

git remote add [저장소 별칭] [원격 저장소 주소]

git clone [ssh주소] [디렉터리 명]
	# 이때 디렉터리가 없으면 자동생성됨

git push -u [저장소 별칭] [브랜치 이름]
	# 수정된 코드 업로드
	#-u 옵션은 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하기 위한것
	#처음에 한번만 사용하면 됨

git pull
	# 업로드된 코드 다운 후 덮어쓰기

git fetch
	# 업로드된 코드 현황만 git status를 통해 알수 있게 fetch 정보만 받아옴
git checkout FETCH_HEAD
	# 페치로 가져온 원격 저장소 정보는 FETCH_HEAD라는 브랜치로 가져옴
### 페치된 후에 최신 커밋을 병합하려면 git pull을 사용하거나 git merge 명령으로 병합

리눅스의 지역저장소와 원격 저장소 SSH 연결

아래처럼 RSA 공개키를 복사한 후 GitHub 환경설정에서 키추가

ssh-keygen
ssh-keygen Generating public/private rsa key pair. 
Enter file in which to save the key (/home/ylo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):  Enter same passphrase again:
Your identification has been saved in /home/ylo/.ssh/id_rsa. #프라이빗 키 경로
Your public key has been saved in /home/ylo/.ssh/id_rsa.pub. #퍼블릭 키 경로
The key fingerprint is: SHA256:Up6KjbnEV4Hgfo75YM393QdQsK3Z0aTNBz0DoirrW+c ylo@klar
The key's randomart image is:
+---[RSA 2048]----+ |    .      ..oo..| |   . . .  . .o.X.| |    . . o.  ..+ B| 
|   .   o.o  .+ ..| |    ..o.S   o..  | |   . %o=      .  | |    @.B...     . |
|   o.=. o. . .  .| |    .oo  E. . .. | +----[SHA256]-----+ klar (11:40) ~>

README 파일

소프트웨어 프로젝트, 오픈 소스 프로젝트, 라이브러리, 프레임워크 등의 개발 작업에서 매우 중요하며 이 파일은 프로젝트를 처음 접하는 사람들에게 프로젝트에 대한 정보를 제공하고, 프로젝트를 이해하고 사용하기 쉽도록 도와줍니다. readme 파일은 일반적으로 프로젝트의 목적, 설치 및 설정 방법, 사용 예제, 기능 설명, 제한 사항 등과 같은 정보를 제공합니다. 또한 프로젝트에서 사용하는 라이브러리, 외부 종속성 및 라이센스와 같은 정보도 포함될 수 있습니다. 이 파일은 다른 개발자들이 프로젝트를 사용하기 전에 이해해야 할 중요한 정보를 제공합니다. 따라서 readme 파일이 잘 작성되어 있으면 프로젝트를 더 쉽게 이해하고, 사용할 수 있습니다. 또한 readme 파일은 프로젝트를 배포하는 데 있어 필수적인 요소 중 하나이며, 프로젝트에 대한 문서화를 제공하는 것으로도 볼 수 있습니다. 따라서 프로젝트를 시작할 때, readme 파일 작성에 충분한 시간을 투자하여 프로젝트의 가치를 높이고, 다른 사용자들이 프로젝트를 이해하고 사용하기 쉽게 만드는 것이 좋습니다. readme 파일은 마크다운 문법을 사용하기 때문에 확장자는 README.md 을 사용

💡 Git을 사용할 수 있는 도구

  • 토터스깃 : 윈도우 전용 프로그램으로 윈도우 탐색기로 추가되는 프로그램
  • 소스트리
  • CLI(Git Bash)
  • 깃허브 데스크톱 : Git 기능을 GUI로 구현함

Leave a Comment