개발을 동기화 상태로 유지하기 위해 git-bundle을 사용하는 방법은 무엇입니까?
네트워크 연결없이 다른 컴퓨터에서 개발 트리를 동기화 상태로 유지해야합니다.
중앙 git 저장소가 있으며 일반적으로 사무실 컴퓨터에서 자체 복제본으로 작업합니다. 때때로 사무실 네트워크에 연결되지 않은 다른 컴퓨터에서 개발을해야합니다. 인터넷에 연결된 컴퓨터는 없습니다. 동기화 사이에 두 컴퓨터에서 개발을 수행 할 수 있습니다.
git-bundle에 대한 도움말 페이지를 읽었는데 최고의 도구 인 것 같지만 어떻게 좋은 워크 플로를 설정할 수 있는지 잘 모르겠습니다.
조언이나 조언을 주시겠습니까?
묶음!
git 번들을 사용한 워크 플로는 기본적으로 다른 워크 플로와 동일합니다. 이것은별로 도움이되지 않는 조언처럼 보일 수 있지만 여기에 있습니다. 일반적으로 사용하는 워크 플로를 사용하고 "push / pull"을 "여기에 번들을 플래시 드라이브에 담은 다음 당겨"로 바꾸십시오.
맨 페이지에는 실제로이 작업을 수행하기위한 꽤 좋은 연습이 있지만 이는 단방향 예제에 가깝습니다. 완전성을 위해 다음은 정보를 양방향으로 이동하는 방법을 보여주는 약간 수정 된 버전입니다.
# on hostA, the initial home of the repo
hostA$ git bundle create hostA.bundle --branches --tags
# transfer the bundle to hostB, and continue:
hostB$ git clone /path/to/hostA.bundle my-repo
# you now have a clone, complete with remote branches and tags
# just to make it a little more obvious, rename the remote:
hostB$ git remote rename origin hostA
# make some commits on hostB; time to transfer back to hostA
# use the known master branch of hostA as a basis
hostB$ git bundle create hostB.bundle ^hostA/master --branches --tags
# copy the bundle back over to hostA and continue:
hostA$ git remote add hostB /path/to/hostB.bundle
# fetch all the refs from the remote (creating remote branches like hostB/master)
hostA$ git fetch hostB
# pull from hostB's master, for example
hostA$ git pull
# make some commits on hostA; time to transfer to hostB
# again, use the known master branch as a basis
hostA$ git bundle create hostA.bundle ^hostB/master --branches --tags
# copy the bundle to hostB, **replacing** the original bundle
# update all the refs
hostB$ git fetch hostA
# and so on and so on
주목해야 할 중요한 점은 번들을 리모컨으로 추가하고 다른 리모컨과 마찬가지로 상호 작용할 수 있다는 것입니다. 해당 리모컨을 업데이트하려면 새 번들을 가져 와서 이전 번들을 대체하십시오.
또한 베이시스를 선택하는 데 약간 다른 접근 방식을 취했습니다. 매뉴얼 페이지는 태그를 사용하며 다른 호스트로 전송 된 마지막 참조로 항상 최신 상태로 유지됩니다. 다른 호스트 에서 전송 된 마지막 참조를 참조하는 원격 분기를 사용했습니다 . 약간 비효율적입니다. 한 단계 뒤쳐지기 때문에 필요한 것보다 더 많이 번들링하게 될 것입니다. 그러나 플래시 드라이브는 크고 번들은 작으며 추가 단계를 수행하고 태그에주의를 기울일 필요없이 이미 가지고있는 참조를 사용하면 많은 노력을 절약 할 수 있습니다.
The one thing that makes bundles a bit of trouble is that you can't push to them, and you can't "rebase" them. If you want the bundle based on a new basis, you have to recreate it. If you want new commits in it, you have to recreate it. This hassle gives rise to my next suggestion...
Repo on a thumb drive
Honestly, unless your repo is really big, this might be just as easy. Put a bare clone on a thumb drive, and you can push to and pull from it from both computers. Treat it like your network connection. Need to transfer to the central repo? Plug it in!
@Jefromi answer was great - 10x better than the git docs, which go on at length about incomprehensible requirements and actions.
It's still a bit complicated, so here's the simplest case synching once (in my case: FROM: an offline laptop with broken wifi card, TO: a desktop with net access). Based on @Jefromi's answer, this seems to work fine:
AHEAD = machine that is ahead by some number of commits. BEHIND = machine you want to copy the commits to
1. AHEAD: git-bundle create myBundleName.bundle --branches --tags
BOTH: copy myBundleName.bundle (using email, USB, whatever)
BEHIND: (place the file myBundName.bundle anywhere you want outside the project folder)
2. BEHIND: cd [the project folder]
3. BEHIND: git pull [path to the bundle file]/myBundleName.bundle master
So long as you include the branch-name on the end (by default, if you're not using branches, "master"), this seems to work fine, and doesn't replace any of the internal references on BEHIND - so you can still synch to/from the origin master.
i.e. if BEHIND has internet access, it's still safe to do:
(OPTIONAL) 4. BEHIND: git push
...and it'll update the main repository, as if your changes had been done locally, as normal, on BEHIND.
참고URL : https://stackoverflow.com/questions/3635952/how-to-use-git-bundle-for-keeping-development-in-sync
'developer tip' 카테고리의 다른 글
Git 상태를 완료하는 데 오랜 시간이 걸립니다. (0) | 2020.11.11 |
---|---|
선택적 인수가 제공되었는지 여부를 어떻게 테스트합니까? (0) | 2020.11.11 |
Dalvik 및 Android 툴체인에서 어떤 최적화를 기대할 수 있습니까? (0) | 2020.11.11 |
AngularJS 템플릿으로 HTML을 렌더링하는 방법 (0) | 2020.11.10 |
라 라벨이 정말 이렇게 느린가요? (0) | 2020.11.10 |