GIT 7

github 'remote rejected'로 푸시 실패하는 경우 해결방법 (access token scope)

깃허브에 푸시할 때 'remote rejected'라고 나오면서 푸시에 실패하는 경우가 있는데 원격 저장소에서 푸시를 거부하는 원인은 여러가지가 있습니다. 이번 게시물에서는 액세스 토큰 권한이 없어서 푸시가 안되는 경우의 해결방법을 알아보겠습니다. 참고로 Windows 10 환경에서 git이 Windows Credential Manager를 사용하는 상황입니다. github access token scope 때문에 remote 푸시 실패하는 경우 ! [remote rejected] master -> master (refusing to allow an OAuth App to create or update workflow `.github/workflows/build.yml` without `workflow`..

etc 2020.09.21

git autocrlf로 개행문자 통일하는 법

아시다시피 윈도우즈에서는 캐리지 리턴(Carriage Return, CR, \r)과 라인 피드(Line Feed, LF, \n)를 개행문자로 사용해 \r\n이 개행문자가 되고, 리눅스 계열과 MacOS에서는 라인 피드만 사용해 \n이 개행문자가 됩니다. 여러 OS에서 작업하거나 협업을 하는 경우 개행문자가 달라서 커밋 내역이 이상해지는 경우가 있습니다. 특히 윈도우와 리눅스에서 동시에 작업할 때 문제가 가끔 생깁니다. git autocrlf 설정을 통해 개행문자를 통일시키는 법을 알아보겠습니다. git autocrlf 설정 먼저 깃에서 core.autocrlf는 파일을 git object에 체크인할 때 개행문자를 처리하는 옵션인데요, 3가지 설정이 가능합니다. core.autocrlf = false (d..

etc 2020.09.19

git 기본 에디터 변경하는 법

git은 기본적으로 쉘 환경변수에서 VISUAL 또는 EDITOR로 설정된 것을 에디터로 사용하고, 아니면 vi를 사용하는데요, 우분투의 기본 에디터가 nano라서 git의 커밋 메시지를 쓰거나 revert를 하거나 등등 여러 작업을 할때 나노를 사용하게 됩니다. 위 사진은 git commit할 때 nano 에디터가 나온 모습인데요, 저는 vim이 더 익숙하니까 한번 바꿔보겠습니다. git에서 설정하는 방법과 시스템 에디터를 바꾸는 방법이 있는데 두 방법 다 소개하겠습니다. git config에서 설정하기 $ git config --global core.editor vim 이렇게 config core.editor를 vim으로 설정하면 앞으로 깃에서 에디터를 호출할 때 시스템 에디터와 상관 없이 vim을 ..

etc 2020.09.10

git credential cache 설정 방법

git을 사용할 때 원격 저장소에 푸시하는 등 접근할 때 아이디와 비밀번호가 필요한데요, 기본적으로 git은 입력했던 아이디와 비밀번호를 저장하지 않아 매번 repository에 접근할 때마다 아이디와 비밀번호를 요구합니다. $ git push Username for 'https://github.com': John Password for 'https://john@github.com': ... $ git push Username for 'https://github.com': John Password for 'https://john@github.com': (반복) 매 번 푸시할때마다 아이디와 비밀번호(또는 개인 액세스 토큰(PAT))를 입력하면 정말 귀찮겠죠? 그래서 git은 1.7.9 버전 이후부터 cre..

etc 2020.09.10

Github MFA 이용시 토큰 생성 방법

깃허브는 멀티팩터 인증(MFA, Multi-Factor Authentication)을 지원합니다. 계정 보안을 위해서는 꼭 2단계 인증 등을 해주는게 좋은데요, 저는 구글 인증기(google authenticator)를 연동해 사용하고 있습니다. 깃허브 계정이 MFA를 사용중일 때 커밋을 푸시하려면 계정, 비밀번호로는 안됩니다. 토큰을 만들어줘야 하는데 이번 게시물에서는 개인 액세스 토큰(Personal access token)을 만들어서 로그인을 진행하는 방법에 대해 알아보겠습니다. Github 개인 액세스 토큰 생성 및 로그인 방법 $ git push -u origin master Username for 'https://github.com': example Password for 'https://ex..

etc 2020.09.08

GPG key 생성 방법, github 연결 방법 및 git 설정 방법

GPG는 GnuPG = GNU Privacy Guard로 PGP(Preety Good Privacy)를 대체하는 암호화, 복호화 프로그램입니다. 깃허브 커밋 내역을 보면 커밋 메시지 옆에 "Verified" 로고가 있는 경우가 있는데요, 커밋이 gpg(또는 pgp) 키를 이용해 서명되었다는 것을 나타냅니다. 왜 굳이 커밋에 인증을 해야 할까요? 기본적으로 git 커밋에는 이름과 이메일이 들어갑니다. 그런데 악의적인 사용자가 git 설정에 제 이름과 이메일을 써서 멀웨어를 만든 뒤 깃허브에 릴리즈했다고 생각해봅시다. 나중에 멀웨어임이 밝혀지면 저는 그 멀웨어에 관여하지 않았지만 커밋 내역에 이름과 이메일이 들어가있어 범인으로 오인될 수 있습니다. 또 팀원의 깃헙계정이 해킹돼 악성 코드가 심어진 PR을 보냈..

etc 2020.09.08

Git 서브모듈까지 clone 하는 법

git을 사용하다보면 다른 git 리포지토리를 그대로 갖다 써야되는 경우가 있습니다. 예를 들면 LLVM의 코어를 프로젝트 안에 포함시켜야할 때가 있는데요, 이때 프로젝트를 그대로 복사만 해놓으면 이후에 관리가 안됩니다.그래서 git에서는 서브모듈(submodule, =nested repository)이라는 기능을 활용하고 .gitmodules 파일로 서브모듈들을 관리하게 됩니다. Github(깃허브)에서 폴더에 화살표가 그려진 아이콘이 있고 뒤에 커밋 ID가 써있는 폴더가 있는데 이게 서브모듈을 나타내는 겁니다.예를 들면 마이크로소프트 STL은 llvm-project, vcpkg를 서브 모듈로 사용하고 있습니다. 폴더를 클릭해보면 해당되는 커밋 ID의 리포지토리가 나옵니다. $ git clone --r..

etc 2020.09.02