hyperskill - Editing the commit 영어 원문

이전에, 우리는 로컬 repository를 생성하는 법, 이 곳에 파일 추가하는 법, 변경 사항을 커밋하는 법을 배웠습니다.

하지만, 변경 사항이 매우 많은데, 그 중 몇 개가 올바르지 않은 것으로 판명된다면 어떻게 할까요?

이러한 경우, 당신은 이러한 변경사항들을 모니터링하고, 고쳐야 합니다.

이를 어떻게 하는지 한 번 살펴보겠습니다.


Monitoring the commit - 커밋 모니터링하기


각각의 commit은 스스로의 고유한 식별자 (해시) 가 있는데,

이 식별자는 숫자와 문자의 string으로 이루어진 형태입니다.

모든 commit과 이들의 ID에 대한 목록들을 보기 위해서, git log 명령어를 사용 할 수 있습니다 :

$ git log
commit ba25c0ff30e1b2f0259157b42b9f8f5d174d80d7
Author: Admin
Date: Fri Sep 18 13:47:20 2020 +0300

    new feature complete

commit b10cc1238e355c02a044ef9f9860811ff605c9b4
Author: Admin
Date: Fri Sep 18 14:33:09 2020 +0300

    Added content to my_file.txt

commit 09bd8cc171d7084e78e4d118a2346b7487dca059
Author: Admin
Date: Fri Sep 18 14:50:18 2020 +0300

    Initial commit

당신이 보다시피, 식별자(해시)는 꽤 길고 어색합니다.

하지만, 이러한 식별자를 다루기 위해 모든 문자열을 복사 할 필요가 없으며,

처음 나타나는 몇 개의 문자로도 충분합니다.

commit의 새로운 일을 보기 위해서, git show 명령어를 사용 할 수 있습니다 :

$ git show b10cc123
commit b10cc1238e355c02a044ef9f9860811ff605c9b4
Author: Admin
Date: Fri Sep 18 14:33:09 2020 +0300

    Added content to my_file.txt

diff --git a/my_file.txt b/my_file.txt
index e69de29..b546a21 100644
--- a/my_file.txt
+++ b/my_file.txt
@@ -0,0 +1 @@
+Hello, World!

이 예제는 언제 파일이 조정되었는지, 누구에 의해, 그리고 어떤 종류의 변경사항이었는지 보여줍니다.

새로운 텍스트는 "Hello, world!" 입니다.

commit 간에 차이점을 보기 위해서,

그리고 어디서, 언제, 어떻게 변경되었는지 알아내기 위해서,

당신은 git diff 명령어를 사용 할 수 있습니다 :

$ git diff 09bd8cc..ba25c0ff
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..e69e29
diff --git a/my_file.txt b/my_file.txt
index e69de29..b546a21 100644
--- a/my_file.txt
+++ b/my_file.txt
@@ -0,0 +1 @@
+Hello, world!

Changing the commit - 커밋 변경하기


지금 우리는 필요한 커밋을 찾고, 다른 커밋과 비슷 할 수 있습니다.

하지만, 만약 commit이 잘못되었고, 바로잡아야 한다면요?

여기 두 가지 가능한 방식이 있습니다.

첫 번째로, 만약 당신이 커밋을 만들었는데, 이게 잘못되었다는 것인 즉시 인지했을 때,

당신은 git commit --amend 명령어를 사용 할 수 있습니다.

이 명령어는 마지막 커밋으로부터 모든 것을 staging area에 추가하고, 새로운 커밋을 만들려고 시도합니다.

따라서, git commit을 입력 한 후, 위의 명령어를 입력하면 됩니다.

이는 코멘트를 알맞게 고치도록 허용하며,

staging area에 빠진 파일들을 추가 할 수 있게 해 줍니다.


만약 실수를 여러 커밋 전에 만들었고, 이러한 잘못된 변경사항이 벌써 서버에 전달되었다면,

당신에게 필요한 명령어는 git revert 명령어 입니다.

이 명령어는 커밋에서 만들어 진 변경사항을 취소하는 커밋을 생성합니다.

이러한 커밋은 주어진 ID 로 생성합니다 :

$ git revert b10cc123

가장 최근에 서버에 보내진 커밋은 HEAD를 추가하며 접근하거나,

$ git revert 명령어와 ID 없이 접근 할 수 있습니다 :

$ git revert HEAD

오래된 commit들을 취소할 때, 충돌에 대비하세요.

이러한 충돌은 파일이 또다른 새로운 커밋에 의해 변경되었거나,

더 이상 존재하지 않는 것 처럼 git이 더 이상 라인들을 찾을 수 없어 롤백이 필요 할 때 일어납니다.

부디, 고려 해 보시기 바랍니다.


Commit checkout - 커밋 checkout


잘못된 커밋들을 다룰 수 있는 하나의 방식이 더 있습니다.

바로 git checkout 명령어를 사용하는 겁니다.

만약 당신이 아직 에러가 나지 않는 또 다른 커밋에서 파일을 얻거나,

이미 버그가 고쳐진 커밋에서 파일을 얻고 싶다면, git checkout을 통해서 파일을 얻을 수 있습니다.

먼저 git checkout 명령어를 작성 하고, checkout 하고자 하는 커밋의 ID를 작성합니다.

그리고 잘못 된 변경사항이 만들어진 파일의 이름을 작성하세요 :

$ git checkout 09bd8cc1 my_file.txt

나중에 Branching에 대해서 말할 때, git checkout 명령어에 대해서 말하겠습니다.

하지만, 이 분야에서는 완전히 다른 콘텍스트로 사용 될 겁니다.


Conclusion - 결론


이번 주제에서 배운 것 들을 요약 해 보겠습니다 :

  1. 어떠한 커밋들이 만들어졌는지 보기 위해서, 당신은 따라오는 세 가지 명령어들을 기억해야 합니다 :
    • git log 명령어는 commit의 식별자를 찾아내기 위해 사용합니다.
    • git show 명령어는 식별자로 지정된 커밋을 봅니다.
    • git diff 명령어는 커밋들을 비교하는 데 사용됩니다.

  1. 커밋을 변경하는 데 사용하는 것은 :
    • commit --amend 명령어는 당신이 커밋을 만든 직후 즉시 실수 한 것을 알아차렸을 떄 사용합니다.
    • 서버에 이미 변경사항이 있다면,
      git revert <commit ID> 명령어를 사용하거나,
      git revert HEAD 를 사용해서 마지막 커밋을 사용 할 수 있습니다.

  1. 커밋을 캔슬하기 위해서, git checkout 명령어를 사용합니다.


words to remember

by whom : 누구에 의해 === (단축어 느낌)

try to take it into account : 고려 해 보시기 바랍니다.

errorneous : 잘못된