오늘은 온라인 수업!
어제 실시간 수업 실습 때 나왔던 내용인데 오늘 온라인 강의에서 다시 한 번 배웠다.
git은 그냥 코드를 올리면 되는 줄 알았는데 git을 쓰는 방법이 이렇게 어려울 줄이야 ㅠㅠ 심지어 이정도는 기본이고 더 공부해야할 것 같다!!
-> git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
-> git을 이용하면 한 파일에 동시에 여러명의 개발자가 접근하여 수정할 수 있고 누가 어느 부분을 수정했는지 확인하기 용이하므로 효율적으로 협업을 할 수 있고 버전관리가 쉽다.
가볍고 빠르다.
네투워크에 항상 접속해 있을 필요 없이 다른 사람과 코드를 공유할 때만 중앙서비스에 접속하면 되므로 네트워크 속도와 관계없이 사용 가능하다.
분산 작업
개발자들은 개발만 하고 통합 관리자를 따로 두어 통합과정만 따로 진행할 수 있다
데이터 보장
모든 파일은 체크섬이라는 과정을 거쳐야 한다. 체크섬은 16진수 문자열로 이루어지고 이를 commit ID라고 부르며 이 아이디가 같은 것은 파일 또는 구성이 완전히 같다는 의미로 이를 통해 누가 어느 파일을 관리하는지 확인이 유용하다.
준비영역 (Staging area)
수정한 내용을 repository에 반영하기 전 검토하는 단계인 staging area가 있다.
오픈소스
git은 오픈소스다!
git 호스팅 서비스(원격 저장소)는 github, gitlab, bitbucket이 있다.
git --version
: 설치된 git 버전 확인
git config --global user.name "name"
git config --global user.email
git config
: 설정 정보 확인 git에는 working directory, staging area, repository가 있다.
untracked: staging 되지 않은 파일
modified: commit된 파일 중 수정된 파일이 있을 경우
git add <file_name>
: 새로운 파일 생성git commit -m "message"
: 저장소git commit --amend
: 메세지 내용 수정git status
: staging file들의 상태 확인
git log
: git repository에 존재하는 history 확인
대표적인 log 옵션들
-p, --patch
: 각 commit의 수정 결과를 보여주는 diff
와 같은 역할을 수행한다.
-n
: 상위 n개의 commit만 보여준다.
--stat
: 어떤 파일이 commit에서 수정되고 변경되었는지 파일 내 라인이 추가되거나 삭제되었는지 확인
--pretty=online
: 각 commit을 한 줄로 출력
--graph
: commit간의 연결된 관계를 아스키 그래프로 출력한다.
-S
: 코드에서 추가되거나 제거된 내용 중 특정 텍스트가 포함되어 있는지 검사
git reset <file_name>
: add 명령을 취소
git diff
: commit된 파일 중 변경된 사항을 비교할 때
-> 독립적으로 어떤 작업을 진행하기 위한 개념, 각각의 brnach는 서로 다른 branch의 영향을 받지 않음
main branch: 배포할 수 있는 수준의 안정적인 branch
topic branch: 기능 추가나 버그 수정과 같은 단위 작업을 위한 branch
git branch <branch_name>
: branch 생성 git branch
: 현재 branch 확인 git checkout <branch_name>
: branch 전환, git log로 확인한 snapshot을 넘나들때도 사용 가능 (hash값 이용, 과거 파일 내용 확인) -> A branch에서 작업을 마치고 B branch로 통합한다.
1. git checkout B
2. git merge A
-> A의 내용이 B에서 업데이트된 내용일 경우 바로 merge가 된다. 이렇게 merge가 이뤄지는 것을 fast-forward라고 한다.
git branch --merged
: merge된 branch 확인 git branch -d <branch_name>
: 사용을 마친 branch를 삭제git reset --hard <commit_hash>
: 현재 branch를 특정한 commit으로 이동할 수 있다. -> merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
1. git status로 어떤 파일에서 충돌이 발생했는지 확인
2. 충돌이 일어난 파일을 열어 확인 후 수정
3. git add, git commit 과정을 거쳐 다시 merge해준다.
-> 충돌이 발생하지 않기 위해서는 branch의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거해줘야 한다!
원격 저장소 : 인터넷이나 네트워크 어딘가에 있는 저장소
git clone <url>
: 기존의 repository를 복사 git remote add origin
: 원격 저장소 연결 git remote
: 연결된 저장소 확인 git remote show origin
: 원격 저장소 살펴보기 git remote rename origin git_test
: 원격 저장소 단축 이름을 origin에서 git_test로 변경 git remote rm git_test
: 주소가 변경되었거나 필요없어진 저장소 삭제 git push origin master
: 로컬 저장소에서 작업한 내용을 원격 저장소에 반영 → 다른 사람이 먼저 push한 경우 불가능 다른 사람이 작업한 거 먼저 merge해야 한다.git remote add origin
으로 로컬 저장소와 연결한다. git fetch
또는 git pull
을 이용하여 원격저장소의 내용을 동기화한다. git merge origin/master
보 병합을 완료한다. git push origin master
를 이용하여 변경된 사항을 원격 저장소에 전달한다.