자체 GIT 서버를 설정하는 방법? 베어 / 비 베어 리포지토리 란 무엇입니까?


10

간단한 GIT 서버를 설정하려고합니다. 가상 PC (Virtual Box)에 Ubuntu를 설치했습니다. GIT를 설치하고 repo 등을 만들었습니다.

git init 
git add .
git commit "..."

그런 다음 Windows에서 다음과 같이했습니다 (cygwin에서).

git clone jiewmeng@192.168.0.3:proj1

그런 다음 변경을 시도했습니다.

자식 커밋 -am "..."

하지만 같은 것을 얻었다

이미지 참조

GIT을 잘못 설정했다고 가정합니까? 베어 / 비 베어 리포지토리와 관련이있는 내용을 읽습니까? 항상 맨손으로 사용해야합니까? 나는 시도했다

git checkout --bare jiewmeng@192.168.0.3:proj1 

하지만 가지고 proj1.git거기에, 이상한 파일 / 내 (HEAD 등) 같은 폴더. GIT를 설정하는 올바른 방법은 무엇입니까?

또한 누군가가 베어 / 비 베어 리포지를 설명 할 수 있습니다 .GitHub와 함께 잃어 버렸습니다.

업데이트 날짜 : 2011 년 4 월 28 일 오후 6시 UTC + 8

http://www.youtube.com/watch?v=1gNFrPNF9-Y를 따라 시도했지만 우분투 (서버)에서

git init --bare

그런 다음 Windows (Client / Cygwin)에서

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master jiewmeng@192.168.0.3:proj2
git push origin master

오류가없는 것 같습니다. 그러나 우분투에서는 파일이 어디에 있는지 알 수 없습니다. 나는 branches/거기에 1 번째를 보았 습니까?

답변:


9

"일반"저장소는 실제 저장소와 작업 사본을 포함하는 디렉토리입니다. 실제 저장소는 이름이있는 숨겨진 서브 디렉토리에 .git있습니다. 작업 사본은 작업하는 파일 및 디렉토리입니다.

"베어"저장소는 .git작업 사본이없는 디렉토리 의 내용 일뿐 입니다.

Bare 저장소에서는 작업 할 수 없습니다. 먼저 Bare 저장소를 일반 저장소로 복제 한 다음 복제본에서 작업해야합니다.

첫 번째 시도에서 "일반"저장소를 작성했습니다. 그런 다음 복제했습니다. 그런 다음 일반 저장소로 푸시하려고했습니다. 그런 다음 경고가 나타납니다. 일반 리포지토리로 푸시해서는 안됩니다. 힘내시면 경고합니다. 베어 저장소로만 푸시해야합니다.

두 번째 시도에서 "베어"저장소를 작성했습니다. 그런 다음 "일반"저장소를 작성했습니다. 그런 다음 일반 저장소에서 기본 저장소로 푸시했습니다. 이는 예상되는 워크 플로 중 하나입니다. 따라서 오류나 경고가 발생하지 않습니다.

Windows 시스템과 우분투 시스템에서 프로젝트를 작업하려면 두 가지 옵션이 있습니다.

  1. 베어 리포지토리를 생성합니다 (어디 상관 없음). 그런 다음 해당 리포지토리에서 하나는 Windows 시스템과 다른 하나는 우분투 시스템에서 복제합니다. 이제 클론에서 베어 리포지토리로 푸시하고 베어 리포지토리에서 클론으로 가져옵니다. 일반 리포지토리로 푸시하지 마십시오.

  2. Windows 시스템과 우분투 시스템에 각각 하나씩 두 개의 일반 리포지토리를 만듭니다. 이제 우분투에서 작업 할 때 Windows 컴퓨터에서 끌어 올 수 있으며 그 반대도 마찬가지입니다. 서로 밀지 마십시오.

결론 : 베어 리포지토리에만 푸시하십시오. 다른 모든 경우에는 A에서 B로 밀고 싶을 때 대신 B로 이동하여 A에서 당기십시오.

git을 처음 접한 것 같습니다. 다음과 같은 매우 훌륭한 책 중 하나 또는 둘 다를 읽으십시오 : Git Book , Pro Git .


1
흠 메인 학습 포인트는 " 맨손으로 저장소로 밀어 넣는 것 같습니다 . 다른 모든 경우에 A에서 B로 밀고 싶다고 생각할 때 대신 B로 가서 A에서 뽑으십시오 ". 그렇다면 GitHub는 어떻게합니까? 나는 그것을 오른쪽으로 밀어 넣습니다 (nv는 이미 awile에 사용했습니다 ...)?
Jiew Meng

@JiewMeng : GitHub는 베어 리포지토리를 사용합니다. 웹 사이트는 Git에서 직접 데이터를 읽고 workdir이 필요하지 않습니다.
user1686

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.