안녕하세요. codingdog입니다. pycharm에서 git push를 할 때 --force가 붙어있는 것을 볼 수 있습니다. 위험해 보이지만, 한 번 실습을 해 보면서 얼마나 위험한지 보도록 하겠습니다. 저는 gitlab 15.x 버전으로 실습하였습니다. 실습하기 전에, main branch에 대해, force push가 허용되어 있어야 합니다. 먼저, 1.txt를 생성합니다. 다음에, Hello 라는 메세지를 추가한 다음에 commit을 해 보겠습니다. 다음에, push를 해 보겠습니다. vscode에서는 Sync changes를 누르면 바로 됩니다. 1.txt add 라는 메세지가 추가되었습니다. 내용을 확인해 보면, Hello 라는 내용이 있는 1.txt를 추가했다고 나옵니다. 그런데, 저는 이..
GIT 검색 결과
안녕하세요. 이번 시간에는 git restore 명령어에 대해 간단하게 알아봅시다. 사실 git status 명령어를 칠 때 마다 계속 이 명령어랑 add가 안내에 뜨길래 뭐 하는 것인가 싶어서 알아보게 되었어요. 먼저 프로젝트의 구조는 위와 같습니다. 폴더 a 밑에 b.py와 1.txt가 있고, git_test 밑에 .gitignore, 1.txt, a.py, main.py, readme가 있습니다. 수정하기 전 b.py는 1만 출력하는 문장만 있습니다. main.py에는 shutil.rmtree.avoid_symlink_attacks를 출력하는 부분만 있어요. 저는 local에서 main.py와 b.py와 1.txt를 바꾸었습니다. 아직 commit은 하지 않은 상태에요. b.py는 2를 출력하라는 ..
git reflog 명령어로 브랜치나, 다른 레퍼런스들이 업데이트 된 기록들을 봅시다. 이를 이용하면, 실수로 reset hard를 하고 push force를 한 커밋도 복구할 수 있습니다. 여기에서는 상황을 토대로, 이럴 때 reflog를 쓰겠구나. 정도만 알아보겠습니다. 먼저, 제 로컬 레포에는 38분전에 커밋된 3e7d8172와 42분전에 commit된 것이 있습니다. 38분에 커밋된 것은 1.txt가 변경이 된 기록을 가지고 있겠네요. 다음에, git reset --hard HEAD^를 입력했습니다. --hard가 들어갔기 때문에, 버전을 돌릴 때 파일까지도 같이 돌리게 됩니다. 예를 들어, 최신 커밋이 1.txt에 ABC가 추가된 것이라고 해 보겠습니다. git reset --hard HEAD^..
안녕하세요. 이번 시간에는 간단하게 checkout이랑 reset에 대해서 실습할 거에요. reset은 꽤 옵션이 많긴 하지만, 자세하게 다루지는 않겠습니다. 먼저 GG.. 라는 커밋이 하나 추가되었어요. 다음에 checkout HEAD~1을 해 보겠습니다. 그러면, 이전에 HEAD가 가리키고 있었던 것은 GG.. 였는데요. HEAD~1로 checkout을 했기 때문에 HEAD만 GG.. 커밋의 이전으로 이동하게 됩니다. 따라서, stage3 first 커밋을 HEAD가 가리키고 있는 상황이 되어 버린 셈입니다. HEAD가 가리키고 있는 hash는 0b07df4... 였습니다. 그런데, refs/heads/stage3은 251f69a... 를 가리키고 있어요. 이 detach 상태를 해결하는 방법은 st..
detached HEAD랑 attached HEAD 상태에 대해 간단하게 알아봅시다. 먼저, 현재 HEAD의 상태를 보겠습니다. 현재 HEAD는 refs/heads/stage를 가리키고 있습니다. 그리고 refs/heads/stage는 606d53.. 커밋을 가리키고 있습니다. 그런데, 여기서 git checkout HEAD~1을 해 보겠습니다. 어떻게 바뀔까요? 안내가 뜨면서 detached HEAD state 라는 상태가 되었다는 문구가 뜨게 됩니다. 그리고 아래와 같은 문구도 뜨게 되는데요. 현재 retain commit에서 new branch를 생성하고 싶으면, git switch -c BRANCH1 이렇게 생성해라. 라고 되어 있어요. 그리고, 현재 HEAD는 cd8c1c5를 가리키고 있다고 되..
최근댓글