여기서는 내가 최초로 Repository 를 생성하고 파일 등을 등록을 한 다음에 Remote로 올리는 등의 작업임
위의 절차들은 Local Repository 생성하면서 폴더를 git에서 관리하고 있고
(git bash로 관리 폴더로 들어가면 마지막에 master가 보인다)
Local과 Remote를 연결했기 때문에 가능한 것이다.
Local Repository 는 Git 이 관리하는 3가지 단계로 구성되어 있음
• Working Directory (작업공간) - 실제 소스 파일, 생성한 파일들이 존재(우리가 보는 파일, git이 관리하진 않음)
• Index (Stage) - Staging area (준비영역) 의 역할, git add 한 파일들이 존재(add 하는 순간 git에 등록되고, 관리시작)
• HEAD - 최종 확정본, git commit 한 파일들이 존재
(버전이 매겨짐)
# 터미널에서 작성 % mkdir git_ws
(git_ws 폴더가 생성됨)
% cd git_ws
git_ws % mkdir test_project
(test_project 폴더 생성됨)
git init
폴더에서 Git 을 초기화하는 명령어를 사용하면 해당 폴더를 Git 이 관리하기 시작
test_project로 이동을 해서 폴더 안에서 git init 을 하는 순간 그 폴더는 Repository가 된다.
이 말은 Git 이 폴더를 Working Directory로 인식하고 관리하기 시작한다라는 뜻.
git_ws % cd test_project
test_project % git init
Initialized empty Git repository in /Users/nomaefg/.../git_ws/.git/
(마지막에 mater가 나오면 이 폴더는 git이 관리하고 있다고 할 수 있음, 우리가 보지 못하는 git 관리 프로그램들이 숨어져 있다)
.git 폴더가 생성된 것을 확인 → .git 으로 이동해서 파일을 살펴보면 Git 관련 파일들이 생성된 것을 확인
(ls -all 하면 숨겨진 파일까지 볼 수 있다)
test_project % ls -all total 0 drwxr-xr-x 3 nomaefg staff 96 Nov 6 01:21 . 4drwxr-xr-x 3 nomaefg staff 96 Nov 6 01:21 .. 5drwxr-xr-x 10 nomaefg staff 320 Nov 6 01:21 .git test_project % cd .git .git % ls -all total 24 # 아래와 같은 것들이 생겨있으면 # git이 관리하는 Working Directory 라고 알면 됨 drwxr-xr-x 10 nomaefg staff 320 Nov 6 01:21 . drwxr-xr-x 3 nomaefg staff 96 Nov 6 01:21 .. -rw-r--r-- 1 nomaefg staff 23 Nov 6 01:21 HEAD drwxr-xr-x 2 nomaefg staff 64 Nov 6 01:21 branches -rw-r--r-- 1 nomaefg staff 137 Nov 6 01:21 config -rw-r--r-- 1 nomaefg staff 73 Nov 6 01:21 description drwxr-xr-x 12 nomaefg staff 384 Nov 6 01:21 hooks drwxr-xr-x 3 nomaefg staff 96 Nov 6 01:21 info drwxr-xr-x 4 nomaefg staff 128 Nov 6 01:21 objects drwxr-xr-x 4 nomaefg staff 128 Nov 6 01:21 refs
(파일 보기 옵션에 숨긴항목 체크하면 볼 수 있다)
Working Directory 에 파일을 생성
참고> touch 명령어 - 빈 파일을 생성
test_project % touch test.txt
test_project % ls
test.txt
Git 에 존재하는 파일 확인(파일의 상태까지 확인할 수 있음)
git status
test_project % git status On branch master # 넌 지금 On branch master(main)에 있단다 No commits yet # 아직 commit은 없어 Untracked files: # add 해야 할 파일이 있어 임마 (use "git add <file>..." to include in what will be committed) test.txt nothing added to commit but untracked files present (use "git add" to track)
(use "git add <file>..." to include in what will be committed)
부분을 보고 도움을 받는게 좋다
Working Directory 에서 변경된 파일을 Index (stage)에 추가
(제일 위 Local Repository 구성의 그림 참조)
(add를 함으로써 2단계 영역(stage)으로 들어왔다)
git add <filename>
test_project % git add test.txt test_project % git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: test.txt
Index (stage) 에 추가된 변경사항을 HEAD 에 반영 (확정)
(제일 위 Local Repository 구성의 그림 참조)
(Commit을 함으로써 3단계 영역(HEAD)으로 들어왔다)
git commit -m "commit 에 대한 설명" <filename>
test_project % git commit -m "first commit" test.txt [master (root-commit) e629372] first commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt test_project % git status On branch master nothing to commit, working tree clean
Remote Repository 이름을 Local Repository 이름과 동일하게 하자
Public : 누구나 볼 수 있게
우리가 지금 하는 건 Local Repository를 먼저 생성하고, 비어있는 Remote Repository 를 연결하는걸 하는 중. 그래서 비어있어야 하기 때문에 아래에 따로 체크하지 않는다.
얼마전부터 보안상의 이유로 Remote Repository 접속 시 비밀번호 대신 Token 을 사용
git remote add origin https://github.com/<repository>.git
• Remote Repository 등록 with Username and Token
(이렇게 하면 id, pw를 Remote와 연동할때마다 입력안해도 됨
# 원래 한 줄인데 길어서 두줄로 함 # 주소값 안에 <username>:<token>@ 가 추가됨 git remote add origin https://<username>:<token>@ github.com/<repository>.git # username : zero # token : ghp_Ko 이라면(실제로는 길다) git remote add origin https://zero:ghp_Ko@github.com~~ # 이렇게 넣어준다
• Remote Repository 등록 실습
(아래도 줄바꿈아니고 한 줄임 origin https ~)
test_project % git remote add origin https://zerobasegit:ghp_yazM0qurHSashbS7wVeQcBFEJ 2QPRX3Mgzus@github.com/zerobasegit/test_project.git
(토큰값 다 안나오게 캡처)
git remote -v
• Remote Repository 정보 확인 실습
test_project % git remote -v 2origin https://zerobasegit:...Mgzus@github.com/zerobasegit/test_project.git (fetch) 3origin https://zerobasegit:...Mgzus@github.com/zerobasegit/test_project.git (push)
git push origin <branchname>
test_project % git push origin master
git pull origin <branchname>
test_project % git pull origin master # 위를 입력하면 아래가 실행됨 remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/zerobasegit/test_project * branch master -> FETCH_HEAD e629372..ffb84c5 master -> origin/master Updating e629372..ffb84c5 Fast-forward README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md
폴더안에 ReadMe 파일이 생겼다. pull 성공
ls
• 위치 : git_ws 폴더 하위
• 이름 : exam_project
• 파일 : exam.txt >>touch exam • Index 추가 (git add를 의미) >> git add exam.txt • HEAD 등록 (git commit을 의미) >> git commit -m 'add exam.txt' exam.txt
• 이름 : exam_project
• 빈 프로젝트
• exam_project 의 Local Repository 에 앞서 생성한 remote repository 등록 후 확인
• token 은 앞서 수업에서 생성한 token 계속 사용
• commit 항목을 Remote Repository 에 반영 (push)
• Remote Repository 에서 exam.txt 확인
• exam.txt 파일 수정 : This is git exam.
참고 > 파일 수정하는 법
• Commit 1 :
Local Repository 에서 exam2.txt 생성 후 Remote Repository 에 반영, 확인• Commit 2 :
Remote Repository 에서 exam2.txt 수정 후 Local Repository 에 반영, 확인 - This is git exam2.• Commit 3 :
Local Repository 에서 exam3.txt 생성 후 Remote Repository 에 반영, 확인 - This is git exam3.• Commit 4 :
Remote Repository 에서 exam3.txt 수정 후 Local Repository 에 반영, 확인 - This is commit exam.
(1) Commit 1
(2) Commit 2
(3) Commit 3
cat > exam3.txt This is exam3. # 위까지 기재하고 Ctrl + d 눌러주면 됨 # 생성하면서 바로 내용입력됨
(4) Commit 4
위 글은 제로베이스 데이터 취업 스쿨의 강의자료를 참고하여 작성되었습니다.