파일을 관리해주는 프로그램
Git이 관리하는 디렉토리(폴더)에 어떤 문서를 만들면 Git으로 그 문서의 버전을 관리
작업물을 온라인 원격 저장소(Github)에 백업할 수 있도록 백업 기능을 제공
Git은 여러 작업자가 하나의 작업물의 다른 부분을 각자 작업할 때, 작업물을 공유하고 취합할 수 있는 기능을 제공
Git은 로컬에서 버전을 관리해주는 프로그램을 의미
Github는 Git을 클라우드 방식으로 구현한 서비스
온라인 : Remote repository(원격 저장소)
로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
mkdir git_practice
: 디렉토리 생성
cd git_pracitce
: 해당 디렉토리로 이동
touch hello_git.txt
: 파일 생성
echo hello codestates > hello_git.txt
: 파일에 내용 추가
cat hello_git.txt
: 파일 내용 출력
git init
: git init
을 입력한 위치의 모든 파일들이 Git의 관리를 받게 된다.
git config --global init.defaultBranch main
: 앞으로 git init
을 입력했을 때에 생성되는 기본 브렌치의 이름을 main
으로 설정
git branch -m main
: 현재 위치하는 브랜치의 이름을 main
으로 설정
.git
: 디렉토리나 파일 이름의 앞에 .
이 붙으면 숨김 처리되어 ls
명령어로는 확인 불가
ls -al
명령어를 통해 숨김 처리된 디렉토리 및 파일 확인
Work space는 Git의 세 가지 영역 중 하나로, Working tree 또는 Work tree라고도 하며, 여러분이 눈으로 볼 수 있는 디렉토리 자체를 의미
Git은 Work space를 자동으로 스캔
Work space는 git init
을 입력한 직후, 다른 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재하는 영역
git status
: Git으로 관리되고 있는 파일들의 상태 확인
On branch main
: 현재 브랜치가 main 브랜치임을 의미
No commits yet
: 아직 커밋을 하지 않았다는 의미
Untracked files: ~
: Untracked는 Git의 관리 하에 있는 파일이 가질 수 있는 상태 중 하나
(use “git add <file>…” to include in what will be committed)
: git add 파일_이름
을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다는 의미
nothing added to commit but untracked files present (use "git add" to track)
: 아직 add된 파일들이 없으며 Untracked 상태의 파일이 존재하니, git add
명령어를 사용하라고 안내
Untracked : Git에 의해 파일의 상태가 추적되고 있지 않은 상태
Tracked : 수정되었을 때 Git이 파일의 변경 내용을 감지
Staging area란, Local repository에 저장할 파일들이 임시적으로 대기하는 영역
git add .
: 현재 디렉토리 내의 모든 파일을 스테이징
Changes to be committed: ~
: 변화가 감지되었으며, 아래의 파일들을 Commit할 수 있음을 의미
(use "git rm --cached <file>..." to unstage)
: 새롭게 생성하여 스테이징한 파일을 다시 Work space로 되돌리는 기능
git rm --cached hello_git.txt
: 스테이징된 hello_git.txt
파일을 다시 Work space(Untracked 상태) 로 되돌리는 기능git commit -m "First commit"
: 스테이징된 파일을 Local repository에 저장. "First commit"은 커밋 메시지
[main (root-commit) b3677ac] First commit
: 커밋을 실시한 브랜치(main)와 커밋 해시의 앞부분(b3677ac), 그리고 커밋 메시지(First commit)
1 file changed, 1 insertion(+)
: 파일이 Tracked 상태로 변화되었음을 의미
Commit을 실시한다는 것은 파일을 Local repository로 이동시키면서 버전을 기록하는 행위
commit b3677ac2357ac4948edb59e71ab5dd61fdf322a8
: 커밋 해시. Local repository에 파일을 저장하면서 버전을 기록하였고, 해당 버전을 이 커밋 해시로 식별
(HEAD - > main)
First commit
: 커밋할 때 입력한 커밋 메시지
Work space 내의 파일들의 상태가 모두 Unmodified일 때 나타나는 메시지(Tracked 상태)
hello_git.txt 파일이 Local repository에 저장된 버전과 Work space 내에 저장된 버전과 차이가 없기 때문에 nothing to commit
메시지가 뜨고 파일이 Unmodified 상태라는 것을 의미한다.
echo Git is good >> hello_git.txt
: hello_git.txt
파일에 Git is good
내용 추가
Changes not staged for commit:
: Local Repository의 최신 버전과 Work space의 파일 간의 변화가 감지되었으나 아직 스테이징되지 않았음을 의미
modified: hello_git.txt
: 변화가 감지된 파일, 색이 빨간색이라는 것은 아직 스테이징되지 않았음을 의미한다.
(use "git add <file>..." to update what will be committed)
: git add
를 사용하여 스테이징할 수 있다고 알려준다.
(use "git restore <file>..." to discard changes in working directory)
: git restore
를 사용하여 변경된 내용을 다시 되돌릴 수 있다고 알려준다.
Changes to be committed:
: Local Repository의 최신 버전과 Work space의 파일 간의 변화가 감지되었고, Commit이 가능하다.
modified: hello_git.txt
: 변화가 감지된 파일, 색이 초록색이라는 것은 해당 파일이 스테이징 되었다는 것을 의미한다.
(use "git restore --staged <file>..." to unstage)
: git restore --staged
를 통해 스테이징을 취소할 수 있다.
git remote add origin URL
origin
: 원격 저장소 별칭URL
: 원격 저장소 URLgit remote -v
: 명령어를 입력한 위치의 Local Repository와 연결된 Remote repository가 있는지 확인하는 명령어
git push origin main
origin
: 원격 저장소 별칭main
: 브랜치 이름git clone URL
: Remote repository 작업물을 Local repository로 복사ls -al
: git_practice
디렉토리가 생겼음을 알 수 있다.
git remote -v
: git clone
을 해주면 git remote add
를 해주지 않아도 자동으로 Remote repository와 Local repository가 연결되어있다.
: 다른 계정의 Remote Repository를 내 계정으로 가져올 때
: commit되지 않은 Local Repository의 변경 사항을 폐기할 때 사용
git restore 파일명
: 아직 push하지 않고 Local Repository에만 commit 해놓은 기록을 취소할 때 사용
git reset HEAD^
: 가장 최신의 commit 취소: 내가 Push한 변경 사항에 대해서 다른 사람들에게 알리는 것
: 다른 사람의 Remote Repository의 내용물을 내 Local Repo로 가져오기
git pull 별칭 브랜치_이름
: 같은 부분을 수정한 파일이 자동 병합에 실패하고 충돌하게 된다.
충돌 해결
git branch 브랜치명
git branch -D 브랜치명
git branch -m "브랜치명" "새로운 브랜치명"
git checkout 브랜치명
git checkout -b 새로운 브랜치명
git branch
: 현재 등록된 브랜치 확인
git branch -v
: 등록된 브랜치의 상세 정보 확인
git merge 브랜치명
: 브랜치명
을 현재 checkout된 브랜치에 merge 하는 명령어
git stash
: 수정하던 코드를 잠시 임시저장 하는 명령어
git stash pop
: 임시저장 했던 코드를 다시 불러오는 명령어
git stash list
: 임시저장한 stash 목록을 확인하는 명령어