ubuntu에서 git 설치
sudo apt install git
으로 설치빈번한 파일 내용의 변경으로 이전에 작성한 내용들을 보존해야할 필요성이 있어 여러 파일들을 관리해야되는 경우가 생긴다. 이때, 필요한 것이 버전 관리 시스템인 git이다.
git으로 할 수 있는 것
GitHub
내 pc에 git 저장소를 만드는 방법은 두가지이다.
하나는 clone으로 다른 프로젝트를 복사하여 git 저장소를 만드는 방법이다.
다른 하나는 git 저장소를 내 pc에 생성하는 방법이 있다.
보통 github에 올라온 오픈 소스의 코드들의 경우 clone을 바로 하기보다는 github의 fork를 이용하여, 자신의 github에 복사한 후 clone하여 작업하고 수정하는 경우가 많다. 그 이유는 오픈소스에 직접 업로드할 권한이 없기 때문에 자신의 github로 저장소를 fork로 복사하면, 코드를 직접 관리할 수 있기 때문이다.
용어 정리
fork : 다른 사람의 repository를 내 github 계정으로 가져오는 작업을 fork라고 한다.
repository : 작업의 흐름, 기록 모든 것을 repository라고 한다.
branching and merging
- branch 종류 : feature branch, develop branch, master branch
- feature branch는 여러 기능을 만드는 branch이다. 기능들을 완성했다면 develop branch와 merging한다.
- feature branch와 merging해서 충분한 테스트를 하기 위한 branch가 develop branch이다. 버그 및 오류들이 없을 때, master branch와 merging한다.
- 사용자들이 버그 없는 프로그램을 사용할 때 master branch를 시용한다.
pull request : original repository에서 버그를 발견해 수정하여 전달하려면, pull request를 사용하여 수정사항을 전달할 수 있다. 만약 관리자가 수정한 코드를 보고 허락한다면 오픈 소스에 contribute할 수 있다.
stage area : 변경한 파일을 commit하기 전에 git에 올리기 위한 작업
clone, push, pull, upstream, commit 명령어
git clone : 내 github에서 내 컴퓨터로 가져오는 작업을 clone이라고 한다. 다른 프로젝트에 참여하려거나 git 저장소를 복사하고 싶을 때 사용한다.
git clone [url]
git push : 컴퓨터에서 작업한 파일을 내 github 계정에 올리는 작업을 push라고 한다.
git push origin master
- origin은 원격 저장소 이름이고, master는 현재 사용하는 컴퓨터의 branch 이름이다.
git pull : 협업하는 사람이 repository를 변경하여 가져오려고 하는 것을 pull이라고 한다.
git pull origin master
git upstream : 원본 repository에서 변경한 것을 내 컴퓨터에 가져오는 작업을 upstream이라고 한다.
git pull upstream master
git commit : 변경 사항을 snapshot하는 작업, 메세지를 잘 적어놔야 작업 기록을 잘 추적할 수 있다.
pull/push 사용 시 ID/PW 입력 안하는 방법
cd 명령어로 디렉토리에 들어간다.
git init으로 저장소를 초기화한다. |
---|
git add로 파일을 staging area에 올린다.
git add [파일이름]
git status로 상태 확인 |
---|
git remote add로 원격 저장소 추가 |
---|
git remote add [https://github.com/username/repositoryName.git] |
repository 변경 |
git remote set-url [변경할 원격 저장소] |
repository 확인 |
git config --list 또는 git remote -v |
git push origin master로 원격 저장소에 업데이트 |
---|
fetch first 에러는 원격 저장소와 현재 로컬 저장소가 동기화 되어있지 않기 때문에 발생 |
git pull --rebase origin master으로 동기화 |
non-fast-forward 에러는 원격 저장소와 로컬에 생성된 저장소 간 공통분모가 없는 상태에서 병합하려는 시도로 발생하는 에러이다. |
git pull origin master --allow-unrelated-histories옵션으로 두 저장소를 병합 |
작업하는 폴더(working derectory)에서 git add를 하여 commit하기 전에 stage area에 파일을 올려두는데 이때 Tracked와 Untracked로 파일이 나눠진다. commit한 상태를 Tracked, commit하지 않거나 stage area에도 없는 것을 Untracked라고 부른다.
Staged는 commit하기 전 git 저장소에 기록될 준비가 된 상태(git add로 stage area에 있는 것)이고 Tracked는 Modified와 Unmodified와 Staged 세가지가 있다. Modified는 commit이후 수정한
파일을 의미하고 Unmodified는 commit이후 수정하지 않은 상태를 의미한다. 그래서 git add 후에 Unmodified상태가 되고 수정하면 Modified 상태에서 git add를하면 staged 상태 상태로 올려준 후 commit하는 과정을 반복한다.
git checkout
으로 수정한 것을 수정하기 전으로 돌려놓는다. 주의해야되는 것은 수정한 부분을 다시 불러올 수 없다.git diff
는 수정한 것을 보여주는 명령어이다.옵션
--soft : commit 직전의 staged 상태
--mixed : commit 전의 Modified 상태, default
--hard : commit 전의 Unmodified 상태, 수정한것 전부 삭제
git reset HEAD~1
commit 1개 전으로 되돌아가는 명령어(modified)
혼자서 홈페이지를 만들고 있는데 새로운 기능을 추가하고 싶지만 많은 commit으로 master branch의 로그가 지저분해지는 것을 방지하기위해 사용할 수 있다.
2명 이상의 사람과 협업을 하고 있을 때 코드의 충돌을 방지하기 위해 사람마다 다른 branch를 사용하여 충돌을 방지할 수 있다.
내 pc에 새로운 branch 만들기
생성된 branch 선택
merge
원격 저장소에서 branch 가져오기
원격 저장소 branch 삭제
로컬 저장소 branch 삭제
Github에 잘못 올라간 파일 삭제
untracked file 삭제
git으로 협업할때 각자 pc로 clone 및 다운로드하여 여러 commit이 필요한 경우 branch를 나눠서 각자 pc에서 개발한다. 완성되면 master로 합쳐준 후 내 프로젝트 github에 push 후 pull request하여 original repository에 merge를 요청을 한다.
만약 original repository에서 변경이 있으면 pull로 변경사항을 가져온다.
참고 사이트
https://webclub.tistory.com/317
git 명령어 정리
git 수정하고 저장소에 저장하기
git 저장소 생성, commit하기
Tracked와 Untracked