Giit 지령 입문:restore의 수수께끼 풀기!"세 번째".

지난번'제2회'에서restore라면dd가 안 돼요. 이유를 풀어주실 수 있나요?


글쎄요~ 저까지 포함해서 초보자는 뭘 해도 처음이라 다소 번거로울 수 있어요.상상 속의 일, 단 한 번이라도 그렇게 생각하는 일, 선입견 위주의 관념을 재조명하는 건 정말 힘들죠~ (쓴웃음)
한마디로 새로운 정보를 도입하지 않으면 얼마가 지나도 새로운 답이 나오지 않는다.지금까지 잘못된 정보에는 잘못된 답이 나왔다!for(;;){ echo "><;;" }

그나저나 저번 기사는 여기서부터~


https://zenn.dev/shiozumi/articles/7eb29b3c673c37

그럼,git add 명령의 동작 확인부터 시작합니다!


Working Tree(linux file folder)
README.md

↓ git add README.md

Staging Area
README.md

↓ git commit -m "first commit"

Git Repository
README.md

이어서 git restore 명령의 동작을 복습하세요!


Git Repository
README.md

↓ git restore --stage README.md

Staging Area
README.md

↓ git restore README.md

Working Tree (linux file folder)
README.md

응, 이런 인상을 상상하고 있어!


맞다 맞다 초보자의 관건적인 의식이 아직 부족하다.물론, 나도!!
원래git의 역할은 파일 버전 관리이기 때문에 항상 차이를 의식한다.그 부분에서 벗어나면 사고의 맹점이 된다.즉, 문서의 차분을 잘 관리해서 상태로 표현해 보자~

그리고dd,retore는move가 아닙니다.코피다.


그리고,,, 맞다 맞다 맞다, 이것도 어느새 무브라고 생각했는데 결국은 file copy.그렇지 않다면 파일을 잘못 삭제했다면 단순히 복원할 수 없었을 것이다.(쓴웃음) 정리한 후 git는 파일의 차분을 관리하면서 코피를 한다.결국add,restore라면 둘 사이의 파일 차이는 사라지겠죠.당연한 말을 하는 것이 더 신비로울 수도 있겠지?(폭소)

이른바 restore는 사실상 파일의 차이를 copy하는 것이다.


그런 다음 Working Tree에 차분을 복사하여 linux file folder의 로컬 파일에 저장합니다.가짜라고 생각되면 파일을 지우고 다시 restore!
[shiozumi@ovs-009 mygit]$ rm README.md
[shiozumi@ovs-009 mygit]$ ll
合計 0
[shiozumi@ovs-009 mygit]$ git restore README.md
[shiozumi@ovs-009 mygit]$ ll
合計 4
-rwxrwxr-x 1 shiozumi shiozumi 27  25 18:14 README.md
[shiozumi@ovs-009 mygit]$ cat README.md
# note

그 결과 같은 파일이 세 개나 됐나요?사실 스가는 틀렸다!


Git Repository
Staging Area
Working Tree
README.md
README.md
README.md
저도 잘 몰라요. 사실 서류는 세 군데에 있어요. 그 차분을 관리하고 있죠.

결론은 차이가 없으면 dd가 안 된다는 것이다!


따라서 restore 후에는 Working Tree와 Stage Area의 파일 차이가 사라집니다.같은 내용의 파일이기 때문에dd를 할 수 없다는 뜻이다.그리고 차분이 있을 때만 git status에 표시됩니다.※또는 Stage Area에 파일이 없는 경우에만 해당됩니다.

README.md 편집,dd를 시도해 보세요!


[shiozumi@ovs-009 mygit]$ vi README.md
[shiozumi@ovs-009 mygit]$ cat README.md
# note
# add // <-- ここに一行追加!

파일 차이로 이번에dd도 성공했고git status 명령도 나왔어요~(웃음)


[shiozumi@ovs-009 mygit]$ git add README.md
[shiozumi@ovs-009 mygit]$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
이로써 로컬 파일의 차이는 Stage Area에 로그인되어 Giit Repository와 차이가 있는 상태가 됩니다.어쨌든 git restore--staged 명령을 입력하고 git restore를 입력하면 방금 변경된 추가 줄이 또 사라질 거예요!

이번'제3회'는 여기까지!수고하셨습니다!(웃음)


https://zenn.dev/shiozumi/articles/80b057ce7c77dd

좋은 웹페이지 즐겨찾기