오늘은 Git의 마지막 시간으로, 그동안 배웠던 명령어를 기반으로 실습을 진행하겠습니다.
Fork
다른 계정의 Remote Repository를 내 계정의 Repository로 가져옵니다.
clone
내 계정의 Remote Repository에 있는 파일을 Local Repository로 가져옵니다.
$ git clone [REPO_URL] [DIR]
status
clone을 통해 내 컴퓨터로 가져온 파일을 수정하며 기능을 추가합니다. 그 후 변경된 파일을 git에 저장하기 위해 현재 Local Repository에 어떤 변경된 파일이 있는지 확인합니다.
Work space 의 파일은 Tracked 와 Untracked 상태로 나뉩니다. 파일을 수정하면 git이 파일 변경을 감지하듯 파일을 추적하는 상태를 Tracked라고 합니다. Untracked는 git이 파일을 추적하고 있지 않은 상태를 의미합니다. 파일이 초기 생성되면 Untracked 상태이고 git add를 통해 staging area에 저장되며 Tracked 상태가 됩니다.
$ git status
위의 사진에서 알 수 있듯이 Calculator.java 파일은 modified. 즉 변경된 상태입니다. 그러나 changes not staged로 staging area에는 들어가지 않았습니다.
이 파일을 commit 하기 위해서는git add [filename]
의 명령어를 사용해야 합니다. 파일의 변경사항을 폐기하기 위해서는 git restore [filename]
명령어를 사용할 수 있습니다.
add
commit을 하기 위해서는 먼저 Git의 관리하에 있는 영역인 staging area로 파일을 옮겨야 합니다. 이때 사용되는 명령어가 git add 입니다. git add .
을 통해 staging area에 unstaged 상태인 모든 파일을 한 번에 추가할 수도 있습니다.
$ git add [filename]
commit
staging area에 올라간 상태인 파일은 commit이 가능합니다. commit을 통해 어떤 사항이 변경됐는지 간단한 메모를 통해서 버전의 변경 기록들을 관리할 수 있습니다. -m 옵션을 통해 코멘트를 작성할 수도 있습니다.
$ git commit -m "message"
commit을 취소할 수 있는 명령어도 있습니다. 아직 Remote Repository에 업로드되지 않고 Local Repository에만 commit 해 놓은 기록이라면 git reset HEAD^
를 통해 가장 최신의 commit을 취소할 수 있습니다.
push
commit 된 사항을 나의 Remote Repository에 업로드 하기위해 아래의 명령어 push를 사용해야 합니다.
$ git push <origin> <branch>
log
Git에는 현재까지 commit된 내역을 터미널 창에 확인할 수 있는 git log
명령어를 제공하고 있습니다. q를 통해 터미널을 종료하면 됩니다.
Pull Request
내가 push 한 사항을 상대에게 알리는 것을 Pull Request라고 합니다.
init
내 컴퓨터에만 존재하는 디렉토리를 버전 관리를 위해 Git Repository로 변환시켜 주고 싶다면 Git의 관리하에 들어가게 만들어 주는 git init 명령어를 사용합니다. git init은 주로 기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용됩니다.
(git clone을 한 디렉토리라면 git init을 하지 않아도 됨)
$ git init
remote add origin
상대와 협업하기 위해서는 먼저 나의 Local Repository와 나의 Remote Repository를 연결해야 합니다.
$ git remote add origin [내 Repository 주소]
remote add pair
나의 Repository가 연결되었다면 이제는 다른 사람의 Remote Repository 연결이 필요합니다.
상대의 Repository 이름은 pair라고 지정했습니다.
$ git remote add pair [상대 Repository 주소]
remote -v
이제는 잘 연결되었는지 확인하기 위해 현재 Local Repository에 연결된 모든 Repository 목록을 확인해보겠습니다.
$ git remote -v
pull
잘 연결된 것을 확인했다면 상대의 Remote Repository의 작업 내용을 가져오도록 하겠습니다.
$ git pull <상대의 Repository 이름> <branch>
Repository fork
git clone
$ git clone [REPO_URL] [DIR]
나의 Local Repository와 나의 Remote Repository를 연결
$ git remote add origin [내 Repository 주소]
서로의 원격저장소 공유
$ git remote add pair [상대 Repository 주소]
$ git remote -v
pair와 협업
origin:
<파일수정>
$ git status # 현재 파일 확인
$ git add 파일명 # 파일을 staging area로 보내기
$ git commit -m "" # commit
$ git push orgin main # 나의 원격 repository 로 파일 올리기
pair:
$ git pull pair main # origin의 main을 가져오기 (pair에게는 origin이 pair)
# pair의 원격저장소에서 나의 local로 파일을 다운 받은 것으로 나의 git에는 변경사항이 반영되지 않음
<파일수정>
$ git commit -am "변경!" # -add --message git add와 commit을 함께함
$ git push origin main # 이때 깃허브의 변경사항이 웹페이지에 저장됨
Unmodified : 기존에 Commit했던 파일을 수정하지 않은 상태
Modified : 기존에 Commit했던 파일을 수정한 상태
Staged : commit이 가능한 상태