완전 초보자를 위한 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
git 저장소에 파일 추가를 되돌리는 명령어는 다음과 같다.
git reset HEAD src build.xml .gitignore
혹은
git restore --staged 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 를 참조해서 설정한다.
3.3. 줄바꿈 문자를 Unix(Linux) 문자 LF 로 설정
git config --global core.autocrlf input git config --global core.eol input
4. git을 더 배우려면
4.1. ProGit 한글판
HTML 버전과 PDF 버전이 있고, 한국어를 포함한 여러 언어로 번역되어 있다.