Daily Notebook

[TIL] 2021. 7. 8

by 배부른코딩로그

💡 Facts (사실, 객관)

  • Git 스터디
    • "checkout의 기능 분리": switch / restore
    • "Git 마지막 줄 개행은 왜 체크할까?": No newline at a end of file.

 

⁉️ Feelings (느낌, 주관)

  • Git에 대해 공부할수록 정말 좋은 기능이 많다는 것과 공부해야 할 것들이 많다는 것을 느끼게 된다.
  • Git을 사용할 때, 아무 생각 없이 마지막 줄에 개행하던 이유를 알게 되었다.
    가끔 개행을 빼먹는데, 이유를 알게 됐기 때문에 덜 빼먹지 않을까 싶다.

 

🤔 Findings (배운 점)

  • git checkout 명령어의 분리.
    :: 명령어 간의 역할을 명확하게 하기 위해 switch와 restore로 변경되었다.
    • git switch <new or already branch name>: 브랜치를 (없는 경우 생성하면서) 변경할 수 있다.
    • git restore: 작업중인 파일을 복원한다.

  • Git, "No newline at a end of file" 탄생 배경.
    :: Github에서 '파일 끝에 개행 문자가 없습니다.'라는 문구에 대한 의미를 알게 되었다.
    • C 컴파일러인 gcc는 POSIX를 근거로 동작했는데, 파일 끝에 EOF가 없으면 ERROR가 발생했었다.
      실제로 소스코드를 한 줄씩(line by line)으로 읽은 후 파일은 끝났지만, 개행문자가 없기 때문에 '아직 한 줄이 끝나지 않았구나'라고 인식하여 비정상적으로 동작하는 이슈가 존재했다.
    • *IEEE가 책정한 POSIX에서 줄(line)을 아래와 같이 정의한다.
      3.206 line
      A sequence of zero or more non- <newline> characters plus a terminating <newline> character.
      :: 0 또는 개행문자(newline)가 아닌 문자들이 나오다가 개행문자로 끝이 나는 시퀀스.
    • 또한, 터미널에서 파일 내용을 출력하는 cat 등의 명령어 시, 아래와 같이 출력되기도 한다.
      $ cat nonewline.txt # 파일 마지막에 개행문자가 없을 때,
      no new line$ cat newline.txt
      new line
      $

 

🔥 선언(Affirmation)

쉴 때 푹 쉬고, 충전 후 다시 꾸준히 하는 내가 되자!

나는 꾸준하게 공부하는 개발자다!

 

🧑🏻‍💻 부록

[참고] Git 2.23.0 출시: checkout 기능 분리(switch, restore), "honeymon.io"

 

반응형

블로그의 정보

배부른코딩로그

배부른코딩로그

활동하기