“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”- Jef Raskin
맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도
오픈소프트웨어 |
[ "복습" ]
깃(Git) - (분산 버전(이력) 관리 시스템)
버전이란 ? [기초적인 것을 기억하고 있는지?]
의미 있는 파일의 변화 : 기능개선, 버그 수정, 커스텀마이징 등
로컬 VCS | 중앙집중식 VCS | 분산 VCS |
- 자세한 내용은 이전의 글을 참고
Git 기본 사용법
출처 : QoonTree DEV
Branch
branch - 스냅샷의 포인터 -> 커밋(commit)을 가르킴
- on branch master - 현재 브랜치(branch)를 master라고 함
- HEAD는 단 하나!의 브랜치만 저격한다
- git의 강력한 기능, 다른 것과 구별되는 것
- 브랜치 작업 내용 'MERGE' 과정을 거쳐 메인 작업 통합 가능
첫 init 시 프로젝트의 working directory의 파일들을 트랙킹 하고 있지 않다는 것이다.
Git status
Untracked : git이 File을 추적하고 있지 않은 상태 [적색표시]
modified : git이 추적하고 있고 commit 됐을 때 스냅샷과 비교시 수정 된 상태 [적색표시]
unmodified : git이 추적하고 있고 수정되지 않은 파일 [녹색표시]
Tracked [관리대상] - [Unmodified, Modified, Staged]
Untracked - 관리대상 아님
Git 저장소 만들기 [ 2가지 ]
1. 기존 디렉토리를 Git 저장소로 만들기 ( 현재 작업 중인 디렉토리 대상 )
- 프로젝트 디렉토리로 이동하여 다음 명령 실행
$Git init [ 해당 디렉토리를 깃(Git) 관리폴더로 만들겠다. ]
- 아직 프로젝트 디렉토리의 어떤 파일도 버전 관리가 시작되지 않았음
$git status [ git의 현재 상태 ]
버전 관리 할 파일을 git 명령으로 추가하고 커밋해야 관리가 시작됨
repository [ 저장소 ]
$git add *.c
$git add read.txt
$git commit -m "first version" [저장] - 어떤 상태에 저장을 하는지 ? 바뀐것이 무엇이지? 일종의 꼬릿표
$git commit -am [설명] - add와 커밋이 동시에 가능
[master (root-commit) 해쉬값"너무 길어 앞 7자리만 표시"] "넣은 데이터"
2. 기존 저장소를 복사 [ clone ]하기 ( 서버 등 다른 컴퓨터 프로젝트 복사 )
- 서버 등 다른 컴퓨터의 프로젝트를 로컬 컴퓨터로 복사
- 기존 저장소를 복사해 올 디렉토리로 이동 후 다음 명령 실행
$git clone [url] - userhome 디렉토리에서 다음 명령 실행
$git clone [url] 내가 원하는 이름 - 내가 원하는 디렉토리로 저장 할 수 있음
워킹 디렉토리의 반복 [ 깃은 이런식이구나 라고 이해해야한다. ]
출처 : DEV
출처 : overflow
$git log [ Git의 로그 내역을 볼 수 있다. ] 시간과 사용자 계정 해쉬값이 나온다 ]
용어 정리 한번 더 기억해보자
저장소 ( Repository )
- 프로젝트 현재 버전, 변경 이력등의 정보 저장하는 곳
가져오기 ( Import )
- 버전 관리되고 있지 않은 로컬 디렉토리의 파일 첫 저장소에 복사
체크 아웃 ( Check Out )
- 저장소 파일 가져옴
체크 인 ( Check In, commit )
- 체크아웃한 파일의 수정이 끝난 경우 저장소 새로운 버전 갱신 작업
- 갱신된 것이 있다면 충돌 알림, diff 도구 이용, commit 과정
브랜치 새로 만들기
$git branch [이름] - 브랜치를 이동시키면 포인터 HEAD는 [이름]을 지목
$git checkout [ 이름 ] -> $git status 표시된 내용을 보면 [이름]으로 변경됨
$git checkout master
$git branch [목록과 현재 어디있는지 표시한다]
$git branch -D [branch 명] 브랜치 삭제 (현재 브랜치 아닌 것만 삭제
$git branch -v 브랜치마다 마지막 커밋 메세지 출력
- master가 아닌 당시에 했던 내용들은 안보임
Merge