반응형
Git 저장소 만들기
원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소
내 컴퓨터에 로컬 저장소를 만드는 방법
- 아예 저장소를 새로 만들거나,
- mkdir <new folder name> 폴더 생성
- cd <new folder name> 프로젝트 디렉토리로 들어갑니다.
- git init 새 repository 생성. git 폴더를 만듦.
- 이미 만들어져 있는 원격 저장소를 로컬 저장소로 복사
- git clone <url>
- ex) git clone https://github.com/libgit/libgit2
- libgit2라는 이름의 "로컬 폴더" 생성 후 그 안에 내용을 복제.
- 이미 같은 이름의 폴더가 있으면 오류 발생.
- ex) git clone https://github.com/libgit/libgit2
- git clone <url> <name>
- url 폴더 이름이 아닌 다른 이름으로 "로컬 폴더" 생성
- ex) git clone https://github.com/libgit/libgit2 git_test
- libgit2가 아닌 git_test 폴더가 생상되고 그 안에 내용이 복제된다.
- git clone <url> -o <name>
- origin이 아닌 <name>으로 "리모트 이름"을 생성
- git clone <url>
- Subversion과 다른 가장 큰 차이점은 서버에 있는 거의 모든 데이터를 복사한다는 것.
- 프로젝트 히스토리를 전부 받아온다.
- 실제로 서버의 디스크가 망가져도 클라이언트 저장소 중에서 아무거나 하나 가져다가 복구하면 된다.
- (서버에만 적용했던 설정은 복구하지 못하지만 모든 데이터는 복구된다.)
- url 프로토콜
- https://
- git://
- SSH (ex. user@server:path/to/repo.git)
수정하고 저장소에 저장하기
- Tracked vs Untracked Files
- Tracked 이미 스냅샷에 포함돼 있던 파일
- Unmodified ex)clone한 직후 파일의 상태는 tracked이면서 unmodified
- Modified
- Staged
- 나머지 파일은 모두 Untracked 파일
- 워킹 디렉토리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일
- 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식
- 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고,
- Staged 상태의 파일을 커밋
- 이런 라이프사이클을 계속 반복~
- Tracked 이미 스냅샷에 포함돼 있던 파일
- 연습 파일 만들기
- vim editor 설치 필요
- vim <file> -> 파일을 생성, 확장자 상관 없음
- vim f1.txt
- vim README
- vim CONTRIBUTING.md
- i -> 내용을 입력(Insert)
- esc -> 편집 모드 종료
- :wq -> 저장하고 종료(write and quit)
- 파일 목록 확인
- ls
- ls -l
- ls -al
- echo 'new content' > file -> 파일에 내용 채우기, 파일 없으면 만듦.
- echo 'content' >> file -> 파일에 내용 추가하기, 파일 없으면 만듦.
- 파일 내용 확인 -> cat <file>
- 화면 지우기 clear
- git status -> 프로젝트 폴더의 상태를 확인
- git add <file>
- 1. 파일을 새로 추적할 때
- 2. 수정한 파일을 Staged 상태로 만들 때
- 3. Merge할 때 충돌난 상태의 파일을 Resolve 상태로 만들 때
- $ git add *.c
- $ git add LICENSE
- “Changes to be committed” 에 들어 있는 파일은 Staged 상태
- ! 한 파일이 Staged 상태이면서 동시에 Unstaged 상태일 수 있다.
- git add 명령을 실행한 후에 또 파일을 수정하면 git add 명령을 다시 실행해서 최신 버전을 Staged 상태로 만들어야한다.
- git diff -> Staged와 Unstaged 상태의 변경 내용을 보기. staging하기 전 점검
- git diff --staged or --cached -> Commit한 것과 Staged 된 것 비교. commit 전 점검
- git diff 'commitID1'..'commitID2' -> commit 사이 비교
- 외부 diff tool 사용하기
- git difftool --tool=winmerge or vimdiff -> Staged와 Unstaged 상태의 변경 내용을 보기.
- git difftool --cached --tool=winmerge -> Commit한 것과 Staged 된 것 비교.
- git difftool --tool-help -> 도움말 보기
- git commit -> 파일 및 폴더의 추가/변경 사항을 로컬 저장소에 기록
- 에디터에 commit message 필수 입력
- 1번째 줄 : 변경 내용 요약
- 2번째 줄 : 빈 칸
- 3번째 줄 : 변경한 이유
- git commit -m 'initial project version' -> 에디터 열지 않고 commit message 입력
- git commit -a -m 'added new benchmarks'
- Tracked 상태의 파일(이전에 한번이라도 add된 파일)을 자동으로 Staging Area에 넣는다.
- git rm <file> -> Staging Area에서 파일 삭제, 하드디스크에서도 삭제
- 그냥 Working Directory에서 지우면 Unstaged됨. 파일이 지워졌다는 내용을 다시 stage하고 commit해야 함.
- git rm으로 하면 지웠다는 내용이 Staged 됨. commit만 하면 됨.
- $ git rm log/\*.log -> log/ 디렉토리에 있는 .log 파일을 모두 삭제 (file-glob 패턴)
- $ git rm \*~ -> ~ 로 끝나는 파일을 모두 삭제
- 이미 파일을 수정했거나 Staging Area에 추가했다면 -f 옵션을 주어 강제로 삭제
- git rm --cached <file> --> 하드디스크에 파일 남기고 Git 추적만 안하도록
- 프로젝트 폴더를 아예 삭제하려면? -> Working Tree에서 프로젝트 폴더를 통채로 삭제. gir rm은 git 디렉토리가 있는 폴더에서만 동작하므로 프로젝트 폴더내의 파일/디렉토리만 지울 수 있다.
- git mv file_from file_to 파일이름을 변경
반응형
'개발 이야기 > Git' 카테고리의 다른 글
Git 요약 5. Tag(태그), Alias(가명) 사용하기 (0) | 2018.09.05 |
---|---|
Git 요약 4. 리모트 저장소(Remote Repository) (0) | 2018.09.05 |
Git 요약 3. 커밋 히스토리 조회하기, 되돌리기(Undo) (2) | 2018.09.05 |
Git 공부하는데 도움이 되는 책, 사이트 추천 (0) | 2018.09.04 |
Git 요약 [용어설명] 1. Git이란?, Git 최초 설정, 도움말(help) 보기 (0) | 2018.09.03 |