5일차 Git & Github - 되돌리기와 Fork

변승훈·2022년 4월 3일
0

4일차는 실습을 진행하여 복습을 하였고 5일차에 다시 내용을 배웠다.

1. 되돌리기 REVERT

되돌리기 연습 revert-practice
+git log 로 바뀐 내용 확인 가능

1-1. Rename :

  1. 나쁜 예시 : mv README.md LICENSE
    단순하게 이름을 바꾸려고 mv 만 사용할 경우 git status로 확인하면 git 에서는 README.md가 삭제되었다고 인지한다.
    이런 경우 다시 파일을 되돌리고 싶다면 전의 파일명으로 다시 바꿔주면 해결이 된다.
    mv LICENSE README.md 이런식으로 바꾸게 되면 원 상태로 복구가 된다.

  2. 좋은 예시
    git mv README.md LICENSE를 하는 경우 git status에서는 기존 파일의 이름이 변경 되었다고 인지한다.

  3. 결론
    즉, 단순히 mv만을 사용을 한가면 git에서는 대상 파일이 삭제된 것인지, 재명명 된 것인지 구분을 하지 못한다.
    알고 있던 위치에 파일이 없어지면 삭제되었다고 인식을 하는 것이다.
    그러므로 파일의 이름을 바꾸고 싶다(Rename)면 git mv를 사용하여 변경하자!

1-2. Undoing

수정, 변경 사항을 취소하고 싶을 때 사용한다.
최신의 commit 상태로 돌아간다.
★ 단, git add 이전에 사용하자.

git restore filename : filename의 최신의 commit 상태로 돌아간다.
git restore . : 현재 폴더 아래에있는 모든 것에 대해 최신의 commit 상태로 돌아간다.

1-3. Unstaging : add로 올린 stage에서 내린다

git reset HEAD filename : 커밋 단위를 되돌아갈때 사용한다.
git add가 된 이후에 사용하여 최신의 상태로 돌아간다.
★ 팀 전체에 영향이 가능하므로 가급적이면 사용하지 말라는 강사님의 이야기가 있다...

1-4. 이미 작성한 commit message를 수정

직전에 커밋한 메세지를 수정할 수 있는 방법이다.
★ 단, 커밋 자체를 수정할수는 없다.
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가 변경 된 것을 확인할 수 있다.

1-5. Revert

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에서도 생성부터 삭제 내용을 확인할 수 있다.

Team Fork

  1. n명의 팀이 한 팀을 이룬다. 이후 팀장이 만든 원격 저장소 link를 받아 접속한다.

  2. 원격 저장소 link에서 1시 방향에 있는 fork를 클릭한다.

  3. 이후 git clone url을 하여 작업을 진행한다.

  4. git flow init -> git flow feature start name -> 파일 수정 및 개인 작업 진행 -> git add, git commit -> git flow feature finish name

  5. develop에서 git push origin develop을 한다.

  6. 작업을 마치고 develop에서 push 까지 진행을 하였으면, 내 원격 저장소에 있는 팀장이 만든 team repository -> Pull request에 들어간다.

  7. new pull request -> [ 팀장 : 보낼사람 develop <- 나 : develop ] 를 선택하고 create request를 누른다.

  8. 이후 팀장쪽에서 해당 request에 대해서 Answer 할 수 있다.
    Merge pull request나 반려(enhancement)를 신청하여 작업을 진행한다. 이 해당 내용은 team repository에서 확인이 가능하다.

  9. 반려(enhancement)라면 수정을 해서 다시 push를 해주고 pull request를 한다.

  • Merge pull request라면 팀장은 git pull origin develop로 팀장 파일로 수정한 내용이 들어온다.
  • 하지만 다른 팀원이 받을려면 팀장의 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로 바로 받아올 수도 있다.
profile
잘 할 수 있는 개발자가 되기 위하여

0개의 댓글