[git] 이동할 때 컴퓨터 간 git 저장소 동기화?

제가 데스크톱 PC와 노트북을 가지고 있고 때로는 데스크톱에서 작업하고 때로는 노트북에서 작업한다고 가정 해 보겠습니다.

git 저장소를 앞뒤로 이동하는 가장 쉬운 방법은 무엇입니까?

git 리포지토리가 동일하기를 원하므로 다른 컴퓨터에서하던 작업을 계속할 수 있습니다.

두 컴퓨터에 동일한 분기와 태그가 있는지 확인하고 싶습니다.

고마워요 요한

참고 : SubVersion으로이 작업을 수행하는 방법을 알고 있지만 이것이 git에서 어떻게 작동하는지 궁금합니다. 더 쉬우면 세 번째 PC를 두 개의 PC가 동기화 할 수있는 클래식 서버로 사용할 수 있습니다.

참고 : 두 컴퓨터 모두 Linux를 실행합니다.


업데이트 :

이제 서버의 베어 git 리포지토리와 KingCrunch의 push 명령 구문을 사용하여 XANI :의 아이디어를 시도해 보겠습니다. 이 예에는 두 개의 클라이언트와 하나의 서버가 있습니다.

그럼 먼저 서버 부분을 만들어 보겠습니다.

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

그런 다음 다른 컴퓨터 중 하나에서 복제로 저장소 사본을 얻으려고합니다.

git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.

그런 다음 해당 저장소로 이동하여 파일을 추가하십시오.

cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master

이제 서버가 testfile1.txt로 업데이트됩니다.

어쨌든 다른 컴퓨터에서이 파일을 가져올 수 있는지 봅시다.

mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull

이제 우리는 테스트 파일을 볼 수 있습니다.

이 시점에서 더 많은 콘텐츠로 편집하고 서버를 다시 업데이트 할 수 있습니다.

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

그런 다음 첫 번째 클라이언트로 돌아가서 업데이트 된 파일을보기 위해 git pull을 수행합니다. 이제 두 컴퓨터 사이를 오가며 원하는 경우 세 번째 컴퓨터를 추가 할 수 있습니다.



답변

여러 가지 접근 방식이 있다고 생각합니다. 어떻게 처리하는지 설명하겠습니다.

여러 git-repositories를 보유하는 24/7 서버로 하나의 넷북이 있습니다. 거기에서 나는 SSH를 통해 변경 사항을 푸시하고 가져옵니다. 외부에서 액세스하려면 dyndns.org를 사용합니다. 특히 일부 리포지토리에 액세스해야하는 시스템이 두 개 이상이기 때문에 제대로 작동합니다.

업데이트 : 약간의 예. 내 넷북이 “넷북”이라고 가정 해 보겠습니다. 거기에 저장소를 만듭니다.

$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

내 데스크탑에서 나는 그것의 복제본을 생성하는 것보다 낫습니다. 어쩌면 몇 개의 파일을 추가 할 것입니다

$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

내 노트북에서도 동일한 작업을 수행하지만 LAN 외부에서 원격 액세스하려면 외부 주소도 추가합니다.

$ git clone username@netbook.local:/home/username/git/newThing
$ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing
$ git pull externalName master

git (/ git 워크 플로)이 작동하는 방식입니다. 원하는만큼 원격 저장소를 추가 할 수 있습니다. 둘 이상의 동일한 “물리적”저장소를 참조하는 경우에는 중요하지 않습니다. 자신의 로컬 “서버”가 필요하지 않으며 ssh 액세스 권한이있는 모든 공용 서버를 사용할 수 있습니다. 물론 외부에서 액세스 할 필요가 없다면 공용 서버가 전혀 필요하지 않습니다. 베어 리포지토리는 데스크톱 시스템에있을 수도 있으며 로컬 파일 시스템 내에 작업 복사본 리포지토리를 만들 수 있습니다.

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

이것이 내가 이것을 처리하는 방법이고 나는 나를 위해 꽤 잘 작동합니다 (완벽하지 않은 경우;))

읽을 거리 : http://progit.org/
Really good book.-


답변

한 상자에서 다른 상자로 리포지토리를 복제 한 다음 git fetch다른 상자에서 할 수 있도록 두 개의 리포지토리를 설정합니다 .

리모트 origin의 이름을에서 다른 상자의 이름으로 바꾸면 리모트 브랜치를 더 쉽게 읽을 수 있습니다.

사용 git fetch하지 않고 사용 git push하면 베어가 아닌 리포지토리에서 잘 작동합니다.

[user@foo repo]$ git fetch -v bar

[user@bar repo]$ git fetch -v foo


답변

가장 쉬운 방법 : 중앙 저장소 생성 --bare(체크 아웃 된 파일 없음, .git 항목 만) 또는 github

“분산”은 다음과 같이 표시됩니다.

설정:

  1. 노트북 : git remote add desktop ssh://user@desktop/home/user/repo/path
  2. 데스크탑 : git remote add laptop ssh://user@laptop/home/user/repo/path

동기화 :

git pull laptop/desktop (push는 git이 원격 저장소로 푸시 할 때 체크 아웃 된 파일을 수정하지 않기 때문에 베어가 아닌 저장소에서 잘 작동하지 않습니다)

또는 pendrive에서 repo를 만드십시오.)


답변

단순히 사용하는 것은 rsync어떻습니까?


답변

GitHub, BitBucket 또는 GitLab에 원격 저장소를 만들 수 없습니까? (후자의 두 회사는 무제한 무료 개인 저장소를 제공합니다). 직장에서 하루를 마쳤 으면을 사용 git push하여 변경 사항을 원격 저장소에 푸시하기 만하면됩니다 . 집에 도착하면 git pull변경 사항을 직장에서 가정용 컴퓨터로 가져 오십시오 . 집에서 끝나면 마찬가지로, 수행 git push및 직장에 복귀 할 때 다음을 수행합니다 git pull.


답변

git 저장소를 앞뒤로 [2 대의 컴퓨터간에] 이동하는 가장 쉬운 방법은 무엇입니까?

시나리오 1 : 저는 PC1에서만 독점적으로 작업 (코드 및 파일 편집)하지만 PC2에서도 파일의 중복 사본 (예 : 전체 코드베이스 빌드)을 갖고 싶습니다.

25MB 미만의 데이터를 사용하면서 Wi-Fi 핫스팟을 통해 1 분 이내에 PC1에서 PC2로 동기화 :

나는 가지고 다니는 약한 컴퓨터 (노트북)로 작업하지만 다른 곳에있는 더 강력한 컴퓨터를 사용합니다. 나는 항상 git을 사용하여 스크립트를 사용하여 랩톱에서 다른 컴퓨터로 동기화합니다. 이 명령을 입력하여 실행합니다.

sync_git_repo_from_pc1_to_pc2

그게 다야! 휴대 전화 Wi-Fi 핫스팟을 사용하고 수십 기가 바이트 크기 저장소에서 작업하는 경우에도 일반적으로 약 25MB의 데이터와 약 30 초에서 1 분이 걸립니다 . 저는 PC2에 ssh’ed되어 있으므로 git log -1PC2에서 동기화가 작동하는지 확인한 다음 빌드 명령을 실행합니다. 완벽하게 작동합니다. 한번 시도해보세요. 자세한 내용은 아래 링크를 참조하십시오.

참고 : PC2의 복제 된 저장소는 이름이 .git 브랜치 somename_SYNC입니다. 항상 “SYNC 분기”를 사용하는 대신 동일한 분기 이름을 갖도록하려면 스크립트를 적절하게 수정하십시오. 원하는 경우 아래 시나리오 2와 유사한 효과를 얻기 위해 스크립트를 수정할 수 있습니다. 그럼에도 불구하고 Scenario 2를 수동으로 수행하는 것은 어렵지 않으므로 Scenario 2를 수동으로 계속 수행하는 것이 좋습니다. 자동화 된 스크립트가 PC1에서 “수정”이 발생하고 PC1에서 “동기화”가 실행되지만 영향을 미치는 쉽고 빠른 “수정, 동기화, 빌드”워크 플로우를 허용하므로 자동화 된 스크립트가 가장 유익하고 시간을 절약하는 시나리오 1입니다. PC2 및 “빌드”는 PC2에서 발생합니다.

연결:

  1. 전체 설정 및 설치 지침 :
    SSH를 통해 Eclipse로 원격 프로젝트에서 작업
  2. Readme, 문서 및 저장소 : https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/README_git-sync_repo_from_pc1_to_pc2.md .
  3. 문제의 정확한 스크립트는 다음과 같습니다 :
    https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/sync_git_repo_from_pc1_to_pc2.sh

시나리오 2 : 여러 컴퓨터에서 작업 (코드 및 파일 편집)하고 전 세계의 모든 컴퓨터에서 동일한 코드 저장소를 편집 할 수 있기를 원합니다.

git 리포지토리가 동일하기를 원하므로 다른 컴퓨터에서하던 작업을 계속할 수 있습니다. 두 컴퓨터에 동일한 분기와 태그가 있는지 확인하고 싶습니다.

  1. https://github.com으로 이동하여 계정을 만들고 선택적으로 (권장) ssh 키를 설정합니다 .

  2. 이제 웹 인터페이스를 사용하여 새 저장소를 만듭니다.

    1. 2020 년 또는 그 이전에 GitHub는 무료 비공개 저장소 도 허용 하므로 비공개 비공개 소스 프로젝트에서도 잘 작동합니다.
  3. 새 저장소 ssh 또는 https 복제 URL을 찾으십시오. 예 : git@github.com : ElectricRCAircraftGuy / eRCaGuy_dotfiles.git 또는 https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git .

  4. 프로젝트를 PC1에 복제합니다. 전의:

     git@github.com:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
     cd eRCaGuy_dotfiles
    
  5. 그리고 PC2에서 똑같은 복제 명령을 반복하십시오.

  6. 이제 PC1에서 변경하고 커밋 한 다음 github의 “원격”저장소로 푸시합니다.

     # edit some files, then do the following
     git add -A  # stage ("add") all changed files to be committed 
     git commit  # commit them
     git push    # push them to your remote github repo
    
  7. 이제 PC2에서 변경 사항을 가져옵니다.

     # pull all changes from github (which includes the changes
     # you just pushed from PC1) to PC2
     git pull
    
  8. 이제 PC2에서 파일을 편집하고 커밋하고 위의 2 단계에 표시된 명령을 사용하여 github로 푸시 할 수 있으며, 그런 다음 PC1에서 실행 git pull하여 PC2에서 해당 변경 사항을 가져올 수 있습니다 .

  9. 필요에 따라이 프로세스를 계속 수행하고 PC1 또는 PC2에서 작업하고 파일을 쉽게 공유하고 두 컴퓨터간에 작업을 분할합니다. 모든 변경 사항 을 확인하고 (풀링) 다른 PC에서 계속 작업하려면 먼저 한 대의 PC에서 모든 변경 사항을 커밋하고 github푸시 해야합니다 .

  10. 두 PC간에 파일이 약간 동기화되지 않는 상황이 발생하면 추가 분기를 사용하고 병합을 수행하고 충돌을 해결하는 등의 작업을 수행해야 할 수 있습니다. 모두 동일한 저장소에서 작업하는 소규모 팀과 함께. Google은 당신의 친구입니다. Git은 매우 매우 강력하며 거의 모든 것에 대한 명령, 명령 집합 또는 워크 플로가 있습니다.


답변

글쎄, 당신은 잠재적으로 설정할 수있는 서버로 푸시 앤 풀 (Git를 통해) 할 수있다. 또는 GitHub에 저장소를 저장하고이를 동기화 브리지로 사용할 수 있습니다.