완전 초보자를 위한 git 초간단 사용법
1. 소개
git 은 소스코드 형상관리 도구이다. CVS 나 SVN(Subversion) 같은 유사한 도구들도 있다.
1.1. 소스코드 형상관리를 해야 하는 이유
오래동안 사용하면 변경 전 소스코드를 주석으로 막아서 남겨두는 습관이 사라지고, 소스코드의 가독성도 높아진다.
주석이 덕지덕지 붙은 코드는 너절한 코드의 전형이다.
1.2. 구별되는 것
- 응용프로그램의 상태를 변경전으로 되돌리는 것은 소스코드 형상관리와 다른 방향으로 접근해야 한다.
- 개발 초기 단계는 형상관리와 백업이 경합할 수 있다.
2. 초간단 사용법
2.1. 이메일 주소 및 이름 설정
git config --global user.email "Your Email" git config --global user.name "Your Name"
2.2. git 저장소 초기화
git init
2.3. .gitignore 파일 작성
vi .gitignore
다음과 같이 확장자나 디렉토리 이름을 지정할 수 있다.
*.class *.log *.jar *.war *.zip *.tar *.tar.gz *.tgz *.rar hs_err_pid* bin/ lib/ package/ tomcat10/
2.4. git 저장소에 파일 추가
git add 파일명혹은디렉토리명
예를 들어,
git add src build.xml .gitignore
2.5. 관습
첫 번째 commit 을 다음과 같이 하는 경우도 있다.
git commit -a -m "Initial Commit"
git 은 1) 마지막 commit 후 변경된 파일 목록을 조회하고, 2) 파일의 변경내역(diff)를 조회하고, 3) commit 의 순서로 실행하는 것이 일반적이다.
git status git diff 파일명 git commit 파일명
다음부터 각각의 명령어에 대한 설명을 덧붙인다.
2.6. commit
마지막 commit 된 이후에 변경된 파일 목록을 확인한다.
git commit
1개 혹은 여러개의 파일을 commit 할 수 있다.
git commit 파일명
ubuntu 에서 commit 메시지는 GNU nano 로 작성할 수 있고, 사용하는 명령어는 Ctrl + o 와 Ctrl + x 정도이다.
다음과 같이 하면, commit 메시지 작성을 위한 에디터를 vi로 변경할 수 있다.
git config --global core.editor "vim"
다음과 같이 commit 메시지를 지정할 수도 있다.
git commit -m "Initial Commit" 파일명
다음은 변경된 모든 파일을 commit 한다.
git commit -a
다음은 변경된 모든 파일을 메시지를 지정하여 commit 한다.
git commit -a -m "Initial Commit"
2.7. status
마지막 commit 이후에 변경되었거나, 추가된 파일을 조회한다.
git status
2.8. 마지막 commit 상태로 되돌리기
마지막 commit 이후의 변경사항을 버린다.
git checkout -- <file>
이 기능을 사용하게 되면, 마지막 commit 이후의 변경사항은 복구할 수 없다는 것에 주의해야 한다.
2.9. 마지막 commit 된 것과 현재 파일 비교(diff)
git diff 파일명
2.10. 로그 확인
전체 commit log를 출력한다.
git log
파일명을 지정할 수 있다.
git log 파일명
파일명을 지정하여 최근 1개의 commit 로그만 볼수 있다.
git log -1 파일명
diff 결과와 유사한 파일의 변경내역을 같이 볼 수도 있다.
git log -p 파일명
diff 결과와 유사한 파일의 변경내역을 1개만 조회한다.
git log -p -1 파일명
2.11. 파일 삭제 ~ 이동
git rm 파일명 git mv 파일명 새로운파일명
remote 저장소에 있는 것 삭제 (.gitignore 에 추가했음에도 불구하고 계속해서 commit 할 목록에 나오는 경우에도 사용할 수 있다)
git rm –cached 파일명
remote 저장소에 있는 것 삭제(하위 디렉토리 전체)
git rm –cached -r 디렉토리명/
3. tip
3.1. chmod (file mode) 변경사항 무시
git config core.fileMode false
git config --global core.filemode false
3.2. GitWeb
(User Interface 가 조금 어색하지만) Git 서버 - GitWeb 도 있다.
웹서버가 설치되지 않은 ubuntu 라면 먼저 lighttpd 를 설치한다.
sudo apt inatll lighttpd
gitweb 도 설치한다.
sudo apt install gitweb
.git 디렉토리가 있는 디렉토리에서 다음과 같이 실행한다.
git instaweb
.git/gitweb/lighttpd.conf
에서 포트 번호를 확인한 후에 잘 열려 있는지 확인한다.
netstat -anp -t | grep LISTEN
웹브라우저에서 다음과 같이 접속한다.
http://192.168.0.100:1234/
종료한다.
git instaweb --stop
만약 웹서버가 이미 설치되어 있다면, Git 서버 - GitWeb 를 참조해서 설정한다.
4. git을 더 배우려면
4.1. ProGit 한글판
HTML 버전과 PDF 버전이 있고, 한국어를 포함한 여러 언어로 번역되어 있다.