Skip to content

Latest commit

 

History

History
401 lines (314 loc) · 10.9 KB

Git_Usage.md

File metadata and controls

401 lines (314 loc) · 10.9 KB

Git 설치

윈도우 설치

  • (중요!) 윈도우 cmd에서도 깃 명령어를 사용할 수 있도록 해당 옵션을 선택합니다.
    image

나머지 설치 단계는 모두 기본값으로 설정하고 설치합니다.

우분투 설치

sudo apt-get install -y git

우분투(사용자 등록)

git config --global user.name "<자신의 이름>"
git config --global user.email "<이메일 주소>"

image

첫 번째 (윈도우 cmd 실습)

mkdir test_git
cd test_git
git init  // 리포지토리를 생성하는 명령어입니다.
notepad hello.html
# hello.html
<html>
<body>
 Hello World
</body>
</html>
dir

image

status 명령어는 깃 리포지토리 내의 변경 상태를 추적할 수 있습니다.

git status

image

작성한 파일을 git에 추가합니다.

git add <filename>

image

git status

image

추가한 파일을 확정시키기 위해 commit 명령어를 활용합니다.

git commit -m "<메시지 입력>"

image

커밋까지 완료되었습니다.

git status

image

이로써 첫 번째 버전의 코드가 만들어졌습니다.

두 번째 버전

hello.html 코드를 수정해보겠습니다.

notepad hello.html
# hello.html
<html>
<body>
 Hello World Commit 2
</body>
</html>

상태를 살펴보면 hello.html가 변경되었다는 문구가 나타납니다.

git status

image

변경된 내용에 대해 다시 추가합니다.

git add hello.html
git status

image

추가한 파일을 커밋합니다.

git commit -m "<메시지 내용>"

image

커밋한 내용 로그 확인

git log 명령어를 통해 커밋한 로그를 확인할 수 있습니다.

git log

image

브랜치 사용

  • 여러 사람이 협업해야 할 때 충돌을 방지하기 위해서는 브랜치가 필요합니다.
    image

관리자는 브랜치들을 적절히 병합(merge) 하고 퀄리티안정성을 관리해야 합니다.

현재 브랜치 목록을 살펴봅시다.

git branch

image

뒤에 아규먼트를 붙여주게 되면 그 아규먼트를 이름으로 한 브랜치가 생성됩니다.

git branch test1

브랜치 목록을 살펴보면 test1이 추가된 것을 확인할 수 있습니다.
image

*는 현재 위치한 브랜치를 의미합니다. 브랜치를 이동하기 위해서는 checkout 명령어를 활용합니다.

git checkout test1

현재 브랜치가 test1로 옮겨갑니다.
image

test1 브랜치에서 hello.html 내용을 변경해봅니다.

# hello.html
<html>
<body>
 Hello World Commit 2
 Test Branch
</body>
</html>
git status

변경한 파일을 추가하고 커밋합니다.

git add hello.html
git commit -m "Branch test1"

다시 master 브랜치로 돌아옵니다.

git checkout master

hello.html 파일을 열면 test1 브랜치에서 수정했던 파일 내용 이전의 내용이 나타납니다.

notepad hello.html

image

master 브랜치에서 test1 브랜치의 내용을 병합해보겠습니다.

git merge test1

image

hello.html 파일의 내용을 확인해보면, test1에서 수정했던 내용이 반영된 것을 볼 수 있습니다.
image

-d 옵션을 주어 브랜치를 삭제할 수 있습니다.

git branch -d test1

병합에서 동시성 이슈를 해결하는 방법

notepad hello.html
# hello.html
<html>
<body>
</body>
</html>
git add hello.html
git commit -mm "Updated hello.html"
git status
git branch Test_Branch
git checkout Test_Branch
notepad hello.html
# hello.html
<html>
<body>
Edit in Test_Branch
</body>
</html>
git add hello.html
git commit -m "Updated hello.html"
git status
git checkout master
notepad hello.html
# hello.html
<html>
<body>
Edit in Master Branch
</body>
</html>
git add hello.html
git commit -m "Edit in Master Branch"

현재 merge 하기 전 두 브랜치에서 hello.html 파일에 대한 수정을 거쳤습니다.
이대로 Test_Branch 브랜치를 master 브랜치에 merge하게 되면 아래와 같은 현상이 발생합니다.

git merge Test_Branch

image

상태를 보면 아래와 같이 both modified 문구가 나타납니다.

git status

image

hello.html 파일을 살펴보면 아래와 같이 어떤 브랜치에서 어떻게 수정되었는지가 나타납니다.

notepad hello.html

image

여기서 각자 수정한 코드 중 필요한 부분만 빼서 수정합니다.

# hello.html
<html>
<body>
Edit in Master Branch
Edit in Test_Branch
</body>
</html>

내용이 수정되었으니 다시 추가, 커밋합니다.

git add hello.html
git commit -m "Final hello.html"

hello.html 파일을 열어보면 수정된 내용이 반영되어 있는 것을 확인할 수 있습니다.
image

gitk

UI 있는 프로그램으로 로그를 직관적으로 보고 싶으면 gitk 명령어를 입력합니다.

gitk

응용 프로그램이 하나 띄워집니다.
image

원격 저장소(Github) Push

깃허브라는 원격 저장소에 각 로컬에서 Pull, Push하는 구조입니다.
image

깃허브에 접속해서 리포지토리를 하나 생성합니다.
image

  • 라이센스의 경우 구글링을 통해 라이센스에 대한 정확한 정보를 찾아본 뒤 이 리포지토리에 맞는 라이센스를 선택해야 합니다.

주소를 복사합니다.
image

원격 저장소를 로컬에 디렉토리로 가져옵니다.

git clone <리포지토리 URL>

Git_Test라는 폴더가 하나 생성됩니다. 이 폴더가 깃허브에서 가져온 리포지토리입니다.
image

가져온 리포지토리로 접근해서 README.md 파일을 수정합니다.

cd Git_Test
notepad README.md
# README.md
# Git_Test

## 원격저장소      <-- 해당 내용을 추가

새 파일을 하나 만듭니다.

notepad hello.md
# hello.md
<html>
<body>
</body>
</html>
git status

image

2개 이상의 변동 사항에 대해 *를 통해 모두 추가할 수 있습니다.

git add *
git commit -m "hello.html 파일이 추가 되었습니다."

위 추가, 커밋은 로컬에서만 된 것입니다. 깃허브로 push를 해주어야 합니다.

git push

깃허브에 수정한 내용과 추가한 파일이 나타납니다.
image

Github Pull Request(PR)

다수의 개발자가 협업할 때 사용하는 방법입니다.

<Pull Request 전체 아키텍처>
image

  1. 공유하길 원하는 리포지토리로 들어가서 Fork 버튼을 누릅니다.
    image
  • 현재 자신의 계정에 사본 리포지토리가 만들어집니다.
  1. 사본 리포지토리 URL을 이용해 git clone을 수행합니다.
  2. 가져온 리포지토리 디렉토리로 접근해 파일을 추가/변경합니다.
  3. git add *, git commit -m , git push를 수행합니다.
  4. New Pull Request 버튼을 누릅니다.
    image
  • Request 제목과 내용을 입력하고 Create pull request 버튼을 누릅니다.
  1. 원본 리포지토리에 Pull requests 탭에 요청사항이 와 있습니다.
  • Merge하고 싶다면, Merge pull request > Confirm Merge
  • 마음에 들지 않으면 Reject합니다.

원본 리포지토리에 사본 리포지토리의 내용이 반영됩니다.