2012-11-30 5 views
5

웹 사이트에서 계속 작업 중이므로 번 개발 모드 (코드에 localhost를 가리키는 모든 URL이 있으며 데이터베이스의 이름은 "project", 사용자 "root", 빈 암호 등)로 전환됩니다. 생산 모드 (모든 것이 내 호스팅에서 작동하도록 설정되어 있음, 실제 비밀번호, 실제 URL 등) 및 방금 Git을 사용하기 시작했습니다.Git 분기는 어디에 저장되어 있습니까?

이제 코드를 내 호스팅에 업로드 할 준비가 된 지점을 만들고 싶습니다. 따라서 웹 사이트를 업데이트 할 때마다 복사본을 만들고 수동으로 모든 것을 변경할 필요가 없습니다. 따라서 코드를 변경하고 master 분기에서 커밋하면 다른 요소를 변경하지 않고 코드를 업로드 할 때 코드에 반영됩니다.

는 그래서는 다음과 같습니다

Master -> ReadyForUpload 

힘내를 사용하는 경우 그래서 제 질문은, 그 안에있는 모든 파일과 디렉토리와 같은 물리적 스토리지에 저장된 각 지점이있다? 분기로 디렉토리로 내보낼 수 있습니까?

나는 Windows 용으로 Git extensions을 사용하고 있습니다.

답변

6

일부 다른 버전 제어 시스템 (예 : Subversion)은 분기를 하위 디렉토리로 저장합니다. git에는 하나의 작업 영역이 있으며 그 안에서 작업하는 지점을 변경합니다.

예 :

git branch ReadyForUpload 
git checkout ReadyForUpload 

변경 사항은 없지만 이제 ReadyForUpload 분기에서 작업하고 있습니다. 당신은 다음 몇 가지 변경을하고 커밋하고 당신이

git checkout Master 

당신이 다시 masterbranch에있을 것 말고 ReadyForUpload의 변화가 없어 경우

(즉, 그냥 멀리 저장됩니다) 물론, 두 가지 브랜치를 동시에 사용할 수있는 경우, 저장소를 다른 디렉토리에 복제하고 다른 브랜치를 체크 아웃 할 수 있습니다. git pull 또는 git push를 사용하여 해당 위치를 동기화하십시오.

+0

아, 그래서 예를 들어, 내 사이트에 업데이트를 확인하고 싶었 경우 'ReadyForUpload' 브랜치를 다른 디렉토리에 복제하고 그것을 내 호스팅에 업로드 한 다음 내가 만든 임시 디렉토리를 삭제해야합니까? – federicot

+0

네, 그렇게 할 수 있습니다. – MortenSickel

+0

답변 해 주셔서 감사합니다! – federicot

3

은 각각 파일이있는 디렉토리와 같은 물리적 저장소에 저장됩니다.

그 대답은 '아니오'입니다.

분기를 디렉토리로 내보낼 수 있습니까?

예. 내보내기를 수행하는 데는 여러 가지 방법이 있습니다. 그러나 해당 지점에 대해 작은 수정/조사를 수행하려는 경우 종종 혼란스러운 생산 문제가 개발과 함께 (마스터 지점에서) 나타나기 때문에 해당 지점에서 작업하고 싶습니다.당신의 중앙 원산지가 합의하면 나는 당신이 예를 들어 기원

에서 또 다른 클론을 당신이 그럼 당신은 생산을해야 WD는

git clone git://github.com/my_org/my_proj.git 

으로 복제 개발이 아마 것 git://github.com/my_org/my_proj.git

되는 제안

git clone git://github.com/my_org/my_proj.git my_proj_production 
cd my_proj_production 
git checkout -b release_branch 
git push origin release_branch 

my_proj_production 생산 과정을 반영하여 URL, 비밀번호 등을 수정해야합니다. ituation. 다음 매번 당신은 당신이 my_proj 디렉토리 취하여야 할 생산 (release_branch)에 대한 개발 (master)에서 사물을 병합하여야한다 git pushmy_proj_production 디렉토리에 당신이 첫 번째 줄은 원격 REPO 변경 사항을 얻을 확인합니다

git remote update 
git merge origin/master 

을하여야한다 .git/objects에서 작은 파일로 해당 지역의 HDD (에, 두 번째 명령은 변경 사항 등, 당신의 release_branch (하고 URL, 암호로 병합 있습니다) 당신의 release_branch에 reintrduced되지 않습니다 보장합니다.

경우 의견을주십시오 너는 (아직) 중앙 저장소가 없다. 나는 그 상황을 반영하기 위해 답을 적용 할 것이다.

+2

지점은 실제로/어디에 저장됩니까? –

+0

브랜치는 .git 하위 디렉토리에 diff로 저장됩니다. 즉, git (더 많거나 적음)는 다른 알려진 지점에서 브랜치를 다시 만드는 데 필요한 정보 만 저장합니다. 나는. 새로운 브랜치 (방금 이전 브랜치와 동일 함)를 방금 생성했다면, 새로운 브랜치가 존재한다는 것과 브랜치가 분기 된 점을 저장한다는 것입니다. – MortenSickel

0

힘내 초보자는 git flow으로 시작하는 것이 좋습니다. 그것은 당신에게 읽어 git

의 복잡성에 들어가기없이 master 지점과 develop 분기를 유지하는 좋은 워크 플로우를 제공합니다 그것에 대해 더 here

+0

git flow는 git에 익숙하지 않은 사람에게는 다소 협박적입니다! 나는 "gitbox"와 같은 GUI로 작업하는 것을 선호한다 - 이것은 git의 복잡성을 숨긴다 (그러나 여전히 사용 가능하다). 그리고 당신에게 pull과 push 버튼을 준다. 자식의 기본을 배우는 좋은 방법입니다. – Kokodoko

관련 문제