2023. 2. 19. 04:59ㆍ프로젝트 관리/github
태초에 깃이라는 것이 있었다.
우선 깃을 설치 해 보자.
구글에 git download 검색 첫번째 사이트 클릭
자기 컴퓨터 os 찾아서 클릭 난 windows
첫번째줄 Click here to download 클릭 하면 작업표시줄에 exe가 다운로드된다.
그러면 바로 설치하면 된다. 작업표시줄 exe 클릭.
클릭하면 앞에 잡다한 default 값 설정해주고 그런거 뜨는데 걍 next만 클릭하면 된다.
설치가 다 끝나면 View Release Notes 체크 해제 해주고 Finish 뭐 버전 정보 노트 그런거 같은데 내가본 영상에선 체크 해제해서 해제했음.. 필요없으니까 했겠지..
다운로드 및 설치가 완료 되었으면 C:drive에 폴더하나 gitworkspase로 만들어 주고 그 안에 ex01폴더 하나 생성 해 준다.
그러고 ex01폴더 안으로 들어와서 우클릭 시에 Git Bash Here이게 떠야한다. 뜨면 클릭하면 깃배쉬가 열린다. 깃준비 끝
깃허브 로그인 해서 우측상단 + 클릭 후 첫 번째꺼 클릭
저장소 이름, 설명 입력 해 주고, Create repository 클릭.
저장소 완성.. URL적힌걸 쉽게 설명하면 github의 컴퓨터에 yuja라는 사용자의폴더에 ex01이라는 폴더를 만들어서 그 폴더를 관리하겠다.. 라는 뜻으로 이해하면 되겠다.
저장소를 삭제 하는 방법은
삭제할 저장소 클릭 후 빨간 표시된 settings를 클릭.
스크롤 제일 밑으로 내려서 Delete this repository 클릭 후 적으라는거 적고 마무리 지으면된다.
이 후를 따라오려면, 버전 관리 시스템의 개념(VCS)및 분산 버전 관리 시스템(DVCS)의 개념과 git의 실행 원리를 잘 아는 것이 좋다.
해당 원리는 헷갈릴때마다 아래 유튜브를 통해서 복습하자.
위의 유튜브를 안보면 이해가 안될것이다.
앞서만든 로컬c:gitworkspace/ex01 폴더를 작업 영역으로 사용 할 것이다.
위의 그림과 같이 ex01 폴더에 txt파일을 생성하고, 인덱스에 tree를 만들고 헤드에 버전을 올리는 것을 실습을 해 보자.
우선 로컬c:gitworkspace/ex01 폴더에서 우클릭 git bash클릭 그러면 CLI가 열릴 것이다.
CLI 안에 git init이라는 명령어를 적어주자. 그러면 ex01폴더에 숨김파일로 .git이라는 폴더가 생기는데, 안보이면 보기 속성에 숨김 항목을 체크하면 보일 것이다. 이렇게 해주면 해당 폴더가 작업 영역이 되었다고 볼 수 있다.
해당 작업 영역에 test1이라는 txt파일을 해당 내용으로 저장 해 주자. test1을 만들어 주면 해당 파일이 만들어 진 것을 변경 감지를 하는데 확인하는 방법은 아래와 같다.
git status라는 명령어를 입력해주면 빨간색 텍스트로 나온 test1.txt파일이 변경 감지되었다 라고 알려주는 것이다.
그밑에 뭐 블라블라 중요하진 않지만 빨간 밑줄 untracked 관리되고 있지않은데 관리하려면 git add라는 명령어를 입력해라 라는 설명인데 중요한건 아니다. 이렇게 변경 감지된 파일을 확인했다. 다음으로 add를 해보자.
git add . 이라는 명령어는 변경 감지된 모든 파일을 add한다는 뜻이다. git add test1.txt 이렇게 하나하나 할 수 있지만.. 굳이 git에서 뭐가 변경되었는지 다 알려주는데 하나하나 찾아서 넣는 경우는 별로 없다.
다시 한번 git status를 확인 해 보면, 초록색으로 파일이 나오는 것을 볼 수 있다. 이것이 tracked 되었다는 뜻이다.
두번째(인덱스) 작업이 완료 되었다는 것이다. 해당 인덱스에 해쉬값으로 저장이 되는데.. 이 것을 확인 해 보려면 .git 폴더에 objects라는 폴더 안에 폴더 중에 들어가 있다.
위의 그림에 초록색 네모박스에 담긴 것이. 해쉬값으로 깃/오브젝트/7c 폴더안에 파일로 만들어져 있는 것을 확인 할 수 있다. 굳이 안에 들어가서 볼필요는 없음 대부분 명령어로 확인하기 떄문에.. 이제 이 것을 영구히 기록을 하기위해 head에 넣는 방법을 알아보자.
git commit 이라는 명령어를 입력 해 주면 되는데, 이 때 위의 캡쳐에서 작성된 -m은 깃커밋 명령어에 메세지 옵션을 넣어 준 것이다. 근데 위의 캡쳐에서는 커밋이 완료되지 않았다. git을 아예 해당 컴퓨터에서 처음 사용하기 떄문에 내가 누군지 모르기 때문이다.
깃 공식페이지에 최초 설정의 설명이 되어있다. 따라 해 보자. 빨간 밑줄을 복사해서
이런 식으로 본인 이름과 email을 설정 해 주면된다. 그러면 config에 잘 들어 갔는지 확인하고 커밋을 해보자.
이런 식으로 커밋이 완료된 것을 볼 수 있다. 그림으로 상태를 알아 보자면..
마지막 head의 상태가 된다. 명령어 하나만 더 입력 해 보자.
git log명령어를 입력 해 보면 위의 그림처럼 헤더에 기록 된 "첫번째 사진"의 로그가 뜬다.
마지막으로 정리 해 보면,
1. git init으로 작업영역 생성 해 주면 숨겨진 .git 폴더가 생기고
2. git add으로 변경된 모든 파일 인덱스로 만들어주고
3. git commit으로 헤드로 옮겨준다 git config는 처음에만 하면 그 다음 부턴 할 일이없다.
이제 다시 gitworkspace폴더로 돌아가서 ex02폴더를 만들어 주자.
앞서 ex01에 한 것처럼 동일하게 만들어준다. ex02 폴더안에 test1.text로 헤드까지 commit 시켜주자.
ex02 폴더에 test1.txt 파일을 동일하게 만들어 주고, test2 파일을 만들어 주자. 내용은 1과 동일 여기서 git status를 해보면,
commit된 test1은 감지되지 않고 test2만 감지(아래처럼) 된다.
위 캡쳐처럼 commit을 하게 되면, 빨간 밑줄 처럼 해쉬값이 생기는데..그 위 폴더 위치처럼
.git/refs/heads폴더의 master라는 파일에 꼭 기록이 남는다. refs폴더는 꼭 기억하자.
CLI창을 clear 명령어를 입력 해 주고 깔끔하게 비우고 나서 test2를 add, commit 해 주자.
comit하고 log를 확인 해 보면, 두번째 사진의 해쉬값이 .git/refs/heads경로의 master라는 파일을 메모장으로 열어보면
들어 가 있는 것을 확인 할 수 있다.
간략화 시켜서 설명을 한다면 위의 그림과 같은 상태이다. 보면 두번째 해쉬값이 master에 들어가 있는 모습을 볼 수 있다.
이제 해 볼 것은 그림의 파란색 밑줄 처럼 test1.txt파일의 안의 값을 바꿔 줄 것이다.
test1.txt파일에 두번째 내용을 저장 해 주고, git status를 해보면 해당 파일이 new file이 아닌 modify 수정된 파일이라고 적시 된다. 그러면 현재 text1.txt 파일은 버전이 두개가 존재한다는 것이다. 첫번째 내용만 존재 or 두개 다 존재 그러면 git add를 해주고 어떤 상태가 되었는지 알아보자.
현재 add시에 변경된 부분만 들고 가고, 나머지는 초록색 부분 빨간색 부분은 참조만 한다. 그래서 용량이 많이 들지 않는다. 대신에 인덱스는 전체적으로 history를 가지고 있고, local에서 가질 수 있다는 장점이 있다. 이렇게 관리 된 histroy 는 깃허브에 올릴떄 같이 올릴 수 있다. 그러고 commit을 하면 헤더가 가르키는 곳이 빨간색 화살표에서 파란색 화살표로 바뀐다.
git log를 입력 해 보면, 첫번째 두번째 세번째 잘 만들어 졌고 heads폴더의 master가 세번째 사진의 해쉬값을 가지고 있는 것을 볼 수 있다.
찍먹 1탄은 여기까지.
'프로젝트 관리 > github' 카테고리의 다른 글
메타코딩 -무작정 깃허브 찍먹하기 -6- (Github 초보 기본기 & Remote 브랜치 이해) (0) | 2023.03.03 |
---|---|
메타코딩 -무작정 깃허브 찍먹하기 -5- (Github push & pull 및 github clone 해보기) (0) | 2023.03.01 |
메타코딩 -무작정 깃허브 찍먹하기 -4- (Git Merge 실습 및 rebase로 로그관리) (0) | 2023.02.22 |
메타코딩 -무작정 깃허브 찍먹하기 -3- (Git branch 기본개념 및 브랜치 포인터 개념) (0) | 2023.02.21 |
메타코딩 -무작정 깃허브 찍먹하기 -2- (Git Reset, Reflog or Git 최종 로그변경하기) (0) | 2023.02.20 |