[Git] git repository 하위의 특정 경로만 clone & push (2022-06-16수정 git 2.25 ver 이후)

DeadKim·2022년 4월 15일
0

Git

목록 보기
1/2
post-thumbnail

git을 사용하면서 하나의 repository에 여러 하위 폴더들이 각각 업무에 맞게 사용하는것들이 있다. 그래서 자신의 맞는 업무의 경로(폴더)만 가져오고 push까지 하는 방법을 쓴다.

처음자신의 Local Repository로 가져오기

이 방법은 이미 clone한 프로젝트의 특정 경로 또는 파일만 가져오는게 아니라 처음부터 특정경로를 가져오는 방법이다.

1. git 초기화

git init
  • 아직 초기상태의 로컬 디렉토리인 .git이 생성 된다.
  • 폴더가 숨긴폴더로 보이지 않을 수 있다.
    이때는 윈도우에서는 숨김폴더 보기를 하면 보이고 리눅스에서는 ls -a 명령어를 통해 확인 할수 있다.

2. remote repository 연결

git remote add origin <"remote할 저장소.git">



3. ★ git sparse cheakout 활성

git config core.sparsecheckout true
  • sparse cheakout은 repository에의 특정 디렉토리 또는 파일만 보이도록 체크아웃하는 기능입니다.

4. 하위 경로 clone 위한 경로 설정

echo "해당경로" > .git/info/sparse-checkout
  • 해당경로를 넣는부분에 ""(큰따옴표)를 넣으면 pull이 안된다는 말도 있지만 제가 했을 때는 pull이 가능했습니다.
  • 💡해당경로를 가져올때 주의 점

    만약 vscode의 git의 원하는 경로를 가져오겠다 하면 주소창에 https://github.com/microsoft/vscode/tree/main/scripts 있는 뒷부분 경로를 넣어주어야 하는데(/vscode/tree/main/scripts) 이부분에 tree/main/ 부분이 포함되어 있으므로 그대로 하면 에러가 당연하게 난다.

    그러므로 "vscode/scrips"식으로 넣어 주면 된다.

5. pull 받기

git pull origin master
  • 위 부터 차례로 pull 하면 해당 경로만 가져오는 것을 확인 할 수 있다.
  • 위 방법은 master로 했는데 branch로 설정을 하려면 https://eventhorizon.tistory.com/20 이 블로그를 참고 하시면 됩니다.



git push

sparse checkout을 통해 clone시에는 push가 정상 대로 안된다는 글이 있었는데 본인에 경우에는 기존 push 하는 방법과 마찬 가지로 했을 시 push가 가능했다.
만약 안된다면 https://bitlog.tistory.com/132 👈이 블로그를 참조!

1. staging 영역 추가

git add .
# or
git add -A
  • 현재 디렉토리에 있는 업데이트 된 파일을 전 부 스테징 영역으로 추가(특정 파일만도 가능)

git status
  • 현재 git의 활동 상황을 확인 할 수 있다.

2. commit

git commit -m "code update"
  • -m은 메세지 약자로 따옴표 안에 해당 push 내용을 넣어 주면 된다.

3. repository push

원격 저장소가 연결이 안되어 있다면 아래와 같이 remote를 해줘야 한다. 되어 있다면 pass!

git remote add origin <git 주소>

Push

git push origin master
  • remote 했던 origin(다른 이름으로 했어도 무방)에 master 브런치에 push.

  • 여러명에서 협업 중이고 충돌에 대비해 브런치를 쓰는게 일반적이고 보통이지만 그럴 일이 없다면 보통 master를 사용

  • 브런치 사용시 push

    # 브런치 변경(이전에 브런치를 생성했다는 기준!)
    git branch -M <브런치 이름>
    
    # push
    git push origin <브런치 이름>




git 2.25 이후 버전에서는 방법이 바뀜

2022.06.15 추가

2.25 이후 버전을 쓰신다면 위에 방법이 안될 수도 있다.

참고 : https://bitlog.tistory.com/131#sparse-checkout%20(%20git%202.25%20~%20)

자신의 git version 확인

git --version

1. pull 받을 폴더 이동 후 init

  • 처음은 위의 방법과 다르진 않다.

    cd <remote할 디렉토리>
    git init
    

2. sparse-chckout 세팅

  • 위의 방법과 다른 것은 config core.sparsecheckout true 부분이다.
    git sparse-checkout init
    git sparse-checkout set "/<github pull 받을 부분만의 경로(다랙터리)>/"
    git sparse-checkout list # git sparse-checkout list 시에 위의 set 해준 경로가 보인다.
    # /<경로(다랙터리)>/
    

3. remote repository 연결

git remote add origin <"remote할 저장소.git">

4. pull

git pull origin master






Todo

  • 프로젝트 진행 중 소스들을 수정 중에 같은 파일 변경 사항을 clone 받아야 할 경우
    git stash를 사용하는데 추후 다른 게시물로 올리겠음.
  • 이 외 git 명령어 등을 올려야 겠음.




참조 : https://velog.io/@byjihye/git-clone
참조 : https://eventhorizon.tistory.com/20
참조 : https://bitlog.tistory.com/132

profile
내가 보려고 만든 velog

0개의 댓글