나머지 설치 단계는 모두 기본값으로 설정하고 설치합니다.
sudo apt-get install -y git
git config --global user.name "<자신의 이름>"
git config --global user.email "<이메일 주소>"
mkdir test_git
cd test_git
git init // 리포지토리를 생성하는 명령어입니다.
notepad hello.html
# hello.html
<html>
<body>
Hello World
</body>
</html>
dir
status
명령어는 깃 리포지토리 내의 변경 상태를 추적할 수 있습니다.
git status
작성한 파일을 git에 추가합니다.
git add <filename>
git status
추가한 파일을 확정시키기 위해 commit
명령어를 활용합니다.
git commit -m "<메시지 입력>"
커밋까지 완료되었습니다.
git status
이로써 첫 번째 버전의 코드가 만들어졌습니다.
hello.html
코드를 수정해보겠습니다.
notepad hello.html
# hello.html
<html>
<body>
Hello World Commit 2
</body>
</html>
상태를 살펴보면 hello.html
가 변경되었다는 문구가 나타납니다.
git status
변경된 내용에 대해 다시 추가합니다.
git add hello.html
git status
추가한 파일을 커밋합니다.
git commit -m "<메시지 내용>"
git log
명령어를 통해 커밋한 로그를 확인할 수 있습니다.
git log
관리자는 브랜치들을 적절히 병합(merge) 하고 퀄리티와 안정성을 관리해야 합니다.
현재 브랜치 목록을 살펴봅시다.
git branch
뒤에 아규먼트를 붙여주게 되면 그 아규먼트를 이름으로 한 브랜치가 생성됩니다.
git branch test1
브랜치 목록을 살펴보면 test1
이 추가된 것을 확인할 수 있습니다.
*
는 현재 위치한 브랜치를 의미합니다. 브랜치를 이동하기 위해서는 checkout
명령어를 활용합니다.
git checkout test1
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
master
브랜치에서 test1
브랜치의 내용을 병합해보겠습니다.
git merge test1
hello.html
파일의 내용을 확인해보면, test1
에서 수정했던 내용이 반영된 것을 볼 수 있습니다.
-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
상태를 보면 아래와 같이 both modified
문구가 나타납니다.
git status
hello.html
파일을 살펴보면 아래와 같이 어떤 브랜치에서 어떻게 수정되었는지가 나타납니다.
notepad hello.html
여기서 각자 수정한 코드 중 필요한 부분만 빼서 수정합니다.
# 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
파일을 열어보면 수정된 내용이 반영되어 있는 것을 확인할 수 있습니다.
UI 있는 프로그램으로 로그를 직관적으로 보고 싶으면 gitk
명령어를 입력합니다.
gitk
깃허브라는 원격 저장소에 각 로컬에서 Pull, Push하는 구조입니다.
- 라이센스의 경우 구글링을 통해 라이센스에 대한 정확한 정보를 찾아본 뒤 이 리포지토리에 맞는 라이센스를 선택해야 합니다.
원격 저장소를 로컬에 디렉토리로 가져옵니다.
git clone <리포지토리 URL>
Git_Test
라는 폴더가 하나 생성됩니다. 이 폴더가 깃허브에서 가져온 리포지토리입니다.
가져온 리포지토리로 접근해서 README.md 파일을 수정합니다.
cd Git_Test
notepad README.md
# README.md
# Git_Test
## 원격저장소 <-- 해당 내용을 추가
새 파일을 하나 만듭니다.
notepad hello.md
# hello.md
<html>
<body>
</body>
</html>
git status
2개 이상의 변동 사항에 대해 *
를 통해 모두 추가할 수 있습니다.
git add *
git commit -m "hello.html 파일이 추가 되었습니다."
위 추가, 커밋은 로컬에서만 된 것입니다. 깃허브로 push를 해주어야 합니다.
git push
다수의 개발자가 협업할 때 사용하는 방법입니다.
- 현재 자신의 계정에 사본 리포지토리가 만들어집니다.
- 사본 리포지토리 URL을 이용해
git clone
을 수행합니다. - 가져온 리포지토리 디렉토리로 접근해 파일을 추가/변경합니다.
git add *
,git commit -m
,git push
를 수행합니다.New Pull Request
버튼을 누릅니다.
- Request 제목과 내용을 입력하고
Create pull request
버튼을 누릅니다.
- 원본 리포지토리에
Pull requests
탭에 요청사항이 와 있습니다.
Merge
하고 싶다면,Merge pull request
>Confirm Merge
- 마음에 들지 않으면
Reject
합니다.
원본 리포지토리에 사본 리포지토리의 내용이 반영됩니다.