Git

최성현·2023년 6월 16일
0

Git

목록 보기
1/1

선생님 정리

형상관리?(svn,cvs,git…..)
형상관리란?
소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다.
형상관리는 변경사항을 체계적으로 추적, 통제한다는 것. 이 말은 어떤 문서나 파일이 변경되었을 경우 변경된 내역을 기록하였다가 나중에 이를 찾아보아야 할 경우, 변경 원인과 변경 사항을 확인해야 할 경우에 대한 관리를 말한다.
많이 쓰이는 곳은 소프트웨어 개발에서 많이 쓰이지만 꼭 이에 대해서만 쓰는 것은 아니다. 예를 들어 회사 내에서 정책 문서가 있을 경우 이에 대한 변화와 왜 변경되었는지를 기록, 추후에 동일한 변경이 필요한 경우 이에 대한 과거 변경 요인들을 확인하기 위해서도 사용한다. 문서의 표지 다음, 목차보다 먼저 등장하여 변경사항을 기록하도록 하는 페이지를 많이 보았을 것이다.
소프트웨어 개발에서 많이 사용하게 된 것은 혼자 개발하는 경우에는 문서 변경과 같은 이력 조회로써 사용할 수 있지만 여러 사람이 함께 개발하는 경우 이에 대한 내역 확인이 필수이다. 버전을 확인하여 변경사항을 확인하고 이에 대해서 반영 및 수정하는 과정이 발생한다.
또한 혼자 개발하는 경우에는 버전의 충돌이 발생하지 않지만 똑같은 파일을 다른 사람과 공유하여 개발하고 있을 경우 이에 대한 충돌 해결로도 많이 사용된다.

형상관리 도구 종류

  1. CVS : 가장 오랫동안 사용되어 툴
  2. SVN : CVS의 단점을 보안하여 새롭게 만들어진 툴
  3. git : 최근 가장 대중화되어 있다.
    · GitHub : Git을 사용한 가장 유명한 형상관리라고 생각한다. 온라인으로 서비스를 진행한다.
    · GitLab : GitHub 와 같은 서비스로 GitHub의 후발주자라고 생각할 듯하지만 git에 대한 내용은 동일하고 GitHub와는 서비스 방식, 비용 등이 다르다. GitLab에 대해서는 추후 자세히 정리할 예정이다.
    · Google Repository : Google Cloud에서 제공하는 서비스로
    · AWS Code Star : AWS. 즉, 아마존 클라우드에서 제공하는 형상관리 툴이다. Cloud 9, CodeBuild, CodeCommit, CodePipelin 등을 제공하고 있다.
  1. https://github.com/ 회원가입
  2. github.com 로그인

git bash

쉘(shell)이란 키보드로 입력한 명령어를 운영체제에 전달
리눅스가 바로 유닉스 계열의 운영체제를 기반으로 만들어졌기 때문

git bash를 설치하면 윈도우 OS환경에서 리눅스 커맨드 사용 가능

Git할 폴더 들어가서 실행

git config --global user.name "이름"

git config --global user.email "tjdgus9773@gmail.com"

github가서 repository에 new -> repository name 기입 -> public/private 선택

->Add a README file 체크 (프로젝트 로그 관람가능) -> creating repository

<> Code 선택 -> https 주소 복사

Git할 폴더 들어가서 git bash 실행

git init

git remote add origin 깃주소

git add .

git commit -m "커밋 이름"

git push origin master

repository 들어가서 왼쪽 탭 main/master 선택해서 파일 보기

git checkout -t -b master origin/master < master로 변경

git pull origin master

git checkout 브렌치 이름 : 해당 브랜치로 이동

git branch 브렌치 이름 : 브랜치 생성 후 이동

git merge

해당 브랜치 가서 commit 후

git checkout master 이동 (안되면 git stash : 임시저장)

git merge 브랜치 이름

git push origin master

merge 완료

git push 할때 이름 패스워드 작성하라 뜰 때

원격 URL을 HTTPS에서 SSH로 전환해줘야한다

  1. Terminal(터미널)을 연다
  2. 현재 작업 디렉터리를 로걸 프로젝트로 변경
  3. 변경하려는 주소의 이름을 얻기 위해 기존 주소를 확인
git remote -v
  1. gir remote set-url origin 명령을 사용해 url을 HTTPS에서 SSH로 변경
git remote set-url origin "원하는 repository의 ssh주소"
  1. url이 변경되었는지 확인
git remote -v

git push/git pull 시도때 아래 에러가 뜰 경우

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

이런 에러가 발생하는 이유는 해당 git@github.com에 연결된 ssh key가 설정되어있지 않기 때문

ssh key를 만들고 이 키를 본인의 github 계정에 등록하면 해결

  1. ssh key 생성
ssh-keygen -t rea -C "본인 github계정 이메일"

=> ssh key를 만드는데 rsa(공개키 암호 알고리즘)방식으로 만들고 C 옵션은 그냥 고멘트라 써도되고 안써도 됨

  1. ssh-keygen 실행시 terminal 창에 어디 위치에 키를 생성할건지 지정하라함

엔터키를 누르면 기본 위치(~/.ssh/id_rsa.pub)에 생성

  1. 패스워드 지정

패스워드 지정하려면 입력

패스워드 지정 안하고 싶으면 그냥 엔터 눌러도 상관없음

  1. ~/.ssh/id_rsa.pub에 키가 생성되었다고 나옴

절대 이 키는 남에게 공개하면 안됩니다. (공개하면 그냥 나의 깃허브를 마음껏 사용하세요란 말과 같아요)

  1. 생선된 키를 Github에 등록
cat ~/.ssh/id_rsa.pub

후에 나온 ssh부터 끝까지 복사

복사한 키를 나의 github 계정에 세팅해주면 끝

5-1. github 로그인

5-2. Settings -> SSH and GPG keys

5-3. New SSH key 누르고 원하는 Title 입력

5-4. 복사한 ssh key 키 넣어주고 생성

Git 팀 프로젝트

  1. 조장(git맡은 사람)이 coorperation으로 사람들 초대해서 repository 만들기
  2. 한 사람이 repository 만들고 더미파일 master branch에 올리기(다른 사람이 같은 이름의 폴더 혹은 파일을 만들면 충돌 오류 발생 할 수 있음)
  3. 다른 사람들은 해당 repository 클론 받고 master branch를 자신의 branch로 merge하기

git merge하기

  1. 한 사람이 본인의 branch에 올리고 add commit push 수행
  2. 그 사람이 master branch로 이동해서 본인의 branch merge
  3. master branch에서 push 해주기

  1. 다른 사람들은 본인의 컴퓨터 master branch에서 master pull 받고 본인 branch로 master branch merge하고 본인의 branch에서 add commit push하기
    1-1. 혹시나 충돌이 생긴다면 본인의 파일이 master에 최신화되지 않아서 생기는 문제로 본인의 branch에 먼저 add commit push
    1-2. master branch로 이동해서 본인의 branch merge push 후 pull 시도

git commit 되돌리기 (push 취소)

reset: 되돌리고 싶은 시점의 commit이력으로 돌아가는 것(시간여행)
revert: 현재까지 남긴 이력들을 유지한 채 되돌리고 싶은 commit을 원상복귀시키는 것(복구commito 추가됨)

  1. commit이력 조회
git log --oneline

HEAD가 있는 곳이 현재 브랜치(master)를 가르키는 포인터
-> 가장 최근의 commit

  1. 돌아가고 싶은 commit 이후 commit 삭제

돌아가고 싶은 commit을 찾은 후 git reset 실행
reset hard -> 돌아가려는 이력 이후 내용 모두 삭제
(과거 commit들만 지우고 stage에 올려놓고 commit하고 싶으면 reset soft

git reset --hard "되돌리고 싶은 노란색 커밋명"

되돌리고 싶은 commit으로 복구
이 commit에 내가 stage에 올라온 파일들을 묶어서 내 로컬에 저장해 놓은 것(commit)

  1. github 복구

이후

git push (-f) origin master (잘 안될 경우 -f 사용 고민)
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글