USB와git를 사용하여 여러 컴퓨터에서 작업 공유

주: 실험실 컴퓨터와 자신의 컴퓨터에서 자주 전환해야 하기 때문에 작업 코드는 같은 버전의 제어하에 있어야 한다.이러한 요구 사항을 충족하려면 GitHub와 같은 온라인 무료 Git 관리 서버를 사용할 수 있습니다.
하지만 무료 위탁 관리 프로젝트는 또 시작이 필요하다.만약 이동할 수 있는 Git 서버가 있다면 문제는 해결될 것이다. 본고는 Git 서버 버전 라이브러리를 USB에 넣는 해결 방안이다. 물론 USB를 잃어버리지 않도록 보증해야 한다.(다른 사람의 블로그를 처음 번역하는데 번역이 정확하지 않은 점은 지적해 주세요.)
다음은 원문 번역입니다. 원문은 여기에서 찾을 수 있습니다.http://timwise.blogspot.com/2008/05/sharing-work-between-computers-with-usb.html
.
===
나는 인터넷에서 이 목적(U디스크와git를 사용하여 여러 컴퓨터에서 공유하는 작업)에 적합한 해결 방안을 찾지 못했기 때문에 다음과 같은 방안을 만들었다.
이 방법은 원격의svn 서버와 동시에 사용할 수 있으며, 없으면 적용될 수 있습니다.
우선, 첫 번째 컴퓨터에서git-svnclone(또는 git 라이브러리를 복제하거나 작업 디렉터리를 새로 만들기)을 사용하여 원격 코드 라이브러리에서 작업의 복사본을 로컬로 가져옵니다.
mkdir ~/project.git
cd ~/project.git
git-svn clone svn://project-server/trunk
git repack #for good measure

그리고 USB를 꽂습니다. 우리는 USB가 vfat/fat32/fat16 형식이고 마운트 경로가/media/flash라고 가정합니다.USB에 빈 버전 라이브러리를 만들고 bare 라이브러리를 만듭니다. 이 라이브러리에 작업 복사본을 저장할 필요가 없기 때문입니다.
역주:
즉, 서버 버전 라이브러리입니다. 작업 디렉터리가 없습니다.)
mkdir /media/flash/project.git
git --bare init /media/flash/project.git

그리고 USB의 git 버전 라이브러리를 원격 지점으로 로컬 git 버전 라이브러리에 추가합니다.원격판 지점의 이름으로 "flash"를 사용합니다. 당신이 좋아하는 이름은 무엇이든지 사용할 수 있습니다.
git remote add flash /media/flash/project.git

여기까지. 만약 당신이 즉시push를 한다면 오류가 발생할 수 있습니다.fat 파일 시스템 형식은 파일에 실행 가능한 태그를 지원하지 않기 때문에 모든 훅은 자동으로 활성화됩니다.나는 장래에 이 훅들을 사용하지 않으려고 하기 때문에, 나는 모든 훅을 삭제한다. 이렇게 하면 오류가 발생할 수 있지만, 나에게는 오류가 없다.그래서 다음 명령을 사용하여 모든 훅을 삭제합니다.
rm /media/flash/project.git/hooks/*

그리고 push 현재 작업 디렉터리의 내용을 USB에 저장합니다.
git push flash

이 명령은 "git-svn dcommit"명령을 사용하지 않았더라도 원격의svn 서버로 제출한 모든 작업을 복사합니다.제출 지점을 지정할 수도 있습니다.
git push flash mybranch

지금, 당신이 다른 컴퓨터로 전환하여 일을 하고, 위의 USB를 삽입한다면, 우리는 여기에서 경로와 장치가 위의 컴퓨터와 같다고 가정합니다.svn에서 버전 라이브러리를 복제하기 위해 위와 완전히 같은 작업을 합니다.
mkdir ~/project.git
cd ~/project.git
git-svn clone svn://project-server/trunk
git repack #for good measure

그리고 USB의 라이브러리를 원격 라이브러리로 추가하고 pull에서 모든 변경 사항을 내려줍니다.
git remote add flash /media/flash/project.git
git pull flash master
git pull flash mybranch #if you like

임의의 컴퓨터에git로 변경 사항을 제출하거나svn에서pull의 최신 버전을 제출하면 다음 명령을 사용하여 U디스크의 버전 라이브러리를 업데이트할 수 있습니다.
git push flash

그리고 너는 다른 컴퓨터에서 USB에서 pull의 최신 버전을 사용할 수 있다.
git pull flash master

만약 push가svn에 도착하기 전에 U판에 push를 바꾸지 않았다면 일은 매우 간단했을 것이다.만약 당신이 U 디스크에 push를 변경한 후에 SVN 서버에 push를 추가한다면, 당신은 가장 많은 일을 해야 할 것이다.이것은 "gitsvn dcommit"을 실행하여push의 최신git 제출 로그svn 서버를 실행할 때 로컬 제출 로그를 삭제하고 서버에서 이 로그를 가져오기 때문입니다.이것은 git가 로컬 변경을 알지 못한다는 것을 의미한다. 로컬 변경은 U 디스크와 같고 제출 정보와 SHA1 값이 다르기 때문이다.하지만 USB에 push를 시도하면 "! [rejected] master -> master (non-fast forward)"를 알립니다. 오래된 버전의 제출 정보가 아직 거기에 있기 때문입니다.이 문제를 해결하기 위해서는 USB에 일치하는 변경 사항을 버려야 한다.아래와 같이 git reset 명령을 사용하십시오. 그 중에서 HEAD~1은 당신이 버려야 할 제출 개수입니다. (예를 들어 HEAD~3는 USB에 가장 가까운 제출 3개를 버려야 합니다.)
cd /media/flash/project.git
git --bare log #to see how many changes don't have svn information
git --bare reset HEAD~1

그리고 당신은 정상적으로 제출할 수 있습니다.
cd ~/project.git
git push flash

좋은 웹페이지 즐겨찾기