-
commit / log / diff / resetgit 2019. 12. 2. 16:11
버전 만들기 (commit)
버전: 의미있는 변화
** commit 전에 셋팅이 필요함
1) git config --global user.name 본인닉네임
2) git config --global user.email 본인이메일
git commit 을 치면 vim이 실행되며 메세지(버전메세지/commit message)를 적을 수 있다
commit message를 작성 후 vim을 종료
f1.txt가 새로운 버전이 되었다 git log : 버전의 정보를 알 수 있다
누가, 언제, commit message를 확인할 수 있다 f1.txt를 수정 후 git status를 치면
f1.txt가 수정되었다고 표시해준다 *** 버전관리를 하고있는 파일을 수정한 후 다시 commit을 할 때도 git add 후 git commit 해야한다
commit 후 git log를 치면 commit log를 볼 수 있다
=**과제 f2.txt를 만들고 commit 해보기**=
git stage area
cp : 파일 복사 (cp 복사 대상파일 복사되서 생상되는 파일)
f1.txt 파일을 복사하여 f3.txt파일을 생성하였다 f3.txt를 생성 후 commit 함.
f1.txt와 f3.txt를 수 정 후 git status를 실행
두개 파일이 수정되었음을 확인할 수 있다 **commit 하기전에 왜 git add를 해야하는가?!
하나 작업이 완성된 후 commit하는게 이상적이지만 시기를 놓치면 commit 하나에 여러작업이 포함될 수 있다.
이 때 git은 git add를 통해서 commit하고자하는 파일만 commit할 수 있다
즉 git add를 하면 그 파일은 commit 대기상태가 된다
** commit 대기상태 = stage area라고 한다
** stage: commit 대기하는 파일들이 가는 곳 / repository : commit된 결과가 저장되는 곳
git add f1.txt 실행 후
두개 파일 다 수정되었다고 뜨지만 f1.txt는 commit 될 것이고 f3.txt는 commit 대상이 아니라고 뜬다 이 상태에서 commit을 하면 f1.txt만 commit 대상에 포함된다
f3.txt는 계속 수정되었다고 뜬다 변경 사항 확인하기(log & diff)
버전 관리의 효용 : 1) 버전의 차이점을 알 수 있다 2) 과거로 돌아갈 수 있다
(1) git log -p
가장 나중에 commit 된 ver 4와 그 전에 commit된 cp ver1 사이에 변한것이 어떤 부분인지 보여준다
+++ b/f1.txt ::이 부분이 ver4에 해당하는 것이고
--- a/f1.txt :: 이 부분이 cp ver1에 해당하는 것이다
+f1.txt : 2 :: ver 4 때 f1.txt의 내용은
-source : 2 ::cp ver1 때 f1.txt의 내용
commitID : git log 했을 때 commit 뒤에 붙어있는 것, commit message가 가르키는 버전의 고유한 주소
(2) git log commitID하면 그 버전을 기준으로 이전 log만 보여준다
(3) ver 4 commit과 HW ver1 commit 사이의 차이점을 보고싶을 땐 git diff를 사용한다 =>
git diff commitID..commitID
(4) git diff로 현재 내가 수정한 작업을 확인할 수 있다
f1.txt를 수정 후 git diff를 실행하면
f1.txt의 내용이 수정 전에는 f1.txt : 2였는데 5로 수정된것을 확인할 수 있다.
--> commit을 하기전에 수정한 내용에 문제가 없는지 review를 할 수 있다!!!
f3.txt는 아직 commit을 안해서 계속 뜨는 것 같다
f1.txt와 f3.txt모두 add 후 git diff를 실행하면 아무것도 안뜨는것을 확인할 수 있다
과거로 돌아가기(reset)
과거 버전으로 돌아가는 방법 1) reset 2) revert
(1) reset
ver 5와 ver 4에 해당하는 commit들을 삭제하고 cp ver1 commit을 최신상태로 하고싶을 때
git reset commitID --hard 를 실행하면 (--hard는 하나의 옵션이고 이외에도 여러가지가 있다)
ver 4 와 ver 5가 사라졌다
=> commit이 취소되며 cp ver1의 소스코드 상태로 돌아감
두 파일의 내용도 이전버전으로 돌아간것을 확인할 수 있다
==> 하지만 사실 눈에만 안보이는것이지 ver 4 와 ver 5는 git에 남아있음.
따라서 추후에 필요하다면 복구할 수 있다
**!!나중에 협업을 하게되면 인터넷에 소스코드를 공유할 수 있다. 이 때 소스코드를 올린 후에는 절대 reset을 하면 안된다. 공유하기 전 아직 local에서 작업할 때만 reset을 해야한다
(2) revert
commit을 취소하면서 새로운 버전을 만들 때
git menual 확인하기
git commit --help : commit에대한 도움말을 볼 수 있다
-a --all
Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected
: 수정하거나 삭제한 파일을 자동으로 스테이지로 올린다
파일을 바로 stage로 올리고 commit message작성이 실행된다 (vim 실행) -m <msg> --message=<msg>
Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs. The -m option is mutually exclusive with -c, -C, and -F.
: -m 뒤에 붙어있는 메세지를 commit massage로 사용하겠다
파일을 바로 stage로 올리고 commit message도 바로 작성하겠다 출처: 생활코딩
'git' 카테고리의 다른 글
merge/conflict (0) 2019.12.05 stash (0) 2019.12.05 branch (0) 2019.12.02 index / object (0) 2019.12.02 git init / add (0) 2019.12.02