새벽코딩

[github] github을 사용하는 2가지 방법 본문

생각정리

[github] github을 사용하는 2가지 방법

J 코딩 2023. 3. 29. 10:26
반응형
반응형

1. git에 대하여

git 소프트웨어는 파일의 변경사항을 trace하고 팀원들간의 내부 파일작업의 조율을 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템이다.

사실 git은 초기 리눅스가 만들어 졌을때, 리눅스 커널 개발자들의 워크플로우를 위한 도구였으며, 리눅스와 같은 거대한 프로젝트에서도 효율적으로 작동할 수 있도록 디자인 되어있다.

여담으로 git은 리눅스를 만든 리누스 토르발스가 2주만에 만든 프로그램이다

GitHub Flow

git은 Local Repository라는 이름으로 전체 데이터를 작업 폴더 안에서 관리한다. 또한, ".git" 이라는 파일이 생성되며 이는 해당 작업 폴더 내부의 기록을 추적할 수 있는 정보를 담고 있다.

git은 마스터 가지(marster branch)로 부터 여러 가지가 뻗어나가는 구조를 가진다. 초기의 master branch가 생성되며 각각의 사용자들이 저마다 개인의 branch를 가지고 뻗어나간후 내용을 수정하고 Pull Request를 거쳐 master branch에 합쳐진다.

git workflow는 우선 가장 큰 줄기(master branch)가 존재한다. 각각의 개발자들은 작은 가지(branch)를 내어 파일을 수정하거나 추가하여 해당 소스를 staging area에 add한다.

add가 되었다면 해당 리스트들을 Local Repository에 커밋해준다. 커밋을 할때는 커밋메시지를 입력하여 해당 커밋이 어떤 수정내용을 담고 있는지 메모해주어야한다. 커밋이 된 이후에는 Local Repository에 스냅샷이 만들어지며 추후 해당 스냅샷을 Remote Area에 push한다.

push이전에 관리자에게 Pull Request요청이 가게 된다. master권한을 가진 관리자는 해당 요청에 대해 기존 소스와 비교하며 해당 커밋이 병합(merge)되도 된다고 판단한다면 기존 branch에 해당 스냅샷을 합친다.

글로만 보면 해당 워크플로우를 이해하기가 쉽지 않다.

Git Workflow

git에서 각각의 파일 또는 폴더의 상태를 체크하는 것은 매우 중요한 요소이다. git 내부에서는 이를 backend system에서 해주고 있다. file의 상태변화를 주목하며 위의 플로우를 이해해보자.

1. git은 파일또는 폴더의 변경상태를 체크하며, 변경(Modified), 추가(Add), 삭제(Delete) 되면 해당 Status를 변경한다.

2. 해당 파일은 git에 의해 tracked되고 있으며, "Git Staging Area"에 있을 때까지 추적되어진다.

3. "add" 명령어를 사용하여 상태가 변경된 파일을 스테이징 영역으로 올려주고 "commit"을 통해 로컬저장소에 스냅샷상태로 담는다.

4. 원격 저장소에 해당 파일을 반영한다.

2. git bash에서의 버전관리

1) 정의

git을 설치하게 되면 따라 설치되는 git bash라는 파일이 있다. 언뜻보기에 macOS의 Terminal이나 Windows의 CMD와 유사한 모양을 띄며 리눅스 기반의 시스템으로 리눅스 명령어를 사용해 운영체제에 까지 접근할 수 있다.

2) 명령어

  • git bash에서 git을 사용하기 위해서는 우선 초기 git clone을 통해 Remote Repository영역에 있는 소스를 Local Repository영역으로 내려받아야한다.

git HTTPS url

소스를 내려받을 폴더를 만든후 cd 명령어를 통해 해당 폴더로 이동해준다. github에서 https url을 copy해준다.

# 폴더간 이동에 사용한다.
cd {이동하려는 폴더의 경로}

github에서 https url을 copy한 후에 git clone명령어를 실행해준다. (git clone 명령어)

# 원격저장소의 소스를 로컬 저장소로 받아온다.
git clone {https url}

현재 과정은 git clone한후 곧바로 Remote Repository에 올리는 과정이기에 fetch또는 pull명령어를 사용하지 않아도 되지만, 실제 프로젝트 중이라면 꼭 fetch나 pull명령어를 사용해서 원격 저장소 소스를 받아 비교를 해주어야한다.

# origin : 로컬 저장소
# master or upstream : 원격저장소

# git fetch명령어는 git pull과 유사하지만 미리 소스를 받아와 충돌이 발생한다면 소스를 받지 않는다.
git fetch origin {원격저장소 명}

# git pull 명령어는 해당 소스가 중복나 충돌이 발생하더라도 소스를 받는다. (같은 부분을 수정했다면 충돌이 발생한다.)
git pull origin {원격저장소 명}

원격 저장소에서 소스를 받아오기 전에 현재 폴더가 가지는 git 원격정보나 현재 가지(branch)정보등을 확인 할 수 있다.

# 로컬저장소와 원격저장소 경로를 확인 한다.
git remote -v

# 현재 연결되어있는 branch와 존재하는 banch들을 확인한다.
git branch

# 새로운 branch를 만들고 해당 branch로 이동한다.
# checkout시 main의 소스가 그대로 복사되어진다.
git checkout -b {추가하려는 branch명}

# branch 확인
git branch

# 만든 branch삭제를 위해 다른 branch로 이동해준다 (삭제하려는 branch에 있다면 삭제할 수 없다)
git checkout main

# branch 삭제 (-d : delete)
git branch -d {삭제하려는 branch명}

# branch확인
git branch

git remote, git branch

해당 위치의 소스가 변경되었는지 확인 한다. (git status 명령어)

git status

수정된 내용이 있다면 modified: {파일경로/파일 이름}에서 확인할 수 있으며 현재 상태는 변경되었지만 아직 staging area까지는 가지 않았다는 내용을 보여준다.

변경된 파일을 staging area에 추가해준다. (git add 명령어)

# 현재 경로에 위치한 파일들을 add한다.
git add .

# 현재 경로에 위치한 특정 파일을 add한다.
git add {파일경로/파일이름}

파일을 추가하였다면 git status 명령어를 통해 다시 상태를 확인한다.

git add

파일의 상태가 커밋을 할 수 있는 상태로 변경되었다.

git add명령을 완료하였다면 해당 파일의 변경에 대한 커밋 메시지를 입력해주과 동시에 커밋을 해준다. (커밋 메시지는 완전 필수는 아니지만 추후 커밋의 히스토리 체크를 위해 꼭 작성해주도록 하자)

# commit -m(message) "{메시지내용}"
git commit -m "{메시지내용}"

# git 상태확인
git status

git commit

Remote Repository에 해당 내용을 올려준다.

3. SourceTree에서 버전관리

source clone

1. SourceTree앱을 실행하고 파일메뉴의 복제/생성 버튼(단축키: Ctrl + N)을 클릭한다.

2. 원격저장소의 url, 로컬 저장 폴더위치를 입력해준다.

sourcetree clone

branch 생성

1. 위쪽 메뉴에서 브랜치 버튼을 찾고 클릭해준다.

2. 원하는 브랜치 명을 입력하고 확인 버튼을 눌러준다.

sourcetree branch

branch 확인

1. 확인하고자 하는 브랜치를 선택해준다. 화면의 가운데에서는 현재 선택된 branch의 history를 확인할 수 있다.

branch

 

로컬 저장소에서 파일을 추가후 확인

1. "git sourcetreeTest.txt"파일을 추가하게 되면 sourcetree에서는 자동적으로 refresh가 발생하며 커밋하지 않은 변경사항을 체크해준다.

2. 하단에는 아직 스테이지에 올라가지 않은 파일의 리스트를 확인할 수 있다.

git 변경사항

 

커밋(commit)

1. 스테이지에 올라가지 않은 파일 목록에 있는 파일을 선택후 "선택 내용 스테이지에 올리기" 버튼을 클릭하면 스테이지에 올라가게 된다. (이를 git bash에서는 "git add"명령어로 실행하였다.)

2. 커밋할 파일 목록을 스테이지에 올려두었다면 하단의 커밋메시지를 작성한다.

3. 오른쪽 하단의 커밋버튼을 눌러준다.

add + commit

 

변경상태 확인

1. git bash에서는 "git status"명령어로 확인 했었지만 sourcetree에서는 화면에서 바로 확인할 수 있다.

변경상태

 

push

1. push할 원격저장소를 선택한 후에 파일을 push해준다.

push

 

pull

1. pull을 실행할 원격 브랜치를 선택한 후에 소스를 내려받는다.

pull 버튼 클릭
원격저장소 선택후 Pull

 

 

이로서 git bash를 이용한 버전관리와 sourcetree를 이용한 버전관리에 대해 적어보았다. 개인적으로 코드를 한줄씩 입력하는 방식인 git bah를 이용하는 것이 나에겐 더 재미있는 방식이다. 허나 git을 처음 쓰는 사람들에게는 sourcetree를 사용하는게 더 쉬운 방법이 될 것이다.

 

-새벽코딩-

반응형
Comments