Github에서 이슈를 만들고 관련된 작업을 한 후 이슈와 커밋을 연결하기 위해서 아래와 같이 커밋 메시지에 이슈의 키값을 함께 작성했다. #1 커밋 메시지이 후에 병합을 하던 도중에 충돌이 발생하여 충돌을 해소한 후 다시 커밋을 하려는데 아래와 같은 메시지가 나오며 커밋이 되지 않는 문제가 발생했다.Commit operation was cancelled due to empty commit message.위와 같은 문제가 발생하는 이유는 git에서는 #은 주석을 뜻하기 때문에 메시지가 없는 것처럼 동작한다고 생각했다. 그리고 관련 내용으로 찾아봤을 때 아래와 같이 설정을 변경하는 방법으로 문제를 해결했다. * 깃의 주석을 정의하는 문자를 변경 방법 git config core.commentChar '..
개인 프로젝트를 진행하던 중 이미 Git에 Commit 된 파일의 이름을 변경할 일이 생겼다. 이때 작업한 내용은 파일 이름의 대문자를 소문자로 변경하는 것이었는데, 변경한 내용을 Git에서 감지하지 못하는 문제가 발생했다. 이유를 찾아보니 Git의 설정에 대소문자를 구분하지 않도록 설정되어 있기 때문인 것으로 확인했다. 변경한 내용을 Git이 감지할 수 있도록 하는 방법은 두 가지가 있는 것으로 확인했다. 하나는 git mv 명령어를 사용하여 파일의 이름을 변경하는 것이다. 다른 하나는 Git의 config 파일에서 core.ignorecase 속성의 값을 false로 수정하는 것이다. 다만 config 파일의 속성값을 변경할 때는 두 가지를 유의해야 한다. 하나는 변경한 내용을 Commit 한 후 원..
GitHub에서 보안을 강화하기 위해 2FA를 활성화하라는 메일이 왔다. 2024년 1월 18일 00:00(UTC)까지 활성화를 해야 하고 하지 않으면 GitHub에 대한 접근에 제약이 생긴다고 한다. 해당 메일에서 아래와 같은 방법으로 2FA를 활성화할 수 있다고 한다. Security key GitHub Mobile Authenticator application (TOTP) Text messages (SMS) 이 글에서는 Authenticator application을 사용해서 진행해보려고 한다. 우선 크롬 확장 프로그램에 Authenticator를 검색하여 설치한다. 그다음 GitHub에서 2FA를 활성화하기 위해 Setting에 들어간다. 그다음 Password and authntication 목..
fetch와 pull의 차이점은 로컬 저장소에 바로 반영하냐 하지 않냐의 차이가 있다. 조금 더 자세히는 fetch가 원격 저장소에서 커밋, 파일 등을 가져와서 볼 수 있는 것이라면 pull은 커밋 등을 가지고 온 후 로컬 저장소에 병합까지 되는 것이다. 즉 pull은 fetch를 한 후 merge나 rebase를 통해 병합까지 진행하게 된다.(기본적으로는 merge가 동작하도록 되어있다.) pull의 장점은 원격 저장소의 변경된 부분을 확실하게 알고 있다면 조금 편하게 작업할 수 있다는 것이다. fetch의 장점은 변경된 부분을 미리 파악할 수 있고 이후의 작업 방향을 결정할 수 있다는 것이다.(충돌이 발생하거나 하는 상황을 미리 방지할 수 있게 된다.) fetch : 원격 저장소에 변경된 내용이 있는..
원격 저장소에서 Clone 명령어로 프로젝트를 가져온 후 git 명령어를 사용할 때 fatal: not a git repository (or any of the parent directories) 라는 에러가 발생했다. 이 에러는 git 명령어를 실행하려는 디렉터리가 git의 관리하지 않는 디렉터리이기 때문이다. 이러한 경우 git init 명령어를 실행하여 해결할 수 있다.
Git에서 푸시를 사용할 때 명령어는 보통 다음과 같다. git push [원격 저장소 이름] [로컬 저장소의 브랜치] 여기에서 강제로 푸시를 하는 방법은 다음과 같은 방법들이 있다. git push [원격 저장소 이름] [로컬 저장소의 브랜치] -f 또는 git push [원격 저장소 이름] [로컬 저장소의 브랜치] --force 또는 git push [원격 저장소의 이름] +[로컬 저장소의 브랜치] 기본적으로 강제로 푸시하는 경우는 푸시가 안되기 때문일 것인데, 잘못된 푸시로 원격 저장소 자체에 문제가 발생할 수 있으니 조심해서 사용해야할 필요가 있다. * 주의 푸시할 때 --force 또는 -f 옵션을 사용할 경우 push.default 속성 값이 matching이거나 remote.*.push 로 ..
Git이란 간단하게 말하면 형상 관리 서비스이다. 그러니까 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 서비스이다. 이런 Git을 사용하여 여러 사람들과 협업하기 쉽게 만들어진 사이트로 Github, Gitlab, Bitbucket 등이 있다. Git의 가장 기본적인 내용은 원격 저장소, 로컬 저장소, Staging Area, Clone, Add, Commit, Push, Pull이 있다. 원격 저장소는 Github 등에서 만들 수 있고 코드의 형상 관리를 원격에서 관리하기 위한 저장소이다. * 반드시 원격 저장소가 있어야지만 Git을 사용할 수 있는 것은 아니다. 하지만 원격 저장소를 사용하지 않으면 Git을 사용하는 의미가 매우 많이 퇴색된다. 로컬 저장소는 개발자의 컴퓨터에서 만들어 개발자의..
reset 한 내용을 취소하고 싶을 때 간단하게는 git reset HEAD@{1} 명령어를 실행하면 된다. 이렇게 취소할 수 있는 이유는 Git에서는 커밋, 채크아웃, 머지, 등의 이력을 모두 기록하기 때문이다. 이렇게 기록된 이력은 git reflog 명령어를 통해서 볼 수 있다. 2f60dff (HEAD -> master) HEAD@{0}: reset: moving to HEAD~1 e2ac834 HEAD@{1}: reset: moving to e2ac834351e09a598565e3e4a96786dd20e98dd7 0cd1ee4 HEAD@{2}: commit: test add type A e2ac834 HEAD@{3}: reset: moving to HEAD~1 9fbed05 HEAD@{4}: c..
리베이스(Rebase)는 깃의 브랜치를 합칠 수 있는 방법 중 하나이다. 리베이스를 통해 합쳐지는 것을 fast-forward 라고 하는데 여러 줄기로 나누어져 있는 브랜치를 하나의 줄기로 합치는 것을 뜻한다. 리베이스 외에 merge를 통해 브랜치를 합치는 것은 동일하지만 리베이스의 장점은 브랜치를 깔끔하고 보기 쉽게 정리할 수 있다는 장점이 있다. 그래서 리베이스는 보통 리모트 브랜치에 커밋을 깔끔하게 적용하고 싶을 때 사용한다. 리베이스를 사용할 때 조심해야하는 것은 다른 동료와 공유하고 있는 브랜치(ex master 브랜치)에는 하면 안된다는 것이다. 이유는 리베이스를 할 때 커밋은 기존의 커밋을 그대로 사용하는 것이 아니라 새로운 커밋을 생성하여 합치기 때문에 작업한 내용을 push한 후 다른 ..
방법은 reset을 통해 이전 커밋으로 돌아가 해당 내용을 다시 커밋하는 것이다. 이렇게 하면 이전에 했던 커밋을 없앤 후 다시 커밋하는 것이기 때문에 막 사용하면 안 될 것 같다. 깃 터미널에서 사용하는 방법 : 1. 하나의 커밋을 되돌릴 때는 git reset HEAD^ 명령어를 작성하고 여러개의 커밋을 한 번에 되돌리려면 git reset HEAD~2 명령어를 작성하면 된다.(2 라고 작성된 곳에 원하는 만큼의 수를 작성하면 된다.) 2. 커밋을 되돌렸으니 git commit -m '커밋 내용' 명령어를 통해서 다시 커밋하면 된다. 3. 커밋을 원하는데로 다시 작성했다면 git push origin +[브랜치 명] 명령어를 통해서 강제 푸시를 해주면 된다. SourceTree에서 사용하는 방법 : ..