2013-08-19 2 views
5

한 폴더에서 작동하는 개발자와 다른 폴더에서 작동하는 개발자가 있습니다.힘내는 하나의 디렉토리 만 가져옵니다.

cd /myproject 
git pull myfolder 

만 MyFolder에이

업데이트됩니다 그것이 가능하다는 것을 기대 : 나는 같은 명령을 찾고 있어요 특정 폴더 와 생산을 업데이 트하려는 ? 확인

, 내가 바꿔거야 ... 내가 가진 하나 개의 프로젝트, 하나 개의 지점 및 두 개의 개발자와 프로젝트의 두 폴더. 각 개발자는 하나의 폴더에서 작동합니다. 둘 다 변경하고 지점으로 밀어 넣습니다. 나는 내 로컬 컴퓨터

기본/심플로 하나 개의 폴더의 변경을 가져 할

은 그렇지?

+0

귀하의 질문은 매우 명확하지 않다 . 'dev1','dev2','production' 폴더를 가지고 있다고합시다. 다른 지점에서'production'의 모든 변경 사항을 가져 오는 방법을 묻는 중이거나'production '내용을 dev 폴더 중 하나에 설정하는 방법을 묻는 중입니까? 어느 쪽이든, 당신이 접근하는 방식은 도구에 대한 당신의 작업처럼 들립니다. – jszakmeister

+0

좋아요, 다시 말하면 ... 프로젝트에 하나의 프로젝트, 두 개의 개발자와 두 개의 폴더가 있습니다. 각 개발자는 하나의 폴더에서 작동합니다. 둘 다 변경하고 지점으로 밀어 넣습니다. 로컬 컴퓨터에 하나의 폴더 만 변경하려고합니다. – fredy

+0

Git을 사용하여 작업 복사본을 관리하고 있습니까? 또는 저장소에있는 폴더의 내용을 컴퓨터로 가져 오려고하십니까? PherricOxide에 대한 귀하의 의견으로 판단하면 후자와 같습니다. – jszakmeister

답변

1

일종의 생산 지사가 있습니까? 당신이 체크 아웃하고 그냥 폴더를 재회 할 때 변경 기록을 잃고 있기 때문에, dev에 생산 지점 ...

# Get all the changes from the dev branch 
git checkout dev 
git pull origin dev 

# Checkout the production branch 
git checkout production 

# Checkout the dev version of the folder you want 
git checkout dev myfolder 

# Commit all the changes that are now showing up. 

이 일을 할 수있는 끔찍한 방법의 일종이다 가정.

+0

고맙지 만 어쩌면 나는 분명하지 않았을 것입니다 ... 한 폴더의 업데이트 만 받고 싶습니다. 나는 어떤 계산도하고 싶지 않다. 두 개발자가 같은 지점에 커밋을했지만 한 폴더 만 변경하려고합니다. – fredy

+0

세 번째 체크 아웃 명령이 잘못되었습니다. 'git checkout dev-myfolder' ('dev'와'myfolder'가 바뀌 었습니다) 여야합니다. – jszakmeister

4

당신이 정말로 요구하는지하여 원격으로 자신의 작업 트리 (또는 로컬 저장소의 복제를)하지 않고, 자식 저장소에서 파일을 잡아 것입니다 가정, 당신이 할 수 있습니다 :

git archive --format=tgz --remote=<url-to-repo> master -- myfolder | tar zxvf - 

<url-to-repo>에 저장되지만 myfolder 아래의 내용 만 포함하는 저장소의 master 브랜치의 gzipped 타르볼을 만드는 것이라고합니다. 배관을 tar 통해 수행하면 데이터가 보관 취소되고 현재 작업 디렉토리에 저장됩니다.

실제로 작업중인 트리를 관리하고 다른 두 개발자 인 과 함께 작업하려는 경우 실제로 수행해야하는 작업은 도구에 위배됩니다. 그러나 누군가가 좋은 워크 플로 제안을하기 위해 수행하려는 작업에 대해 훨씬 더 정교해야합니다.

업데이트 :

관리되는 작업 트리에서 한 폴더의 변화를 가져 오려는 것처럼 그래서 소리 않습니다. 미안하지만, 힘내는 그런 식으로 작동하지 않습니다. 내가 아래에있는 코멘트에서 말했듯이, Git은 파일 트리를 관리합니다. 그것은 하나의 개정에있을 수있는 트리의 일부를 허용하지 않으며, 다른 부분은 당신이 제안하고 같은 다른 버전에로 - 아마 당신은이 가능했던 서브 버전의 이전 사용자입니까?

당신은 당신이 원하는 유사한 효과를 얻을 수 있지만 작업 카피를 수정해야합니다. 난 당신의 개발자 중 하나를 삭제하려는 경우가 아니면 커밋을하지 않을 것입니다.

$ git fetch 
$ git checkout @{u} -- myfolder 

git fetch는 최신 원격 참조를 가져올 것 - 그것은 서버에서 최신 정보를 가져옵니다 :이 위해 할 수있는. git checkout @{u} -- myfoldermyfolder을 추적 분기에있는 것과 같이 보입니다. 것으로 표시됩니다

  • 로컬 분기에 모든 변경 사항이없는 (그리고 그 괜찮아 있도록 이 그들을 원하지 않았다), 및

  • myfolder이 두 결과가 myfolder의 내용에 이 원격 저장소에서 사용 가능한 최신으로 업데이트되었으므로 수정되었지만 현재 개정판과 같지 않은 입니다.

가 다시 정상으로 작업 사본을 얻으려면 다음을 수행하십시오 거기에서

$ git checkout -- myfolder 

을, 당신은 가능성 (원격으로 최신 지사 를 얻기 위해 평소 메커니즘에 따라 전화 git pull).

그러나 이것은 사용자가 원하는 방식이 아닙니다. 귀하의 의견에도 불구하고 "사용 사례와 관련 없음", 정말 중요합니다. 전반적인 목표를 달성하고 개발을 관리하는 데 더 나은 방법이 종종 있습니다. 그러나 에는 수행하려는 작업을 이해해야합니다. 현재로서는 이 제안하는 것은 힘내게하는 방법에 대해 정말로 반대한다.

그래서 몇 가지를 알려 드리겠습니다. 연구는 토픽 브랜치를 사용하여 트리의 각 개발자에 대해 폴더를 사용하는 대신 개발 작업을 관리하는 방법으로 을 사용합니다. 브랜치 에서 명확하고 논리적 인 변경이 가능하며, 프로덕션에 포함되도록 테스트하고 승인 할 때 병합됩니다.

시작할 수있는 좋은 장소는 here입니다. 상당량의 정보가 포함되어 있으며, 일부는 개의 여러 가지 스타일의 Git 워크 플로 링크로 연결됩니다. 끝내려는 장소는 입니다. 실제로 다른 사용자가 수행하고있는 작업을 손상시키지 않고 실제로 프로덕션에 넣은 버전을 나타내는 커밋이 있습니다. 이상적으로, 은 의미있는 방식으로 프로덕션으로 푸시 된 것을 태그링합니다.

나는 아무도 듣고 싶지 않지만 훈련은 귀하의 경우에 매우 도움이 될 수 있음을 알고 있습니다. GitHub는 free online classes 과 기타 여러 가지 리소스를 제공합니다. 경험에 비추어 볼 때, 힘내는 사람이 어떻게 작동하고 그것이 해결하는 문제를 파악하면 더 나은 워크 플로우가 완성됩니다.

+0

최신 로컬 저장소가 있습니다. 두 개발자가 각각 자신의 폴더에서 변경되었습니다. 한 폴더에서 변경된 내용 만 "잡아"싶습니다. 할 수 있습니까? – fredy

+0

최신 정보라면 변경하지 않았습니까? 너 뭐 해봤 니? 해당 정보로 질문을 업데이트해야합니다. – jszakmeister

+0

내가 PC에 모든 것을 가져 갔다고 말할 수 있습니다. 두 개의 폴더가 업데이트되었습니다. 오늘은 하나의 폴더에서 변경 사항 만 가져오고 싶습니다. 내가 할 수 있을까? – fredy

0

예, git fetch은 하나의 자식 하위 디렉토리에 쉽습니다. 원격 git-repo에 다음 프로젝트 디렉토리가 있다고 가정합니다.

project/ 
    ├── code 
    └── data 

당분간 프로젝트를 로컬 파일 시스템에 복제 해 git 저장소로 간주하십시오. 경우

$ cd project 
$ rm -rf code 

#now we try to fetch the "code" directory. 
$ git fetch 
$ git checkout HEAD code 

당신은 같은 디렉토리 구조를 중첩 한

project/ 
├── code 
│   ├── dev 
│   └── test 
└── data 

다음이 경우에 당신은 당신이 원하는 특정 디렉토리를 사용한다

$ git checkout HEAD code/dev