[DE] git - github

1. git과 github

  • Git은 버전 관리 시스템입니다.
    • 로컬에서 작업한 내용을 쉽게 추적하고 파악할 수 있도록 하기 때문에 매우 유용한 시스템입니다.
  • Git-hub는 원격 코드 저장소입니다.
    • 인터넷에서 소프트웨어 개발과 버전 관리를 할 수 있도록 합니다.
    • 로컬에서 작업하던 내용이 실수로 없어지더라도 복구할 수 있기 때문에 매우 편리하고 유용합니다.
    • 개발 프로젝트를 진행하거나 코드를 작성한 뒤 깃헙에 보관한다면 개발을 했던 컴퓨터가 아니어도 작업 내용에 접근할 수 있습니다.

  • 위 이미지는 깃과 깃헙의 관계를 도식화한 이미지입니다. 로컬에서 작업한 내용을 깃을 통해 관리하고, 깃헙에서 원격으로 접근할 수 있도록 하는 과정입니다.

2. git과 git-hub로 작업하는 과정

1. 온라인에서 로컬로 레포지토리 가지고 오기

  • 우선 git-hub에서 레포지토리를 만들거나 fork한 후 가져오려는 레포지토리에서 주소를 복사합니다. 그리고 가져온 주소를 터미널에 입력하면 터미널이 위치한 디렉토리에 깃헙의 레포를 내려받을 수 있습니다.
#git clone이라는 명령어로 깃헙에서 레포지토리를 내려받을 수 있습니다.
$ git clone https://github.com/{유저이름}/{레포이름} 

#만약 레포를 잘못 가져왔어도 .git만 따로 지울 수 있습니다.
#휴지통으로 들어가지 않고 바로 삭제됩니다. 다른 .git 파일도 지워지지 않도록 주의합니다.
$ rm -rf .git
  • 로컬에서 온라인 레포지토리 주소 추가하기
#로컬에 온라인 레포지토리 이름을 추가하면 편리하게 push/fetch/merge 등을 할 수 있습니다.

$ git remote add {이름} {주소} #로컬에 온라인 레포 주소 저장하기
$ git remote -v #로컬에 저장된 온라인 레포 목록 확인하기

2. 작업한 내용 git-hub에 업로드하기

  • 온라인 레포에서 받은 프로젝트를 수정한 뒤 다시 git-hub에 올리는 과정입니다.
  • 로컬에서 git-hub로 업로드하기 위해서는 3가지 과정을 거쳐야 합니다.
  • 먼저, git으로 레포지토리를 관리하려면 git에게 "이 레포를 관리할거야!"라고 알려주는 과정이 필요합니다.
$ git init {파일명} #git init으로 어떤 레포를 관리할 건지 알려줍니다.
  • git이 생성되었다고 자동으로 모든 파일을 관리하지는 않습니다. 깃이 어떤 파일들을 기록할지 지정해주어야 합니다. 이 작업을 스테이징(stage에 올린다)라고도 합니다.
$ git add {파일명}
  • 스테이징을 했다면 이제 커밋을 할 차례입니다.
  • 커밋은 사진처럼 그 순간을 기록하는 것입니다.
  • 커밋을 할 때는 메시지를 반드시 기록해야합니다. 메시지가 없다면 커밋할 수 없습니다.
#git commit을 사용하면 기록할 에디터를 열어줍니다.
$ git commit

#git commit -m "message"를 사용하면 짧은 커밋 메시지를 남길 수 있습니다.
$ git commit -m "message"
  • 커밋까지 완료했다면 현재 깃이 어떤 파일을들을 추적하고 있는지, 파일이 어떤 상태인지, 어떤 것이 커밋이 되었고, 커밋이 되지 않았는지 확인할 필요가 있습니다.
$ git status #현재 어떤 파일을 추적하고 있는지 등 git 상태에 대해 알려줍니다.
$ git log #현재 작업하고 있는 git의 메시지, HEAD 등의 기록을 보여줍니다.
  • 여기까지 완료했다면 이제 git-hub에 결과물을 업로드할 수 있습니다.
$ git push {레포이름} {브랜치}

or

$ git push {URI}
  • 푸쉬를 하면 git-hub에 결과물이 올라가게 됩니다. pull-request로 팀원이 볼 수 있도록 합니다.

3. branch 관리하기

  • git에는 branch라는 개념이 있습니다.
  • main이 되는 작업이 있고, main이 되는 작업 외에 branch를 두어 작업을 따로합니다.
  • 한 팀에서 여러 작업을 동시에 할 때 main의 버전을 지키면서 특정 branch 작업만 main으로 병합할 수 있기 때문에 branch를 두고 작업하면 안전하게 작업할 수 있습니다.
  • 브랜치 작업 과정은 아래와 같습니다.
$ git branch {이름} #새로운 브랜치가 만들어집니다.

$ git checkout {이름} #새로운 브랜치로 git을 바꿉니다. 이제부터 버전 기록은 새롭게 만든 브랜치에 기록됩니다.

$ git add -> git commit -> git push #git-hub에 저장합니다. 새로운 브랜치로 레포에 저장됩니다.

$ git checkout main #로컬로 돌아와서 main 브랜치로 브랜치를 바꿔줍니다.

$ git fetch {레포 이름} {브랜치 이름} #깃헙에서 병합하려는 브랜치를 가져옵니다. 이렇게 가져오면 따로 저장되지 않고 하나의 임시 브랜치로 가져와집니다.

$ git merge {브랜치 이름} #이 브랜치를 작업하고 있는 브랜치와 합쳐 변경사항을 가져옵니다.

#git pull을 사용하면 fetch와 merge를 한 번에 수행합니다.
  • git fetch와 git merge, git pull은 'main' 브랜치가 깃헙에서 업데이트 되어서 변경된 내용을 가지고 오고 싶을 때도 사용합니다.

4. 자주 사용하는 git 명령어

git status   #깃의 상태를 확인합니다.
git log      #깃의 버전 기록을 확인합니다.
git commit   #깃을 커밋합니다.
git add      #깃을 스테이징합니다.
git branch   #브랜치 목록을 확인합니다. 
git checkout #브랜치를 이동합니다.

git push     #깃을 온라인 레포에 업로드합니다.
git pull     #fetch와 merge를 합친 기능입니다.
git fetch    #깃헙 레포의 변경사항을 임시 브랜치에 저장합니다.
git merge    #임시 브랜치의 내용을 현재 내가 있는 브랜치와 병합합니다.
git remote   #로컬에 온라인 레포 주소를 추가합니다.

좋은 웹페이지 즐겨찾기