4일차는 실습을 진행하여 복습을 하였고 5일차에 다시 내용을 배웠다.
되돌리기 연습 revert-practice
+git log 로 바뀐 내용 확인 가능
나쁜 예시 : mv README.md LICENSE
단순하게 이름을 바꾸려고 mv
만 사용할 경우 git status
로 확인하면 git 에서는 README.md가 삭제되었다고 인지한다.
이런 경우 다시 파일을 되돌리고 싶다면 전의 파일명으로 다시 바꿔주면 해결이 된다.
mv LICENSE README.md
이런식으로 바꾸게 되면 원 상태로 복구가 된다.
좋은 예시
git mv README.md LICENSE
를 하는 경우 git status
에서는 기존 파일의 이름이 변경 되었다고 인지한다.
결론
즉, 단순히 mv
만을 사용을 한가면 git에서는 대상 파일이 삭제된 것인지, 재명명 된 것인지 구분을 하지 못한다.
알고 있던 위치에 파일이 없어지면 삭제되었다고 인식을 하는 것이다.
그러므로 파일의 이름을 바꾸고 싶다(Rename)면 git mv
를 사용하여 변경하자!
수정, 변경 사항을 취소하고 싶을 때 사용한다.
최신의 commit 상태로 돌아간다.
★ 단, git add
이전에 사용하자.
git restore filename
: filename의 최신의 commit 상태로 돌아간다.
git restore .
: 현재 폴더 아래에있는 모든 것에 대해 최신의 commit 상태로 돌아간다.
git reset HEAD filename
: 커밋 단위를 되돌아갈때 사용한다.
git add
가 된 이후에 사용하여 최신의 상태로 돌아간다.
★ 팀 전체에 영향이 가능하므로 가급적이면 사용하지 말라는 강사님의 이야기가 있다...
직전에 커밋한 메세지를 수정할 수 있는 방법이다.
★ 단, 커밋 자체를 수정할수는 없다.
★ git log
또는 git lg
명령어를 사용하여 바뀐 log를 확인할 수 있다.
git commit --amend
이 경우는 예시를 들어 설명해야 이해가 될 것 같으므로 사용 순서를 설명 하겠다.
1. commit message 수정을 위해 git commit --amend
를 사용한다.
2. commit message를 수정한다.
3. git pull
사용한다.
4. 다른 내용 수정(해당 commit message대상 파일을 제외한 파일 추가 등) 후
git add
, git commit
, git push
를 순차적으로 진행한다.
5. 이후 원격 저장소에 들어가서 확인을 해보면 commit message가 변경 된 것을 확인할 수 있다.
git revert --no-commit HEAD~num..
: 최근에 커밋한 num개를 차례로 되돌린다. 즉 만들어진 파일이 삭제된다.
예를 들어 a.md b.md c.md 총 3개의 파일을 만들었다 하자. 만들어진 각 파일을 각각 commit까지 한 뒤 push 전에 위의 revert를 이용해 삭제해보자.
git status
로 상태를 보고 위와 같이 deleted 된 파일이 있는지 확인해야 한다.
이후 다시 commit을 하여 삭제 했다는 내용을 적고 push를 한 뒤 원격 저장소에 가보면 삭제한 파일이 안보이는 것을 확인할 수 있다.
위의 내용은 git log
를 통해 확인할 수 있고 Network에서도 생성부터 삭제 내용을 확인할 수 있다.
n명의 팀이 한 팀을 이룬다. 이후 팀장이 만든 원격 저장소 link를 받아 접속한다.
원격 저장소 link에서 1시 방향에 있는 fork를 클릭한다.
이후 git clone url
을 하여 작업을 진행한다.
git flow init
-> git flow feature start name
-> 파일 수정 및 개인 작업 진행 -> git add
, git commit
-> git flow feature finish name
develop에서 git push origin develop
을 한다.
작업을 마치고 develop에서 push 까지 진행을 하였으면, 내 원격 저장소에 있는 팀장이 만든 team repository -> Pull request에 들어간다.
new pull request -> [ 팀장 : 보낼사람 develop <- 나 : develop ] 를 선택하고 create request를 누른다.
이후 팀장쪽에서 해당 request에 대해서 Answer 할 수 있다.
Merge pull request나 반려(enhancement)를 신청하여 작업을 진행한다. 이 해당 내용은 team repository에서 확인이 가능하다.
반려(enhancement)라면 수정을 해서 다시 push를 해주고 pull request를 한다.
git pull origin develop
로 팀장 파일로 수정한 내용이 들어온다.git remote add upstream url
을 해준다.git remote -v
로 제대로 들어왔는지 확인해주고 git fetch upstream develop
을 해준다. 이렇게 되면 FETCH_HEAD라는 branch에 내용을 담아게 되고 이후 git merge FETCH_HEAD
를 해서 merge 해주면 된다.git pull upstream develop
로 바로 받아올 수도 있다.