git.cmd
không còn tồn tại trong các phiên bản hiện tại của msysgit (ví dụ: 1.8.0). git.cmd
là một wrapper đã được thay thế bằng một gói mới được gọi là git.exe
. Điều này không bị nhầm lẫn với thực tế git.exe
.
Nếu bạn có một cái nhìn tại thư mục Git trong %ProgramFiles(x86)%
hoặc %ProgramFiles%
, bạn sẽ thấy cấu trúc sau:
Git
|-- bin
| |-- git.exe
|-- cmd
|-- git.exe
Các wrapper đã tồn tại trong msysgit trong một thời gian dài để thiết lập đúng môi trường để sử dụng git từ cmd.exe. Nếu bạn đang sử dụng shell bash, nó sẽ chạy git.exe trực tiếp.
Bạn có thể so sánh các phiên bản cmd cũ với wrapper thực thi mới tại đây:
- git.cmd
- git.exe wrapper
Bạn không thực sự cần phải lo lắng về bất kỳ ma thuật này, chỉ cần hiểu rằng bạn nên gọi trình bao bọc từ bất cứ thứ gì trừ môi trường msysgit bash.Khi bạn thêm git vào đường dẫn trong trình cài đặt, đó là thư mục Git \ cmd được thêm vào. Tôi không khuyên bạn nên bao giờ thêm tất cả các tiện ích đi kèm vào đường dẫn hệ thống của bạn, vì điều này có thể gây ra rất nhiều vấn đề, đặc biệt là nếu bạn có cài đặt msys hoặc Cygwin khác. Tôi chưa bao giờ thực sự thử nó trong bộ nhớ gần đây, nhưng tôi sẽ tưởng tượng nó đặt cả hai thư mục cmd
và bin
trong đường dẫn của bạn, với ưu tiên là cmd
.
Đối với tôi, có một lợi thế rất lớn đối với trình bao bọc git.exe mới: nó làm cho mã gọi git dễ dàng hơn. Trước đây, nếu tôi đã viết một kịch bản python gọi là git, tôi sẽ phải thực hiện lệnh bằng môi trường shell (subprocess.Popen()
với shell=True
) hoặc chạy tệp cmd một cách rõ ràng. Bây giờ, tôi chỉ có thể thực hiện một quá trình với 'git' như tên, bất kể hệ điều hành. Điều này là do CreateProcess() trên Windows sẽ không thực hiện một tập tin thực thi (.cmd
là một bí danh cho .bat
), bạn cần phải gọi cmd.exe
để thực thi nó.
vì vậy có đúng không khi sử dụng git.cmd ám chỉ tùy chọn đầu tiên? – prusswan
AFAIK có, tôi sẽ chọn tùy chọn thứ hai nếu bạn muốn sử dụng git.exe từ dấu nhắc cmd thông thường. –