프로그래밍/형상관리(23)
-
[git] 특정 폴더만 clone이나 fetch 하고 싶을 때
들어가며 일단 결론적으로 clone 명령어로는 특정 폴더를 가져올 수 없는 것으로 보인다. 아무리 찾아봐도 없었다! git에서는 core.sparseCheckout 옵션을 제공하는데 이것을 이용해서 해결했다. 상황은 프로그램팀 외에 타팀에서 git 저장소의 특정 기능을 이용해야되는데 불필요하게 코드나 파일 접근, 소스 fetch가 필요하지 않기 때문에 일부 폴더만 받을 수 있게 하는 것이다. 해결 예시 계정: elkiss 원격 저장소: localmachine:/usr/local/git/repos/ 특정 폴더: Code/SomeFolder/ git init git remote add -f origin elkiss@localmachine:/usr/local/git/repos/ git config core.s..
2022.06.17 -
[git] git error: fatal: index file corrupt
문제 error: bad signature fatal: index file corrupt gitk 체리픽 중 블루 스크린 후에 재부팅을 했는데 위와 같은 에러가 나왔다. 해결 - .git 폴더에 index 파일 제거 - git reset 하지만 해당 방법으로 모두 해결이 되지 않았다. checkout이나 hard reset이 되지 않았으면 아래와같은 에러. error: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference .git\refs\remotes\origin .git\refs\heads 해당 ref 파일들을 모두 제거 후 git fetch 로 해결
2022.04.08 -
[git] diff patch 만들기
들어가며 협업을 하다보면 코드를 공유해야 되는 경우들이 생기는데 가끔은 remote에 push를 하기엔 조금 애매모호한 녀석들이 있어요. 또는 중간 작업을 전달한다던가 일부 작업 코드를 전달한다던가... 작업량이 많다면 로컬 commit을 모두 묶어 전달할 수 있으나 적은량의 작업이라면 diff로 전달하면 심플하고 좋을때도 있어요. 생성 git diff > some-patch.patch 적용 적용하고자 하는 리포지토리 경로에서 apply를 명령어를 사용하면 됩니다. git apply some-patch.patch 예시 patch 만들기. README.md에 일부 내용 편집해서 some-patch.patch를 만든 상황입니다. RESET을 통해 remote origin으로 돌려버리고 지금 상태가 patch..
2021.06.01 -
[git] filename too long
문제 gitk 명령시 해당 에러가 나오고 먹통이 되기도 한다. 원인은 Windows가 예전에 260 자 이상 긴 파일이나 디렉토리를 제대로 지원하지 못 했다고 한다. 관련 REF: https://docs.microsoft.com/ko-kr/windows/win32/fileio/naming-a-file#maxpath 그래서 msys로 컴파일 된 Windows 응용프로그램의 경우 이 예전 API(최대 260자 지원)을 사용하여 발생하는 문제라고 한다. 해결 git config --system core.longpaths true 해당 명령어를 통해 해결할 수 있다. 캐시 삭제 해당 명령어로도 안되서 이곳저곳 찾아봤는데 캐시가 남아있으면 해당 캐시를 제거 해줘야 한다고 한다. 나는 gitk 캐시가 .git 폴더..
2019.07.15 -
[git] merge tool setting. kdiff3
kdiff 다운로드 http://kdiff3.sourceforge.net/ 홈페이지 가서 다운로드 받으면 된다. git config 설정 git config --global --add merge.tool kdiff3 git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe" git config --global --add mergetool.kdiff3.cmd '"C:/Program Files/KDiff3/kdiff3.exe" $BASE $LOCAL $REMOTE -o $MERGED' git config --global --add mergetool.kdiff3.trustExitCode false git config ..
2019.06.14 -
[GIT] cpp 파일을 Binary file로 인식할 때
보통 인코딩 문제다. 특히 VS2017은 기본 인코딩이 UTF-16으로 되어있어서git에서는 바이너리로 인식하는 웃긴 상황이..git 외에도 여러 cross 플랫폼에서 문제가 될 수 있다. 1. VS Code로 UTF-8로 변경 뭔가 일괄 변경해야 될떈 어떻게 해야될지 모르겠는데 그건 그때 생각해보자. :) 2. VS에서 새 파일 생성시에 UTF-8로 사용하고 싶으면 프로젝트에 .editorconfig 파일을 만들고 캐릭터셋을 지정해주면 된다. root = true [*]charset = utf-8 이외에도 다양한 세팅이 가능한듯.
2019.01.15