-
글의 참고
글의 전제
- 내가 글을 쓰다가 궁금한 점은 파란색 볼드체로 표현했다. 나도 모르기 때문에 나중에 알아봐야 할 내용이라는 뜻이다.
- 밑줄로 작성된 글은 강조하기 위해 사용했다.
글의 내용
- svn status[st] == git status
- `M xxxxx` - 수정된 파일
- `A xxxxx` - 추가된 파일
- svn add [ file1 file2 … ] == `git add [ file1 file2 … ]`
- untracked files들을 tracked files로 바꾼다.
- 그러나 약간의 차이는 존재한다. Svn add는 untrack 파일에만 사용할 수 있다. Modified files들은 svn commit시에 자동으로 커밋이 되버린다. 그러나 git은 git add로 파일들을 설정하지 않으면, commit시에 아무 파일도 커밋되지 않는다.
- svn commit [ file1 file2 … ] -m [ commit message ] == git commit [ file1 file2 … ] -m [ commit message ]
- svn은 staging area가 없다.
- svn log -r [ number ] -v == git show --name-only [ commit id ]
- 예를 들어, number가 4라면 revision 4의 커밋한 파일들의 목록들을 보여준다.
- svn log -r [ number ] --diff == git show [ commit id ]
- 예를 들어, number가 4라면 아래의 내용들을 보여준다.
- Revision 3과 4의 차이점
- Revision 4와 5의 차이점
- 주의점이 있다. 예를 들어, 아래의 2개의 파일을 커밋했다고 하자.
- A/B/B-1.c
- A/C/C-1.c
- 그렇면 A/에서 "svn log -r [최신 리비전] --diff" 쳐야 커밋한 B-1.c와 C-1.c의 차이를 모두 보여준다. 만약에 A/B/에서 명령어를 칠 경우, B-1.c 파일의 차이점만 보여준다.
- 예를 들어, number가 4라면 아래의 내용들을 보여준다.
- svn diff [ path ] == git diff [ path ]
- path에 입력된 수정된 파일들과 현재 가장 최신 svn revision과 비교한 내용들을 보여준다.
- svn info -
- 현재 나의 svn revision을 확인 가능하고 서버 주소도 확인이 가능하다.
- svn merge -r [rev x : rev y]== git reset --hard [ commit id ]
- svn merge는 git으로 치면 hard reset인거 같다. 소스 자체가 날아간다. 물론 svn log 상에 커밋한 내용이 살아있어서 상관은 없지만, git이 확실히 편하다는 생각이 이런 부분에서 든다.
- svn merge -r [rev x : rev y] && svn commit -m "" == git revert
- svn에서 이미 commit한 내용을 지울 수 있는 방법은 없다. 대신 이미 올린 commit에 다시 새로운 커밋을 올려서 이전 커밋에 오버라이드 하는 방식으로 덮어써야 한다.
- svn delete
- Svn status를 통해서 나온 ! 파일을 삭제해준다.
- svn revert =
- svn revert는 svn add 한 파일 및 폴더에 한해서 version control을 하지 않겠다고 하는 명령어다.
- 예시는 다음과 같다.
- A a.txt
- A b.txt
- svn revert a.txt && svn status
- ? a.txt
- A b.txt
- 예시는 다음과 같다.
- svn revert는 svn add 한 파일 및 폴더에 한해서 version control을 하지 않겠다고 하는 명령어다.
- svn revert [파일명] == git checkout -f [파일명]
- svn diff --summarize | grep '\.c'
- svn status[st] == git status