Git and Github
◈ git : 모든 파일들의 변경사항을 트래킹하는 방식(version control system)
- 특정 파일 트래킹한다면 수정한 내용과 수정된 시점, 누가 수정했는지 등의 변경사항들을 확인 가능(일종의 history)
- 협업 시, 다른 개발자들이 업로드한 파일을 다운받을 수 있고, 수정하기 전의 내용으로 돌아갈 수도 있음
- 개발자들에게 유용하며 실용적임
- 파일을 text가 아닌 binary code(0과 1)로 읽음
◈ github : git 파일, git 변경사항들을 업로드하는 공간(git provider)
업로드된 파일들을 다른 사람들과 공유 가능
이력서에 작성할 때,
git을 안다고 작성? ⭕ / github을 안다고 쓰면? ❌!
◈ github desktop : git을 위한 graphic user interface
(콘솔창에 command(명령어)를 입력하는 대신 버튼을 클릭하여 커맨드를 실행)
◈ repository : 내 파일들이 저장되어 있는 폴더
(git이 .git 폴더 안에서 파일의 모든 수정사항을 보고있다고 생각)
◈ commit : 변경한 파일과 함께 git에 저장하고 싶은 그 시점(point in time)을 기록
어떤 파일 몇번째 줄에 어떤 내용이 바뀌었는지 알기 위함
◈ area
git은 area를 가지며, 파일들은 세 가지 다른 area들 중에 있음
- working area (directory) : 내가 코드를 작성하고 저장하는 곳. working area 폴더를 생성하는 공간(visual studio code)
- create files, delete files 등이 이루어짐
- staging area : 파일이 commit 될 공간(github desktop)
- working area로부터의 모든 수정사항들은 기본적으로 github desktop에서는 바로 staging area에 추가
- commit 할 파일과 하지 않아도 될 파일을 구분하여 staging area로 commit 가능
- repository area (commit area) : commit되어 추가된 파일과 수정사항 등을 기록, 보관하는 공간(git)
기본적으로 data file의 변화가 git에 추가됨
◈ branch
- 공통의 베이스로 시작해 다른 타임라인(ver 1, ver 2,..)으로 나뉘어 각각의 방향에 맞게 파일을 commit하여 branch 생성
- 특정 branch가 승인, 결정되면 공통의 베이스와 합쳐짐
- master는 main branch 이름, 시작한 곳이며 현재 위치한 곳
- master의 마지막 commit에서부터의 다른 타임라인으로 branch 생성되는 시점
(master에서 최종 commit된 기록이 남겨져있는 상태로부터 시작한다는 의미)
- 'Update from Default Branch' : 다른 타임라인에서 변경사항을 업데이트
(master에서 이루어진 commit을 branch에도 commit하여 동기화함)
- 'Merge into Current Branch' : 최종 branch가 결정되면 master branch에 추가시킴
※ branch 두 곳에서 동일한 행에 동시에 수정이 이루어져 merge하는 경우 conflict🚫 발생
Visual Studio Code에서는 색상으로 비교하여 시각적으로 표현해주고, 원하는 내용의 branch를 선택하여 confilct 해결
- Current Change: 현재 위치한 branch(master)
- Incoming Change: merge하고 싶은 곳(내가 생성한 branch)