윈도우즈의 로컬 파일 시스템 전반에서 GIT 클론 repo
나는 GIT에 관해서는 완전히 바보야.저는 지난 며칠 동안 막 첫 걸음을 내딛고 있습니다.저는 노트북에 보고서를 설정하고 SVN 프로젝트에서 트렁크를 제거했습니다(지점에 문제가 있었지만 작동하지 않았습니다). 하지만 거기서는 모든 것이 정상인 것 같습니다.
이제 노트북에서 메인 데스크톱으로 끌어오거나 밀어 넣을 수 있습니다.노트북이 편리한 이유는 하루에 2시간씩 여행하면서 좋은 일을 할 수 있기 때문입니다.하지만 집에 있는 제 메인 기계는 개발에 아주 좋습니다.그래서 집에 갈 때 노트북에서 메인 컴퓨터로 밀고 당길 수 있기를 원합니다.가장 간단한 방법은 LAN을 통해 코드 폴더를 공유하고 다음 작업을 수행하는 것이라고 생각했습니다.
git clone file://192.168.10.51/code
유감스럽게도 이것은 나에게 효과가 없는 것 같습니다.
그래서 gitbash cmd를 열고 위의 명령을 입력하면 C:\code(두 시스템의 공유 폴더)에 있습니다. 다음과 같이 반환됩니다.
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
가장 간단한 방법으로 두 시스템 간에 저장소를 공유하려면 어떻게 해야 합니까?
공식 스토리지 지점이 될 다른 위치와 다른 개발 및 CI 서버 등이 필요한 위치가 있을 것입니다. 이는 두 대의 시스템에서 동일한 레포 작업을 수행할 수 있도록 하기 위한 것입니다.
Sebastian의 제안에 따르면 다음과 같은 것을 얻을 수 있습니다.
C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
**편집 - 답변 **
도움이 된 모든 것에 감사드립니다.드라이브 매핑을 시도해 보았는데 제대로 작동했기 때문에 매핑 없이 다시 시도해 보겠습니다.최종 결과는 다음과 같습니다.
git clone file://\\\\192.168.0.51\code
잘 됐어요.
감사해요.
파일 프로토콜에 UNC 경로를 적용하여 원격의 URL을 지정할 수 있습니다.이렇게 하려면 슬래시 4개를 사용해야 합니다.
git clone file:////<host>/<share>/<path>
예를 들어 기본 시스템에 IP 192.168.10.51과 시스템 이름이 있는 경우main
그리고 그것은 이름이 붙은 공유를 가지고 있습니다.code
Git 저장소이기 때문에 다음 두 명령 모두 동일하게 작동해야 합니다.
git clone file:////main/code
git clone file:////192.168.10.51/code
Git 저장소가 하위 디렉터리에 있는 경우 경로를 추가하기만 하면 됩니다.
git clone file:////main/code/project-repository
git clone file:////192.168.10.51/code/project-repository
$ git clone --no-hardlinks /path/to/repo
위 명령은 Git 저장소가 있는 디렉터리에 POSIX 경로 표기법을 사용합니다.과 같습니다(디렉토리 Windows(윈도우)).C:/path/to/repo
를 포함합니다..git
디렉터리):
C:\some\dir\> git clone --local file:///C:/path/to/repo my_project
리포지토리가 다음으로 복제됩니다.C:\some\dir\my_project
를 하면,file:///
그 다음에--local
옵션이 포함됩니다.
호스트 이름을 가진 응답은 나에게 효과가 없었지만 이것은 효과가 있었습니다.
git clone file:///home/git/resposities/MyProject.git/
파일://을 사용하여 성공적으로 이 작업을 수행했지만 절대 경로를 나타내는 슬래시가 하나 더 있습니다.
git clone file:///cygdrive/c/path/to/repository/
제 경우 Windows용 Giton Cygwin을 사용하고 있는데, 경로에 /cygdrive/c 부분이 있기 때문에 이를 볼 수 있습니다.경로를 약간 조정하면 모든 깃 설치와 함께 작동합니다.
원격 추가도 동일한 방식으로 작동합니다.
git remote add remotename file:///cygdrive/c/path/to/repository/
공유를 네트워크 드라이브로 매핑한 다음 수행합니다.
git clone Z:\
대부분은 추측일 뿐입니다. 저는 항상 ssh를 사용하여 이 일을 합니다.물론 이 제안을 따르면 노트북에 연결/연결할 때마다 해당 드라이브를 매핑해야 합니다.창 아래에서 작업하기 위해 SSH를 어떻게 설치하는지는 잘 모르겠지만, 만약 당신이 이것을 자주 할 것이라면 조사해 볼 가치가 있을 것입니다.
내 Git 버전(1.7.2) 때문인지 뭔지는 모르겠지만, 위에 나열된 컴퓨터 이름과 IP 옵션을 사용하는 접근 방식은 나에게 효과가 없었습니다.중요하지 않을 수도 있는 추가 세부 사항은 레포가 초기화하여 다른 컴퓨터에서 푸시한 기본 레포였다는 것입니다.
저는 다음과 같은 명령을 사용하여 위의 조언대로 프로젝트1을 복제하려고 했습니다.
$ git clone file:////<IP_ADDRESS>/home/user/git/project1
Cloning into project1...
fatal: '//<IP_ADDRESS>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
그리고.
$ git clone file:////<MACHINE_NAME>/home/user/git/project1
Cloning into project1...
fatal: '//<MACHINE_NAME>/home/user/git/project1' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
저에게 효과가 있었던 것은 더 간단한 것이었습니다.
$ git clone ../git/project1
Cloning into project1...
done.
참고 - 복제되는 레포가 비어 있음에도 불구하고, 이는 Gitrepo의 내부와는 달리 제가 원하는 모든 실제 코드/이미지/리소스 파일이 포함된 '정상' 클론을 생성했습니다.
절대 경로 또는 상대 경로를 입력합니다.
예를 들어 아래의 첫 번째 경로는 절대 경로를 사용합니다.
(이것은 저장소와 백업이 하위 폴더로 포함된 폴더 내부에서 가져온 것입니다. 또한 백업 폴더가 이미 포함되어 있으면 수정되지 않으며, 포함되어 있지 않으면 새 폴더가 생성됩니다.)
~/git$ git clone --no-hardlinks ~/git/git_test1/ ~/git/bkp_repos/
다음은 상대 경로를 사용합니다.
~/git$ git clone --no-hardlinks git_test1/ bkp_repos2/
UNC 경로는 Git 2.21(2019년 2월, 아래 참조) 이후 지원되지만 Git 2.24(2019년 4분기)는 허용합니다.
git clone file://192.168.10.51/code
그만.file:////xxx
, 'file://
UNC 경로 공유를 참조하기에 충분합니다.
UNC를 사용한 Git Fetch Error를 참조하십시오.
참고, 2016년과 MingW-64 이후. git.exe
Git for 윈도우즈와 함께 패키지된 UNC 경로가 지원됩니다.
("msys, msys2 및 MinGW-64는 서로 어떻게 관련되어 있습니까?"를 참조하십시오.")
또한 Git 2.21(2019년 2월)에서는 msys2 쉘(UNC 경로 주변의 인용문 포함)에서도 이 지원이 확장됩니다.
Johannes Schindelin()의 dscho
commit 9e9da23, commit 5440df4(2019년 1월 17일)를 참조하십시오.
김 지벨스().Jeff-G
(Junio C Hamano에 의해 합병됨 -- -- commit f5d919, 2019년 2월 5일)
Git 2.21 이전, Git의 산란 방법의 특이성 때문에.git-upload-pack
백슬래시가 포함된 경로를 통과할 때 문제가 있습니다: Git는 셸을 통해 명령줄을 강제로 통과시킵니다. Git for Windows(MSYS2 프로그램)에서는 다음과 같은 일반 Win32 실행 파일과 다른 견적 의미를 가집니다.git.exe
그 자체로
증상은 폼의 UNC 경로에 있는 두 백슬래시 중 첫 번째 백슬래시입니다.\\myserver\folder\repository.git
옷이 벗겨졌습니다.
이제 이 문제는 완화되었습니다.
mingw: 특수 대소문자 인수:
sh
MSYS2 런타임은 유닉스 시스템에서 호출하는 유닉스 셸에 의해 수행될 명령줄 와일드카드 확장 및 디쿼팅을 에뮬레이트하기 위해 최선을 다합니다.
이러한 유닉스 셸 견적 규칙은 윈도우즈의 cmd 및 Powershell에 적용되는 견적 규칙과 다르므로 다른 프로세스를 생성할 때 명령줄 매개 변수를 제대로 견적하는 것이 약간 어색합니다.
특히,
git.exe
에서는 와일드카드로 해석할 수 없는 하위 프로세스에 인수를 전달하며, 백슬래시가 포함된 경우(예: 윈도우즈 경로를 통과할 때) 이스케이프 문자로 해석하지 않습니다.참고: 이 문제는 MSYS2 실행 파일을 호출할 때만 발생하며, git.exe와 같은 MINGW 실행 파일을 호출할 때는 발생하지 않습니다.그러나 MSYS2 실행 파일을 자주 호출합니다. 특히 설정 시
use_shell
child_process 구조의 플래그입니다.그것의 여부를 결정하는 우아한 방법은 없습니다.
.exe
실행할 파일은 MSYS2 프로그램 또는 MINGW 프로그램입니다.
그러나 셸을 통해 명령줄을 전달하는 사용 사례가 매우 일반적이기 때문에 적어도 실행할 때는 이 문제를 해결해야 합니다.sh.exe
.다음은 못생긴 하드코드 테스트입니다.
argv[0]
는 "입니다.sh
MSYS2 Bash를 참조하는지 여부 및 인수를 평소와 다르게 인용해야 하는지 여부를 결정합니다.그것이 여전히 문제를 완전히 해결하지는 못하지만, 적어도 그것은 뭔가입니다.
부수적으로, 이것은 또한 문제를 해결합니다.
git clone \\server\repo
할 때 했습니다.git-upload-pack
과정.또한 공백과 백슬래시뿐만 아니라 괄호도 인용할 수 있도록 주의해야 합니다.
Bash를 은 "MSYS2 Bash"와 변수를 .HEAD@{yesterday}
이것은 정말 중요합니다.
참조
복제 후, 저는 푸시가 작동하지 않았습니다.
솔루션:여기서 repo는 .git 폴더 및 구성 파일을 열어 복제됩니다.
원격 오리진 URL 설정 값의 경우:
[remote "origin"]
url = file:///C:/Documentation/git_server/kurmisoftware
언급URL : https://stackoverflow.com/questions/2519933/git-clone-repo-across-local-file-system-in-windows
'programing' 카테고리의 다른 글
VBA 코드를 64비트 Windows와 호환되도록 하려면 어떻게 해야 합니까? (0) | 2023.05.10 |
---|---|
mongo 명령을 사용할 수 없습니다. mac에서 명령을 찾을 수 없음을 표시합니다. (0) | 2023.05.10 |
컴파일을 비교합니다.NET 어셈블리? (0) | 2023.05.10 |
VBA에서 다차원 배열의 전체 행을 1차원 배열로 반환 (0) | 2023.05.05 |
선행 0 및 쉼표를 모두 포함하는 Excel용 CSV (0) | 2023.05.05 |