Git기초
<Git>
Git이란 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템으로
1.파일의 변경사항을 추적해, 사용자가 각 파일의 버전을 관리할 수 있게 도와줌.
2.파일 백업 가능.
3.협업을 용이하게 도와줌.(파일공유, 작업물취합)
날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능함.
이렇게 특정 시점에 생성된 백업 복사본을 스냅샷이라고 부름.
이렇게 하나하나 스냅샷을 만들어 주는 작업을 commit이라고 함.
Github는 Git Repository(저장소)를 관리할 수 있는 클라우드 기반 서비스
Git으로 버전을 관리하는 폴더는 Github를 통해 여러 사람들이 공유하고 접근할 수 있다는 뜻.
즉, Github는 내 컴퓨터에서 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트
+유명 오픈소스들 공식 홈페이지에 보면 깃허브아이콘이나 링크가 있음. 오픈 소스의 코드를 github에 공유했다는 뜻.
오픈 소스(소스 코드가 공개된 소프트웨어)는 누구나 자유롭게 해당 기능을 추가하고 개선할 수 있고, 이 작업을
contribute(기여)라고 함.
Git Repository(깃 저장소! 말 그대로 파일이나 폴더를 저장해두는 곳으로 두 종류의 저장소를 제공함)
1.Local Repository(내 컴퓨터 개인 저장소)
2.Remote Repository(원격 온라인 서버 저장소)
Facebook에서 제공하는 React를 예시로 들면 오픈소스니까 Remote Repository에 소스 코드가 올라와 있다는 뜻.
React프로젝트에 contributor가 되려면?
1.React 원격 저장소(Other Remote)를 내 원격 저장소(Mine Remote)로 가지고 오기 *이 과정을 Fork 라고함
2.내 원격 저장소(Mine Remote)의 폴더를 내 컴퓨터(Mine Local)로 가져옴 *이 과정을 Clone 라고함
3.내 컴퓨터에서 소스코드 변경 작업 후 Remote Repository에 올려줌 *이 과정을 Push 라고함
4.Push를 완료하고 나면 GitHub에는 Pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있음.
Git의 영역은 크게 온라인와 로컬로 나뉨.
온라인 : Remote repository(원격 저장소)
로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
1.Work space: 깃의 세가지 로컬 영역 중 하나로 사용자가 눈으로 볼 수 있는 디렉토리 자체를 의미(=Work tree)
+파일의 상태
1)Untracked : 깃에 의해 파일이 추적되지 않는 상태. Commit이라는 과정을 거쳐 Tracked상태로 바뀜.
2)Tracked : 깃에 의해 파일이 추적되는 상태(파일 수정되면 깃이 변경 내용을 감지)
-Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
-Modified : 파일의 수정이 Git에 의해 감지된 상태
-Staged : 파일이 Staging area에 존재하는 상태
2.Staging area: Local repository에 저장할 파일들이 임시적으로 대기하는 영역을 의미
기본적으로 파일은 Untracked상태로에 Work space에 존재함. 이를 git add 명령어를 통해 Staging area로 이동
3.Commit이란, Local repository에 파일을 저장함과 동시에 파일의 버전을 기록.
*git commit 명령어를 통해 커밋 메시지를 입력하면 아래와 같은 2 주요문구가 출력
[main (root-commit) 868dc6b] First commit
1 file changed, 1 insertion(+)
-첫째줄의 의미 : 커밋을 실시한 브랜치(main)와 커밋 해시의 앞부분(868dc6b), 그리고 커밋 메세지(First commit)가 보임
커밋 해시는 각 커밋마다 부여되는 고유 ID → 즉, 각 버전에 부여되는 고유 번호
-둘째줄의 의미 : 변경된 내용을 보여줌 → 즉, 이제 파일이 Tracked 상태로 변화되었음을 의미
*git log 명령어를 활용해 Commit내역 확인 가능.
4.작업물 업로드 : git push origin main(브랜치이름)
파일이 이동되는 과정
-add : Work space에 있는 파일을 Staging area로 올림
-commit : Staging area에 있는 파일을 Local repository로 올림
-push : Local repository에 있는 파일을 Remote repository로 올림. (둘 다 origin임)
-pull request : Remote repository(origin)에 있는 파일을 Remote repository(other)로 올림. other 관리자가 확인 후 승인하는 경우에만 Contribute가 됨.
-Fork : Remote repository(other)에 있는 파일을 Remote repository(origin)로 받아옴
-Clone : Remote repository(origin)에 있는 파일을 Local repository로 받아옴.
*Clone으로 파일을 가져오거나, git remote 명령어로 repository를 연동할 경우,
git remote --v로 내 폴더의 현재 연결상태를 확인하는것이 중요.
*commit을 한 번이라도 한 적 있는 폴더의 경우, git commit -am "메시지" 명령어로 add와 commit을 한 번에 가능.
이미지 및 내용 출처 : code states