“Windows 명령 프롬프트에서 Git 및 선택적 Unix 도구 사용”옵션이 위험합니까?


12

Git을 설치할 때 모든 msys * nix 도구를 PATH에 추가하는 옵션을 제공하지만 다음과 같은 경고가 표시됩니다.

경고 : "find"및 "sort"와 같은 Windows 도구보다 우선합니다. 의미를 이해 한 경우에만이 옵션을 사용하십시오.

내 질문은 :

  • 정확히 어떤 도구와 충돌합니까?
  • 그게 그렇게 중요한 건가? 시스템에서 일반적으로 사용됩니까? (개인적으로 사용한 적이 없습니다.)
  • 충돌을 방지하기 위해 PATH에서 디렉토리 순서를 변경할 수 있습니까?
  • 이것이 두 번째 옵션이하는 것입니까? ( "Windows 명령 프롬프트에서 Git 사용-이 옵션은 최소한의 Git 래퍼 만 추가하므로 안전하다고 간주됩니다")

답변:


5

다른 답변의 일반적인 분석에 동의하며 어떤 종류의 충돌이 발생할 수 있는지 정확하게 예측할 수 없습니다. 나는 세 번째 옵션을 취하는 것이 끔찍한 것을 보지 못했다는 것을 알고 있습니다. 그러나 2018 년 현재 옵션이 실제로하는 일에 조금 추가 할 수 있습니다.

이 옵션을 포함하여 팀을 git으로 전환하는 방법을 결정하면서 다양한 설치 구성을 실험했습니다. 이것이 실제로 Windows v2.19.1의 git에서 설치가 내 경로로 수행되는 것을 관찰 한 것입니다.

PATH 설정을위한 Git For Windows 설치 옵션의 스크린 샷

Git Bash에서만 Git 사용

상태에 따라 시스템 경로는 수정되지 않습니다. 간단한 입력 git statusWindows 명령 프롬프트에서 cmd.exe를에를 실패합니다 'git' is not recognized as an internal or external command, operable program or batch file.

Windows 명령 프롬프트에서 Git 사용

충돌을 방지하기 위해 PATH에서 디렉토리 순서를 변경할 수 있습니까?

이것이 두 번째 옵션이하는 것입니까? ( "Windows 명령 프롬프트에서 Git 사용-이 옵션은 최소한의 Git 래퍼 만 추가하므로 안전하다고 간주됩니다")

주문 변경은 항상 선택 사항이지만, 두 번째 선택은 주문과 관련이없는 것으로 보입니다. (경로 추가는 경로에 관계없이 진행되는 것처럼 보입니다. 어느 시점에서 변경된 것이 조금 의심 스럽습니다.) 경로에 추가되는 디렉토리에 대한 질문이며 두 번째 옵션과 세 번째 옵션이 다릅니다.

PATH에 "최소한의"Git 래퍼를 추가 할 것이라고 말하면 실제로 나타나는 cmd것은 (설치 예정) 폴더를 경로에 추가하는 것입니다. 이것이 결국 팀에 제안한 옵션입니다. 우리는 이제 C:\Program Files\Git\cmd우리의 길에 있습니다.

의 새로운 기능 cmd디렉토리? 저에게는 6 개의 파일 만 있습니다 :

  • git.exe
  • git-gui.exe
  • gitk.exe
  • git-lfs.exe
  • start-ssh-agent.cmd
  • start-ssh-pageant.cmd

Anaksunaman의 대답과 마찬가지로 이것이 충분하지 않은지 확실하지 않습니다. git <some command>git.exe의 포함으로 시작하는 모든 일반 명령 이 작동합니다.

Windows 명령 프롬프트에서 Git 및 선택적 Unix 도구 사용

이것은 두 번째 옵션을 추가하는 것 포함 <Install dir>\Git\cmd추가 또한 경로, 및 <Install dir>\Git\mingw64\bin<Install dir>\Git\usr\bin경로에. 두 디렉토리 모두 다른 답변에서 언급했듯이 find, sort 및 kill을 포함하여 상당한 수의 실행 파일이 있습니다.

아마도 몇 백 가지 항목을 나열하는 대신 관련 사용자가 옵션 2를 선택하고 설치를 완료 한 다음 해당 디렉토리를 살펴 보도록 권장합니다. 위험에 만족하는 경우 경로에 경로를 직접 추가 <Install dir>\Git\mingw64\bin하고 <Install dir>\Git\usr\bin타임머신을 되찾아 세 번째 옵션을 선택하는 것과 같습니다.


가정 및 컨텍스트가 수년에 걸쳐 변경 때문에,이와 4 년 - 오래된 질문에 대한 새로운 답을 시작하는 것이 유용 할 수 있습니다 "여기 ... 2019에서 새로운 관점이다"
크리스토퍼 인질

1
이것은 여전히 ​​주제에서 가장 유용한 질문이므로 추가 답변을받는 것이 관련이 있다고 생각합니다. 1 년을 추가했지만 버전 번호가 같은 목적을 달성 할 것이라고 생각했을 것입니다.
ojchase

7

정확히 어떤 도구와 충돌합니까?

개인적으로 나는 전체 목록을 확신 할 수 없지만 이 StackOverflow 질문

"이것은 찾기, 죽이기 및 정렬을 포함합니다. [...] 처음 3 개 (및 이와 유사한 것)의 문제점은 OS에 존재하며 각각 다르게 작동한다는 것입니다."

그것들은 당신이 자주 사용하지 않을 수도 있지만 Git이 예기치 않은 행동에 대해 경고 할 필요가 있다고 생각할 정도로 일반적입니다.

예를 들어 타사 프로그램 (대부분 스크립트)에 표시 될 가능성이 높기 때문에 효과 수준은 해당 명령에 의존하는 프로그램의 사용량에 따라 다릅니다.

이것이 두 번째 옵션이하는 것입니까? ( "Windows 명령 프롬프트에서 Git 사용-이 옵션은 최소한의 Git 래퍼 만 추가하므로 안전하다고 간주됩니다")

기본적으로 모든 공통 Git 명령과 함께 명령 행 (cmd.exe)에서 Git을 사용할 수 있습니다. 이 옵션은 Windows 명령 줄에서 스크립팅하거나 수동으로 구현하려는 것의 99 %에 완벽하게 안전하고 유용합니다. 이 옵션을 사용하며 개인적으로 문제가 발생하지 않았습니다.

설치 후 그래픽 git 인터페이스 (예 : Windows 용 GitHub Dekstop 또는 SourceTree )를보고 Git bash가 설치와 함께 제공된다는 것을 잊지 마십시오.


실제로 CMD의 일부 도구를 사용하고 싶습니다. 두 번째 옵션으로 유닉스 도구를 사용할 수 있는지 또는 git 만 사용할 수 있는지 궁금합니다.
Aleksandr Dubinsky

내 지식으로는, 그것은 단지 자식입니다.
Anaksunaman

3

정확히 어떤 도구와 충돌합니까?

설치를 통해 PATH를 수정하겠습니다. 원하지 않는 경우 PATH에서 쉽게 제거 할 수 있습니다. 그런 다음 디렉토리를보고 충돌을 찾기 위해 diff, comm 등과 같은 비교를 수행합니다. 어디에 있는지 모르겠지만 어딘가에 문서화해야합니다.

그게 그렇게 중요한 건가? 시스템에서 일반적으로 사용됩니까? (개인적으로 사용한 적이 없습니다.)

최근에 cygwin 도구를 사용하지는 않았지만 Windows를 사용해야 할 때 일반적으로 PATH에서 cygwin 도구 디렉토리를 문제없이 처음 사용했습니다.

프로그램이 충돌하는 Windows 명령 줄 도구를 찾는 경우 가장 큰 위험은 잘못된 프로그램을 실행하는 것입니다. 나는 매우 적은 양의 cmd.exe 스크립팅을 고려할 때이 기회가 매우 적다고 생각합니다.

충돌을 방지하기 위해 PATH에서 디렉토리 순서를 변경할 수 있습니까?

예. cygwin 또는 git추가 된 항목을 PATH 끝으로 이동하십시오. cygwin에서는 특정 명령 시퀀스가 ​​제대로 작동하지 않습니다. 또한 생각해 보니 cygwin 콘솔이 경로를 올바르게 설정했다고 생각합니다. cygwin을 사용할 때 자신의 경로를 설정하면 cygwin도 올바르게 작동합니다.

이것이 두 번째 옵션이하는 것입니까? ( "Windows 명령 프롬프트에서 Git 사용-이 옵션은 최소한의 Git 래퍼 만 추가하므로 안전하다고 간주됩니다")

마치 git를 사용해야하는 git 명령 만 포함하는 디렉토리를 PATH에 삽입하는 것처럼 들립니다.


실제로 git은 Cygwin 대신 MSYS를 사용합니다. 차이점은 msys는 기본 win32이고 cygwin은 에뮬레이션 라이브러리를 사용하여 posix 코드를 조정한다는 것입니다.
Aleksandr Dubinsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.