Windows 아래 Git : MSYS 또는 Cygwin?


80

내 프로젝트를 git로 마이그레이션 할 계획이며 현재 Windows에서 어떤 것이 가장 좋고 / 또는 가장 안정적인 옵션인지 궁금합니다.

내가 모은 것에서 기본적으로 2.5 옵션이 있습니다.

  1. MSYSgit
  2. Cygwin의 자식
  3. (일명 2.5) Cygwin 프롬프트의 MSYSgit (Cygwin git이 이미 설치되어있는 경우).

참고 : IMO Cygwin 자체는 거의 모든 * nix 명령 줄 도구에 액세스 할 수 있기 때문에 큰 장점입니다. MSYSgit bash를 사용하면 이러한 도구의 일부만 액세스 할 수 있기 때문입니다.

그렇다면 어떤 옵션을 제안 하시겠습니까?

답변:


60

편집 (2 년 추가 : 2014 년 10 월)

Johannes Schindelin은 방금 msysgit이 단계적으로 제거 되었다고 설명했습니다 (2014 년 10 월) .

이제 Windows SDK 용 경량 Git 이 있습니다. 기본적으로 패키지 관리자 mingw-get을 통해 관리되는 표준 MinGW / MSys 시스템입니다.

우리는 단지 이름이 "msysGit"밖으로 단계 (뿐만 아니라하기로 결정 GitHub의 조직 같은 이름의 )에 대한 작업 Windows 용 힘내 합니다 (와 GitHub의 조직에 대응) , 및 설치 프로그램의 이름 "Windows 용 힘내"사용 목적 Windows 개발자 용 Git를 대상으로하는 개발 환경의 경우 "최종 사용자"및 "Windows SDK 용 Git"에서).


편집 (3 년 후 : 2012 년 4 월)

MsysGit (현재 GitHub에 있음 )은 Git 세계에서 가벼운 빠른 시작을 원하는 경우 사용할 수있는 방법입니다. 아카이브 압축을 풀고 실행 git-cmd.bat하거나 git-bash.bat완료하면됩니다.
그것의 최신 버전 (1.7.10 2012 에이프릴) 이제 포함 UTF-8에 대한 지원GitExtension에 포함을 . 그래도 autocrlffalse 로 설정하는 것을 잊지 마십시오 .

msysgit이 포함 된 패키지가 아닌 다른 모든 유닉스 명령이 실제로 누락 된 경우 "Cygwin의 경량 대안"이라는 이름 의 GoW (Windows의 Gnu) 릴리스를 다운로드하기 만하면 됩니다.
내 말은 : 130 유닉스 명령 s ...

Cygwin은 그의 대답 에서 incrementor 로 아래 에서 언급했듯이 대형 Git 리포지토리 의 전송 속도와 같은 특정 경우에만 백업 솔루션이어야합니다 .


2012 년 6 월 : GitHub 와 상호 작용하려는 경우 이제 http://windows.github.com이 있습니다 ( " Windows 용 GitHub 디자인 "참조 ).
ssh 키를 구성 할뿐만 아니라 생성 된 공개 키를 GitHub 프로필에 추가 할뿐만 아니라 모든 git 작업에 대해 MsysGit을 설치합니다.


원문 답변 (2009 년 4 월)

최신 버전의 MsysGit에는 문제가 없습니다
. 옵션 2를 사용합니다. 즉, PATH 환경 변수에 git \ bin 디렉터리 만 추가하고 일부 내장 Windows 도구를 재정의하지 않습니다.

Notepad ++WinMerge (또는 DiffMerge) 와 같은 외부 도구를 정의했습니다.

MsysGit1.6.2 +에서 ' '명령 이 포함되어 있기 때문에 svn2git 과 같은 스크립트를 성공적으로 실행했습니다 git svn.

그리고 마지막으로 MsysGit1.6.2.3에 finally ' git filter-branch'명령 이 포함 되기를 기대합니다 ! (느린 버전의 필터 브랜치이지만 여전히).

Unix 명령의 경우 GnuWin32 coreutils 패키지 를 설치하고 필요할 때만 사용 하는 것을 선호 합니다.

그래서 대체로 Cygwin 레이어를 사용하지 않고 Windows 기반 릴리스 MsysGit에서 Git을 매우 잘 실행했습니다.


나는 p4merge도 사용하는데 꽤 멋지다. git 및 unicode 파일 이름에 문제가 있음을 읽었습니다.
Benjol

core.editor 설정 질문에 연결해 주셔서 감사합니다. (나는 -nosession 및 -multiInst와 같은 명령 줄 스위치와 함께 Notepad ++를 사용하려고했습니다)
mbx

이 대답은 하나가 다른 하나를 사용하는 이유에 실제로 대답하지 않습니다. 더 나은 답변은 다음과 IMO있다
세바스티앙 마틴

@SebastienMartin이 경우 OP (Joce)에게 언급해야합니다. 그렇지 않으면 더 나은 답을 선택해야한다는 알림을받지 못합니다.
VonC

@SebastienMartin이 이전 답변을 최신 정보로 업데이트했습니다.
VonC

15

예. 오래된 질문. 새로운 답변 :

우리는 대규모 배포에서 약 2 년 동안 MSYSgit을 사용하고 있습니다. 로컬 git 저장소 서버에서의 전송 속도는 5MiB / s 미만으로 제한되었습니다. 이 문제에 대한 이전 조사에서는 MSYS 개발자가 Windows XP 및 Windows 7 보안에있는 명령 프롬프트 / bash 셸에서 연결을 제한하는 문제가 있음을 나타 냈습니다. 사실 이것은 문제가되지 않는 것 같습니다.

Darrell Mozingo의 블로그 게시물을 발견 하고 Cygwin 설치 만 사용하여 대규모 (많은 GiB) 저장소의 복제본을 테스트했습니다. 전송 속도는 30MiB / s 범위였습니다. 문제는 MSYSgit이 2007의 골동품 OpenSSH 바이너리를 사용한다는 것입니다.

이를 위해 문제가 해결 될 때까지 Cygwin으로 전환하는 것이 좋습니다 (git 버전이 약간 뒤처졌지만). 또한 Cygwin이 더 안정적이며 펄이 메모리 부족을 일으킬 가능성이 적다는 것을 알았습니다.


는 MinGW는 2010 년부터이다 OpenSSH를 5.4를 사용하는 것 같습니다
스티븐 페니

9

나는 MSYS와 Cygwin 버전의 git을 모두 사용해 보았습니다. 솔직히 말해서 두 가지 경험 중 특히 좋은 경험을 찾지 못했습니다. 나는 git이 아직 Windows에 대한 준비가되어 있지 않다고 생각합니다.

즉, MSYS 버전에서 찾은 한 가지 문제는 (이진이 아닌) 파일의 줄 끝을 UNIX 스타일 (줄 바꿈)에서 DOS 스타일 (캐리지 리턴 / 줄 바꿈)로 변환한다는 것입니다. 이것을 버그 또는 기능이라고 생각할 수 있지만 내가 찾을 수있는 동작을 변경할 방법이 없습니다. (편집 : 구성 변수 core.autocrlffalse. Thanks Brian으로 설정합니다 .)

OTOH, git의 MSYS 버전에는 전체 X 서버를 설치하고 실행하지 않는 한 cygwin 버전에서 사용할 수없는 GUI 기능이 있습니다. (확인해 주신 Joce에게 감사드립니다.)

내 인상은 MSYS 버전이 더 인기가 있다는 것인데, 사용하기 위해 cygwin 생태계를 설치할 필요가 없기 때문일 수 있습니다. (동의합니다. cygwin은 매우 유용합니다.)

개인적으로 저는 Windows IMO를 더 잘 지원하는 Bazaar 또는 Mercurial 중 하나를 선택합니다.


3
Bazaar는 Windows의 Git 문제에 대한 나의 해결책이기도했습니다. 헤.
Instance Hunter

9
줄 끝 번역을 끌 수 있습니다. core.autocrlf를 false로 설정하기 만하면됩니다.
Brian Campbell

1
현재 DCVS 선택 옵션을 확인하고 있습니다. Mercurial이 목록에 있습니다. 그러나 특히 매우 큰 프로젝트의 경우 분기 비용은 상당히 꺼져 있습니다. Cygwin dist는 GUI 프런트 엔드와 함께 제공됩니다 (X 서버 실행 비용). 그러나 나는 그것이 얼마나 많은 가치를 추가하는지 완전히 확신하지 못합니다.
joce 2009

3
msys 버전을 사용하고 있는데 문제가 발생하지 않습니다.
Ikke

2
최신 버전의 msys는 설치할 때 줄 끝이 처리되는 방식을 구성하도록 요청한다고 생각합니다.
Ken Liu

7

Cygwin과 Msys Git은 모두 일반적인 사용 사례에서 상당히 잘 작동합니다. git-svn과 같은 스크립트를 사용하려면 Cygwin이 더 나은 방법입니다. 드디어 Linux로 이동 한 오래된 Windows 사용자로서 Cygwin은 큰 혜택이며 그 자체로 가치가 있다고 말할 수 있습니다.

하지만 맥락은 중요합니다. 어떤 프로젝트입니까? 누가 사용합니까? 기타.


2
우리는 다소 작은 팀 (~ 10 프로그램)이 개발 한 다소 큰 프로젝트 (32K + 소스 파일)에 대해 이야기하고 있습니다. 그들 모두가 * nix 환경에 능숙하지는 않지만, 일상적인 사용을위한 git의 단순성은 유망 해 보입니다. 우리는 또한 분기를 많이 사용할 계획입니다. 예를 들어 One P4 changelist <=> One git branch. 그 이유만으로도 git은 Hg보다 훨씬 더 흥미 롭습니다. Cygwin 대 MSYS에 대한 나의 두려움은 Cygwin 버전이 MSYS 버전만큼 최신 버전이 아니라는 것입니다.
joce 2009

6

나는 또한 두 세계 (CygWin 및 MSysgit)를 테스트했으며 내 경험은 MSysgit bash에 몇 가지 단점이 있다는 것입니다. Cygwin이 동일한 git repo에서 정상적으로 처리하는 동안 git stash를 성공적으로 실행할 수 없습니다.

그러나 아직 심층 분석은 수행되지 않았습니다.


4

현재 TortoiseGit과 함께 Msysgit을 사용하고 있습니다.

MsysGit UI는 내 마음에 들지 않으므로 TortoiseGit과 같은 친숙한 도구를 사용하고 명령 줄에서 작업 할 때 (대부분의 경우) Msysgit의 git 바이너리를 사용합니다.


3

msysgit을 추천합니다. 특히 Git Extensions 와 함께 사용하는 경우 : 편집기 / diff / merge 도구와 같은 환경을 쉽게 구성 할 수 있으며 사용자 인터페이스에서 고급 git 작업을 수행 할 수 있습니다.


1

MSys의 cygwin 구현에서 심각한 버그가 발생했습니다. 일부 명령, 특히 rebase는 실패하기 쉽습니다. Cygwin은 나에게 훨씬 더 안정적이었습니다.

즉, 한 달 전이었고 그 이후로 개선되었을 수 있습니다.


3
"MSys의 cygwin"? MSys의 Git을 의미하지 않습니까?
joce

2
@Alex Gontmakher 아마도 더 안정적 일 수 있지만 죽음이 느립니다. 이 게시물을 참조하십시오 : stackoverflow.com/questions/6724471/…
WinWin dec.

1

Windows에서 Cygwin Git과 Msysgit을 모두 사용했습니다. Cygwin + Git을 사용하는 것이 좋습니다. Cygwin 1.7 (현재 베타 버전)은 git gui 및 gitk를 사용하는 동안 주요 뉘앙스 (적어도 저에게는)를 해결합니다. Cygwin의 이전 버전은 git-gui 또는 gitk에서 무언가를 할 때마다 10 개의 cmd 창을 열었습니다. 이것은 1.7에서 해결되었습니다. Cygwin의 강력한 쉘은 Linux 터미널의 많은 장점을 제공합니다.

즉, Msysgit은 상당히 발전했으며 Windows에서 정말 유용합니다. 그래도 몇 가지 문제에 직면했습니다.

권한 문제 : Windows에서 기본적으로 생성 된 일부 파일에는 Msysgit을 사용하는 동안 644로 변환 된 모드 755가 있습니다. 수정 된 파일로 표시됩니다. 체크인을 통해이 문제를 해결할 수 있습니다.

CRLF : 평소처럼 찾기 힘든 CRLF는 Windows에서 문제를 일으 킵니다. Msysgit은 파일이 수정 된 것으로보고 할 수 있습니다. Msysgit을 설치하는 동안 "줄 끝을 변경하지 않고 그대로두기"(정확한 텍스트를 잊어 버림)를 선택하면이 문제를 해결할 수 있습니다.

데몬 : 그래도 Msysgit에서 git 데몬을 설정하는 것이 여전히 어렵습니다.


1

이전 질문에 대한 새로운 답변 ...

Windows 7 cmd 셸에서 git 1.7.3을 사용하고 있으며 훌륭하게 작동합니다. 나는 git 명령 줄과 git gui를 혼합하여 사용하며 둘 다 몇 달 동안 잘 작동했습니다. 캐리지 리턴 / 줄 바꿈 문제가 있었고 Mac 개발자를 팀에 추가했을 때 악화되었지만 문제는 ...

core.autocrlf=true
core.safecrlf=false

* nix-y 셸을 사용하지 말아야한다는 말이 아니라, 필요하지 않다는 것입니다.


0

Cygwin이 원하는 다른 도구가 아닌 git 만 원하기 때문에 CygWin에 대한 예약 이 있습니다. 일반적으로 Windows 컴퓨터가 Windows 컴퓨터처럼 작동하기를 원하고 CygWin은 완전히 다른 것을 치고 싶어합니다. 단지 킥을 위해 * nix 기능을 두드려서는 안됩니다.

문제는 명령 줄과 같은 * nix를 사용하고 싶다면 Linux 컴퓨터로 이동하여 대신 해당 컴퓨터에서 작업합니다. 가상 컴퓨터원격 데스크톱 은 요즘 매력적으로 작동하며 개발자가 충분히 액세스 할 수 있습니다.

CygWin을 사용하려면 합법적 인 이유가 있어야합니다. git을 사용하는 경우 대신 MSysGit을 사용하는 것이 좋습니다 . 번들로 제공되는 gitk 및 git-gui 도구와 잘 작동합니다. msysgit을 사용하여 Eclipse와 Visual Studio에서 작업 해 왔으며 매력적으로 작동합니다.

내가 지금 기다리고있는 유일한 것은 git 용 으로 완벽하게 작동하는 Tortoise 클론입니다 .


그리고 그것은 3/13/17에서 Cygwin이 2.8.3 git이고 업데이트 할 때 약간의 Perl 문제가있었습니다. Git Bash MinGW는 2.12입니다.
Mark

0

당신은 단순히 Windows에서 하나 개의 시나리오가 있습니다 Cygwin을 통해 힘내를 사용하는 : 당신은 1.5보다 SVN 클라이언트 버전 이상 예상하는 SVN 서버에 대해 힘내을 사용하고자 할 때입니다. 'mergeinfo'인수가 없을 때 커밋을 차단하는 SVN 사전 커밋 후크가 있으며 'mergeinfo'인수는 버전 1.5부터 SVN에서만 기본값입니다. msysGit의 문제점은 이전 SVN 버전 (1.4.6)에 대해 빌드되었으므로이 경우 성공적으로 커밋 할 수 없다는 것입니다. 그러나 Cygwin의 Git을 사용하면 새로운 SVN 버전에 대해 빌드되므로 가능합니다.


0

밀기 / 끌기 / 분기와 같은 간단한 작업을 수행하려는 경우 Atlasian의 SourceTree를 사용해 볼 수 있습니다. Git 명령을위한 매우 간단하고 명확한 UI. 그러나 그것은 부족합니다.

명령 줄 git 도구를 사용해야하는 경우 Windows 용 Git 도구를 받으십시오. bash 스크립팅을 시작하지 않는 한 충분합니다.

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