Git.cmd vs git.exe - quelle est la différence et qui doit être utilisé?

j'ai une idée.cmd est seulement un wrapper (mais ajouté au chemin par défaut), mais j'ai découvert que git.exe fonctionne aussi bien et j'ai l'intention de l'utiliser comme une solution de contournement à cette question (commentaires à elle plutôt, concernant chcp sur XP64). Ce serait pas recommandé pour une raison ou une autre? Aussi, est git.cmd vraiment nécessaire en premier lieu?

Note: la question de chcp à laquelle je fais référence n'est pas causée par des entrées de chemin manquantes comme dans 'rssa' n'est pas reconnu comme une commande interne ou externe, un programme exécutable ou un fichier de commandes. sur un PC Windows

22
demandé sur Community 2012-01-20 23:57:47

3 réponses

git.cmd n'existe plus dans les versions actuelles de msysgit (par exemple 1.8.0). git.cmd était un emballage qui a été remplacé par un nouvel emballage appelé git.exe . Ceci ne doit pas être confondu avec le git.exe réel .

Si vous regardez le répertoire Git dans %ProgramFiles(x86)% ou %ProgramFiles% , vous verrez la structure suivante:

Git
|-- bin
|   |-- git.exe
|-- cmd
    |-- git.exe

le wrapper existe depuis longtemps à msysgit afin de configurer l'environnement pour l'utilisation de git à partir de cmd.EXE. Si vous utilisez le shell bash inclus, il s'exécutera git.exe directement.

vous pouvez comparer l'ancienne version de cmd avec le nouveau wrapper exécutable ici:

  1. git.cmd
  2. git.exe wrapper 1519270920"

vous n'avez pas vraiment besoin de vous soucier de cette magie, juste comprenez que vous devriez appeler le wrapper de n'importe quoi sauf de l'environnement msysgit bash. Lorsque vous ajoutez git au chemin dans l'installateur, c'est le répertoire git\cmd qui est ajouté. Je ne recommande jamais d'ajouter tous les utilitaires inclus à votre chemin système, car cela peut causer beaucoup de problèmes, surtout si vous avez d'autres installations msys ou cygwin. Je ne l'ai jamais vraiment essayé de mémoire récente, mais j'imagine qu'il met à la fois les répertoires cmd et bin dans votre chemin, avec cmd qui prend le pas.

pour moi, il y a un avantage énorme au nouveau git.exe wrapper: il rend le code qui appelle git plus portable. Auparavant, si j'écrivais un script python appelé git, je devrais exécuter la commande avec un environnement shell ( subprocess.Popen() avec shell=True ) ou lancer explicitement le fichier cmd. Maintenant, je peux juste exécuter un processus avec git comme le nom, quel que soit le système d'exploitation. Cela est dû au fait que CreateProcess () sur Windows n'exécutera pas un lot file ( .cmd est un alias pour .bat ), vous devez invoquer cmd.exe pour l'exécuter.

25
répondu djs 2013-01-22 05:31:56

il y a trois options lorsque vous installez msysgit.

  1. la première est que rien n'est mis sur PATH et vous ont pour utiliser Git Bash.

  2. la seconde est que git.cmd et gitk.cmd sont ajoutés à PATH de sorte que vous pouvez l'utiliser dans cmd, Powershell, cygwin etc. sans affecter les autres outils que vous avez sur Windows. (Ce git.cmd est un wrapper, vous a permis de le faire, pour répondre à la question).

  3. le troisième ( mon préféré) est d'ajouter tous les outils, et git.exe , dans PATH et utilisez ceci. Cela affectera les outils Windows et vous pourrez utiliser l'ensemble des outils fournis par MSYS.

j'ai toujours utilisé la troisième option. Je n'ai jamais vu comment cela m'affecte ( J'utilise des cmdlets Powershell et powershell et jamais commandes Windows standard) si vous êtes comme ça et que vous voulez des mingwexes à votre disposition, optez pour la troisième option et vous serez bon.

13
répondu manojlds 2015-12-10 14:56:41

, Selon le git pour windows installer vous avez la possibilité d'ajouter git.exe sur votre chemin lors de l'installation. Tu devrais utiliser cette option.

Option screen to select git.exe

5
répondu Devin M 2012-01-20 20:09:38