Git 11

[git] 이미 발행된 커밋 고쳐 쓰기

고쳐쓰는 대상 커밋 순서 커밋 저자 커밋 일시 사전 작업 수정 가능 여부 확인 다른 작업자와 공유된 저장소이면 다음 여부를 확인하기 이미 공유(push)된 커밋이면 절대 고치지 않습니다!!. 그래도 고쳐야 한다면 다른 작업자의 현재 작업 내용을 수동으로 백업해놓고, 이 수정 작업 수행 후, 현재 저장소를 삭제(또는 백업)하고 저장소를 새로 내려받고 나서 이전 백업 내용을 복원해야 합니다. 차라리 되돌려야 하는 부분이 있다면 revert 명령을 활용하세요. 수정한 본인 제외하고 모두가 꼬입니다... 아직 공유되지 않은 커밋이라도 수정 작업 중에 반영된 내용으로 이 후 커밋들과 충돌이 발생해서 회복하기 힘들게 꼬일 수 있습니다. 현재 수정하는 부분이 이 후 커밋에서 다르게 수정된 경우 파일 추가 삭제 등으로..

IT/VCS 2022.07.26

[git] 삭제된 태그 복원하기

참고:git-scm.com/docs/git-fsck Git - git-fsck Documentation git-fsck tests SHA-1 and general object sanity, and it does full tracking of the resulting reachability and everything else. It prints out any corruption it finds (missing or bad objects), and if you use the --unreachable flag it will also print out object git-scm.com 특정 태그를 삭제했는데 새로 태그를 달려고 보니 삭제한 태그의 내용을 또 수집하기가 귀찮고 힘이 들었습니다. 방법이 없나 하고 ..

IT/VCS 2021.01.29

[git] 한 개의 커밋을 둘 이상으로 분리하기

아직 push 하지 않은 커밋이라는 기준으로 설명합니다. 이미 push 한 커밋을(혼자 쓰는 저장소라면 상관없다고 생각합니다..) 변경시키는 것은 다른 참여자 저장소를 꼬이게 할 수 있으니 자제하시기 바랍니다. git log 에서 원하는 커밋 해시명을 맨 처음에서부터 7자 이상 복사합니다. 예를 들면, commit 7a8b9c1..... 라고 시작하면 7a8b9c1 을 복사합니다. git rebase -i 7a8b9c1 vim 또는 nano 형태 또는 이미 시스템에서 기본값으로 지정한 편집기에 pick 해시값 커밋로그 형태로 목록이 떠 있을 것입니다. 이제 7a8b9c1 가 있는 줄을 찾아 pick 이라고 되어 있는 것을 지우고 edit 로 바꿉니다. 참고로 vim 에서는 p로 커서를 이동한 다음 cw ..

IT/VCS 2021.01.14

[openwrt] github clone 시 ssh 방식으로 받도록 설정하기

pc 에서 생성한 8192B rsa 키를 openwrt 의 .ssh 에다 넣고 git clone git@github.com:simryang/vimrc.git 을 실행했더니 권한이 없어서 안된다는 메시지가 출력됩니다.root@wizfi630s:~# git clone git@github.com:simryang/vimrc.git Cloning into 'vimrc'... /usr/bin/ssh: Connection to git@github.com:22 exited: No auth methods could be used. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the r..

IT/System Digging 2020.08.06

[git][error] bad line length character

git 저장소를 거의 혼자 쓰는 바람에 방치되어 있던 원격 저장소.. 이번에 필요(!)가 생겨서 git pull을 오랜만에 날렸는데 bad line legth character 라며 id 쪽이 잘못되었다고 뜨네요. 저장소 주소는 ssh://id@server:/repository_path.git 형태로 되어 있습니다. 이런저런 검색을 해보고 해도 답이 없어 보였는데 혹시나 싶어서 저장소 설정들을 쭉 보니.. ssh key 항목이 비어 있습니다. 이번에 개발 머신 엎은 뒤로 git extensions 를 tortoise-git 대신 설치했습니다. 좀 더 편해 보이기도 하는데 이번에 처음 써봐서 좀 더 적응이 필요해 보이네요. 어쨌든 예전처럼 pageant 등등 건드리지 않고도 ppk 파일 지정하는 것만으로도..

IT/VCS 2019.09.03

[git] gitlab 접속시 pageant 로 ssh 키 사용하기

기록용으로 남깁니다. gitlab에 puttygen으로 실행시키던, 어디서 가져오던(ida_rsa.pub), 기존에 puttygen으로 생성한 ppk 키를 puttygen으로 읽어서(Load) Key 쪽에 출력된 내용을 긁어 붙이던 gitlab 홈피에 로그인해서 설정(Settings) > 첫번째 열쇠 모양(SSH Keys) 항목을 선택하여 붙여넣고 Add Key 항목을 눌러 등록해줍니다. pageant 를 실행시키고 생성한 키를 추가(Add Key)해줍니다. 윈도우용 git은 보통 ssh.exe 를 사용하여 접속하는데 pageant 랑 아무 상관이 없습니다. ssh.exe 대신 putty가 제공하는 plink.exe 를 사용하면 pageant 과 관리하는 키로 접근할 수 있습니다. 제어판 > 시스템 및 ..

IT/VCS 2019.09.02

[git] 수정된 소스의 일부분만 추가 및 커밋하기

수정된 소스가 특정 위치마다 커밋의 내용이 크게 다른데 소스 수정하다 보면 한꺼번에 여러 곳을 고치게 되는 경우가 자주 있습니다. 이럴 때 일일이 이 부분은 버그 커밋 내용, 기능 추가 내용, 소스 정리 내용 등으로 구분해서 커밋을 할 수 있다면 소스 수정을 겁내지 않고 할 수 있습니다. git에서는 심지어 하나의 파일도 사용자가 지정해서 원하는 부분만 커밋할 수 있는 기능을 제공합니다. git add -p 또는 git add --patch 명령을 내리면 'Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]?'라는 질문이 뜨면서 입력을 기다리게 됩니다.뭔가 복잡해 보이는데 간단하게 맨 앞의 y,n은 현재 보이는 코드 덩어리(chunk)를 추가 하겠습니다(y) 안하겠습니다(n)를 지정하..

IT/VCS 2014.09.11

[git]실수로 지운 커밋(commit) 살리기

기록용으로 남겨둡니다. 참고 사이트에 자세히 나와 있으므로 꼭 참고하시기 바랍니다. 0. 현재 저장소가 지저분(?)하지 않아야 합니다. git status 명령으로 확인해봅니다. git status nothing to commit, working directory clean 이런 결과이면 다음으로 넘어가면 되지만 아직 수정 중인게 있는데 어쩌란 말야 하는 상황이라면 깔끔하게 임시 보관함(stash)에다 저장해줍니다. git stash save "imsi" Saved working directory and index state On master: imsi HEAD is now at a104848 [printf-define] Add simple example imsi 내용으로 자세한(!) 설명을 남기고 저장..

IT/VCS 2014.09.02

[넋두리]git과 mercurial 중에 뭐로 정착해야 할까..

회사에서 쓰는 버전 관리 시스템(VCS)는 svn이다. 난 참고로 이걸 거의 안쓰고 자체적으로 git을 통해 관리하고 있다. 그놈의 리비전 때문에...팀 리더가 머큐리얼을 권했다. 매우 가까운(!) 이가 계속 추천하고 있고 svn 사용자들이 쉽게 적응할 수 있기 때문..근데 이리 저리 비교글을 찾아보니 좀 고민이 된다. 아무래도 svn 개념들을 차용한 것들이 있는데 git 에 익숙한(익숙하기만 하고 잘하지는 못한다. 입문 간신히 뗀 초보자) 나로서는 불필요해 보이는 부분들이 있다.그래서 고민이다. 그냥 이 참에 새로 배워본다고 적응해볼까 하는 생각도 들지만 비슷하게 시작한 svn에 아직도 정을 붙이지 못하고 회사 소스 서버에 반영할 경우에만 사용하는 필요악으로 전락하고 말았다.고민을 좀 더 해봐야겠다. ..

IT/VCS 2014.01.14