티스토리 뷰

Sparse 체크 아웃

이제 Git 1.7에

있습니다.또한 "

전체 저장소를 먼저 체크 아웃하지 않고 스파 스 체크 아웃을 수행 할 수 있습니까?

" 라는 질문도 참조하십시오 . ”.스파 스 체크 아웃은 Git 다운로드 파일 중 일부가 작업 트리에 포함되지 않더라도 전체 저장소

다운로드

해야합니다 .-------------------
git에서는이를 수행하는 실제 방법이 없습니다. 그리고 단일 작업 단위로 한 번에 두 트리 모두에 영향을 미치는 변경 사항을 적용하지 않을 경우 둘 다에 대해 단일 저장소를 사용할 이유가 없습니다. 나는이 Subversion 기능을 놓칠 것이라고 생각했지만, 저장소를 만드는 데는 관리적 정신적 오버 헤드가 너무 적다는 것을 알았습니다 (리포지토리가 작업 복사본 바로 옆에 저장되어 있다는 사실 때문입니다. 작업 사본) 작은 단일 목적 저장소를 많이 만드는 데 익숙해졌습니다.그래도 고집하거나 정말로 필요하다면

mytheme

myplugins

디렉토리 만으로 git 저장소를 만들고 WordPress 설치 내에서 심볼릭 링크 할 수 있습니다.


MDCore는 다음과 같이 썼습니다.

예를 들어

mytheme에

커밋하면 myplugin 의 개정 번호가 증가합니다.

git은 모든 형식의 개정 번호를 단조롭게 증가시키는 개념을 완전히 없애기 때문에 단일 저장소에 두 디렉토리를 모두 배치하기로 결정한 경우 git에게는 문제가되지 않습니다.git의 단일 저장소에 무엇을 모을 지에 대한 유일한 기준은 단일 단위를 구성하는지 여부입니다. 귀하의 경우에는 각 디렉토리의 편집 내용을 개별적으로 보는 것이 합리적이지 않은 변경 사항이 있는지 여부. 한 번에 두 디렉토리의 파일을 편집해야하는 변경 사항이 있고 편집 내용이 함께 속한 경우 하나의 저장소 여야합니다. 그렇지 않다면 함께 먹지 마십시오.Git은 정말로 별도의 엔티티에 대해 별도의 저장소를 사용하기를 원합니다.

하위 모듈

실제로 때문에 서브 모듈은 하나 개의 저장소에 두 디렉토리를 유지하고자하는 욕구를 해결하지 않는

적용

다음에 통합됩니다 각 디렉토리에 대한 별도의 저장소를 갖는

다른

서브 모듈을 사용하여 저장소를. 더 나쁜 것은 WordPress 설치 내의 디렉토리가 동일한 디렉토리의 직접적인 하위 디렉토리가 아니고 다른 많은 파일이있는 계층의 일부이기 때문에 통합 저장소의 하위 모듈로 디렉토리 별 저장소를 사용하면 아무런 이점도 제공하지 않습니다. 저장소는 사용 사례 / 필요를 반영하지 않습니다.-------------------
스파 스 체크 아웃에 대해 내가 싫어하는 한 가지는 디렉토리 깊이가 몇 개인 하위 디렉토리를 체크 아웃하려는 경우 디렉토리 구조에 이로 연결되는 모든 디렉토리가 포함되어야한다는 것입니다. 이 문제를 해결하는 방법은 내 작업 공간이 아닌 위치에 저장소를 복제 한 다음 작업 공간 디렉토리에 저장소의 하위 디렉토리에 대한 심볼릭 링크를 만드는 것입니다. Git은 git status와 같은 것이 현재 작업 디렉토리와 관련된 변경 파일을 표시하기 때문에 이와 같이 매우 잘 작동합니다.-------------------
실제로, "좁은"또는 "부분적"또는 "희소"체크 아웃은 현재 Git에 대한 무거운 개발 중입니다. 아래에 전체 저장소가

.git

있습니다. 따라서 다른 두 게시물은 Git의 현재 상태에 대한 최신 정보이지만 결국 희소 체크 아웃을 수행 할 수있을

같습니다. 더 자세한 내용에 관심이 있다면

메일 링리스트를

확인하세요. 빠르게 변하고 있습니다.-------------------

git clone --filter git 2.19부터 이제 GitHub에서 작동합니다 (2020-09-18 테스트, git 2.25.1).

이 옵션은 원격 프로토콜에 대한 업데이트와 함께 추가되었으며 실제로 서버에서 개체가 다운로드되는 것을 방지합니다.

d1

이 저장소에 필요한 개체 만 복제하려면

https://github.com/cirosantilli/test-git-partial-clone

할 수 있습니다.

git clone \
  --depth 1 \
    --filter=blob:none \
      --no-checkout \
        https://github.com/cirosantilli/test-git-partial-clone \
        ;
        cd test-git-partial-clone
        git checkout master -- d1
        

자세한 내용은

Git : Git 저장소의 하위 디렉터리 만 복제하는 방법은 무엇입니까?

-------------------
편집에서 지적했듯이 두 개의 개별 분기를 사용하여 두 개의 개별 디렉토리를 저장할 수 있습니다. 이렇게하면 둘 다 동일한 저장소에 유지되지만 두 디렉토리 트리에 걸쳐 커밋을 가질 수는 없습니다. 다른 하나를 변경해야하는 변경 사항이있는 경우 두 개의 개별 커밋으로 수행해야하며 두 디렉터리의 체크 아웃 쌍이 동기화되지 않을 수 있습니다.디렉토리 쌍을 하나의 단위로 취급하려면 'wordpress / wp-content'를 저장소의 루트로 사용하고 최상위 수준에서 .gitignore 파일을 사용하여 관심있는 두 개의 하위 디렉토리를 제외한 모든 것을 무시할 수 있습니다. 이것은 아마도이 시점에서 가장 합리적인 해결책 일 것입니다.스파 스 체크 아웃은 현재 2 년 동안오고있는 것으로 알려져 있지만 여전히 git 개발 리포지토리에 표시되지 않으며 필요한 변경 사항이 거기에 도달 할 것이라는 표시도 없습니다. 나는 그들을 믿지 않을 것입니다.-------------------
전체 저장소는 Subversion의 무수한 .svn 디렉토리 대신 프로젝트의 루트에있는 단일 .git 폴더에서 처리되기 때문에 저장소의 단일 디렉토리를 체크 아웃 할 수 없습니다. 단일 저장소에서 플러그인 작업의 문제는 예를 들어

mytheme에

커밋하면

myplugin

의 개정 번호가 증가 하므로 subversion에서도 별도의 저장소를 사용하는 것이 좋습니다.하위 프로젝트의 하위 버전 패러다임은

svn : externals

로 git의

하위 모듈

로 다소 변환됩니다 (하지만 이전에 svn : externals를 사용한 경우에는 정확히 그렇지 않습니다).-------------------

여기에 영감이 있습니다. 그냥 사용 shell regex또는 git regex.

git checkout commit_id */*.bat  # *.bat in 1-depth subdir exclude current dir, shell regex  
git checkout commit_id '*.bat'  # *.bat in all subdir include current dir, git regex

따옴표를 사용하여 쉘 정규식 해석을 이스케이프하고 와일드 카드를 git에 전달하십시오.

첫 번째는 재귀 적이 지 않고 1 심도의 파일 만 있습니다

subdir

. 그러나 두 번째는 재귀 적입니다.

귀하의 상황은 다음과 같이 충분할 수 있습니다.

git checkout master */*/wp-content/*/*
git checkout master '*/wp-content/*'

필요에 따라 라인을 해킹하십시오.-------------------
커밋되지 않은 변경 사항은 특정 파일 또는 디렉토리에만 되돌릴 수 있습니다.

git checkout [some_dir|file.txt]



출처
https://stackoverflow.com/questions/180052

댓글
공지사항
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31