Git Github
-
Git 교과서 06 (서브모듈)Git Github 2021. 12. 16. 20:40
깃 호스팅 서비스들은 제공되는 저장소 용량을 제한한다. 보통 1GB 용량을 제공하기 때문에 파일 개수가 많은 프로젝트에서는 좀 더 효율적인 관리 방법이 필요하다. 규모가 큰 프로젝트는 필요에 맞게 작은 저장소로 분할하여 운영하는 것이 효율적이다. 이러한 저장소의 분할 개념을 서브모듈이라고 한다. 서브모듈은 저장소 하나가 다른 깃 저장소를 포함하는 형태를 의미한다. 요즘 규모가 큰 프로젝트는 모듈화하여 개발하는 추세다. 각 기능을 모듈화하여 독립 깃 저장소로 관리한다. 독립된 저장소는 모듈로서 다시 메인 저장소와 결합하여 재사용된다. 메인 저장소에는 서브 저장소가 여러 개 있다. 따라서 저장소 간 상하 관계가 발생한다. 보통 부모 저장소와 자식 저장소 형태로 나눈다. 원격 저장소로 동기화된 자식들은 언제든..
-
Git 교과서 05 (배포와 태그)Git Github 2021. 12. 16. 19:08
배포 프로그램을 개발한 후에 결과물을 최종사용자에게 전달하는 과정을 배포라고 한다.완성된 형태로 배포하기 위해선 코드를 정리하는 추가 작업이 필요하다. 테스트 메시지나 불필요한 주석들을 정리한다. 버전 배포 이후에 코드를 수정해야 하는 경우가 많다. 즉, 코드는 개발을 완료한 후에도 계속 수정된다. 코드를 수정했다면 개발자 또는 최종 사용자가 이를 확인하고 구별할 수 있어야 한다. 이러한 차이를 구별할 수 있게 하는 것이 버전(version)이다. 보통 숫자를 사용하여 식별한다. 숫자가 클수록 최근에 수정된 코드이다. 버전업(version up)은 오래된 버전의 프로그램을 최신 버전의 코드로 변경하는 것을 의미한다. 업계규칙 기본적인 번호는 단일 번호 하나로 구성되어 있다. 단일 번호는 큰 기능을 변경했..
-
Git 교과서 04 (복귀)Git Github 2021. 12. 15. 21:33
복귀 깃을 사용하면 언제든지 원하는 시점으로 전체 코드를 되돌릴 수 있다. 깃에서 코드 작업을 되돌리는 방법은 크게 reset과 revert 두 가지다. 리셋 Reset 리셋은 커밋을 기준으로 이전 코드로 되돌리는 방법으로 기록한 커밋을 취소한다. 이전 코드로 복귀하려면 복귀 시점을 알려 주어야 한다. 이 시점은 커밋을 기준으로 정한다. 커밋은 log 명령어로 조회할 수 있다. $ git log --oneline 고정된 해시값을 사용하지 않고, HEAD 포인터를 이용하여 상대적 위치를 지정할 수도 있다. $ git reset --hard HEAD^^ reset 명령어를 사용하면 지정된 커밋 코드로 되돌아간다. 즉, 특정 커밋의 해시 값 상태로 모든 코드를 복구한다. $ git reset 옵션 커밋ID r..
-
Git 교과서 03 (병합과 충돌)Git Github 2021. 12. 15. 20:48
병합과 충돌 브랜치를 생성하는 목적은 원본 코드에 영향을 주지 않고 개발하기 위해서이다. 개발이 끝나면 다시 원본 브랜치에 작업한 결과를 반영해야 한다. 분리된 브랜치를 한 브랜치로 합치는 작업을 병합(합치기)이라고 한다. 깃의 자동병합은 원본을 기준으로 두 파일의 변경 이력을 비교한다. 변경된 파일 내용이 발견되면 자동으로 수정된 코드 내용을 병합한다. 깃은 병합을 위해 두 가지 알고리즘을 제공한다. 충돌 없이 병합하기 위해 두 가지의 차이를 알아야 한다. Fast-Forward 병합 3-way 병합 Fast-Forward 병합 직역하면 빨리 감기라는 뜻이다. 주로 혼자 개발할 때 사용한다. 모든 변경 사항은 순차적으로 진행된다. 브랜치를 생성할 때 분기 기준은 master의 최종 커밋 포인터다. 깃의..
-
Git 교과서 02 (임시처리)Git Github 2021. 12. 15. 20:13
스태시 작업 브랜치를 변경하려면 워킹 디렉터리는 깨끗한 상태로 정리되어 있어야 한다. 하지만 긴급하게 브랜치를 변경해야 하는 경우 스태시(stash)기능을 사용하여 현재 수정 작업을 멈추고, 다른 브랜치에 있는 코드를 수정할 수 있다. 스태시는 '현재 워킹 디렉터리 내역을 별도의 스택 영역에 잠시 보관하라'는 명령이다. 브랜치를 이동할 때 워킹 디렉터리가 충돌하는 것을 방지한다. $ git stash git stash save는 스태시 여러 개를 생성할 때 유용하다 $ git stash save 스태시 작업을 할 때 --keep-index 옵션을 사용하여 스테이지 영역의 파일들을 제외할 수도 있다. 등록되지 않은 untracked 상태의 파일을 스태시로 생성하고 싶다면 --include-untracked..
-
-
Git - branch & conflictGit Github 2021. 3. 8. 14:16
브랜치 소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룬다. 동일한 코드 위에서 버그를 수정하기도 하고 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 다른 작업을 할 때에는 서로 다른 버전의 코드가 만들어 질 수 밖에 없다. 이런 상황에서, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 Branch다. 각자 독립적인 작업 영역(저장소) 안에서 다른 브랜치의 영향을 받지 않고 소스코드를 변경할 수 있다. 여러 작업을 동시에 진행할 수 있고 새로운 버전을 만들어 낼 수 있으며, 다른 브랜치와 병합(Merge)함으로써, 하나의 브랜치로 모을 수도 있다. 브랜치 생성 저장소를 처음 만들면 Git은 master라는 이름의 브랜치를..
-
Git 버전관리Git Github 2021. 3. 5. 21:36
git init . : 현재 디렉토리를 깃에게 버전관리를 시키도록 명령 (init : initialize, 초기화) hello-git-cli 폴더안에 있는 .git(repository)폴더에서 버전관리를 한다. Working tree는 작업(파일 생성, 수정)을 하는 공간이고, 버전으로 만들어지기 전 단계다. \ 버전을 만들기 위해서는 파일을 Working tree에서 Staging Area로 옮겨야 한다. \ Staging Area에서 Repository로 옮기면 버전이 저장된다. git staus : 폴더의 현재 상태를 확인할 수 있다. No commits yet... : 아직 커밋이 안됐다는 것을 알 수 있다. Untracked files.... : Working tree에 들어있는 파일들의 목록을..