2012-06-27 23 views
6

Trong Windows 7, tôi có một tệp lô để kiểm tra trạng thái của một số repo và xuất các kết quả trả về vào một tệp (với các lệnh git cấp quyền chuẩn).Chạy một tệp bó trong git shell

Điều này hoạt động tốt khi được khởi chạy từ git shell, câu hỏi của tôi là làm thế nào tôi có thể làm điều này mà không cần khởi chạy git shell trước?

Vì vậy, tôi muốn có thể nhập vào dấu nhắc chuẩn hoặc trong một tệp hàng loạt có thể chạy được một lệnh/lệnh sẽ khởi chạy tệp lô đã cho trong git shell.

+0

Câu hỏi: Bạn có phiên bản git nào cho cửa sổ? Tôi đã đấu tranh với việc cài đặt msys Git để giành chiến thắng (7) nhưng một số lệnh đã mất thời gian để hoàn thành ... Bây giờ có git chỉ thông qua Cygwin. – bcelary

+0

Tôi có 1.7.11.rc1.6953.gf229a20 - Đã được cài đặt bằng ứng dụng cửa sổ GitHub mới – Ing

+0

Bạn có thể thực hiện các lệnh git đơn giản từ Powershell không? Nói cách khác, git shell có cần phải làm gì với git không? Nếu bạn có thể truy cập git từ Powershell, sau đó bạn có thể viết lại tập tin batch của bạn như là một kịch bản PowerShell. Ngoài ra, bạn sẽ có thể chạy tập tin batch của bạn từ Powershell, trừ khi nó đặt env vars (nếu có, tìm kiếm "Invoke-CmdScript" trên Google). – David

Trả lời

4

Nếu bạn xem xét những gì git-cmd.bat không, tất cả các bạn cần làm là để thiết lập quyền biến %PATH% trước khi lệnh git của bạn trong kịch bản của bạn:

Nếu không, đây là những gì bạn sẽ thấy:

C:\Users\VonC>git --version 
'git' is not recognized as an internal or external command, 
operable program or batch file. 

Tôi chưa giải nén latest portable version of msysgit.

Đặt bất cứ nơi nào một kịch bản test.bat (vì vậy không PowerShell tham gia có) với các nội dung sau đây:

@setlocal 

@set git_install_root="C:\Users\VonC\prg\PortableGit-1.7.11-preview20120620" 
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%git_install_root%\cmd;%PATH% 

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% 
@if not exist "%HOME%" @set HOME=%USERPROFILE% 

@set PLINK_PROTOCOL=ssh 

REM here is the specific git commands of your script 

git --version 
echo %HOME% 
git config --global --list 

Hãy chắc chắn rằng HOME được thiết lập một cách chính xác, bởi vì Git sẽ tìm kiếm git config toàn cầu của bạn ở đó.

Kết quả sẽ cung cấp cho bạn:

C:\Users\VonC>cd prog\git 

C:\Users\VonC\prog\git>s.bat 

C:\Users\VonC\prog\git>git --version 
git version 1.7.11.msysgit.0 

C:\Users\VonC\prog\git>echo C:\Users\VonC 
C:\Users\VonC 

C:\Users\VonC\prog\git>git config --global --list 
user.name=VonC 

Lưu ý: đó là cùng một kịch bản sẽ làm việc một cách hoàn hảo từ một phiên PowerShell.

+0

Cảm ơn @VonC, điều này có vẻ đầy hứa hẹn, sẽ kiểm tra điều này vào ngày Thứ Tư. – Ing

+1

đã làm việc cho tôi, đánh dấu câu trả lời này là chính xác! – pilavdzice

+0

Tuyệt vời, điều này hoạt động như mong muốn. – Ing

2

Dường như tệp thực thi git của bạn không thể truy cập được để sử dụng dòng lệnh.

Chỉ cần thêm c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\bin (hoặc c:\Users\[your_login]\AppData\Local\GitHub\PortableGit_[hash]\cmd) vào biến Đường dẫn của bạn. Thay thế [your_login][hash] bằng dữ liệu thực tế.

Nhưng tôi tin rằng vị trí của tệp sẽ thay đổi từ phiên bản sang phiên bản, vì vậy nếu bạn là người dùng git nặng, hãy cân nhắc việc cài đặt msysGit. Nó sẽ tự động thêm vào đường dẫn hệ thống của nó (tùy chọn tương ứng có sẵn trong khi thiết lập).

Thậm chí nhiều hơn, có dự án được gọi là mysysGit-UTF8 tuyên bố rằng họ có hỗ trợ UTF-8 đầy đủ trên Windows. Tôi không nhận thấy sự khác biệt, thông qua.

+0

Nếu bạn không chọn tùy chọn để thêm nó vào syspath Nó sẽ không thêm nó – Learath2

+0

Có, bạn là 100% bên phải. Hãy để tôi sửa điểm này trong câu trả lời. – shytikov

+0

Upvote cho đầu vào của bạn, cảm ơn bạn. – Ing

Các vấn đề liên quan