Dans un certain environnement, git ne peut pas être installé pour des raisons telles que" vous n'avez pas l'autorité sudo "ou" moss avec make".
J'avais des problèmes, je l'ai essayé comme l'une des contre-mesures, et cela a fonctionné, alors je vais le présenter
(J'ai fait de mon mieux pour la compilation croisée, mais j'espère que cela aide les gens même si cela ne fonctionne pas.)
"Si vous utilisez jgit, qui est une implémentation Java de git, ** cela fonctionnera partout où il y a une JVM ** "
Dans l'ensemble,
C'est comme récupérer eclipse / jgit et le construire. Je pense que vous pouvez le construire si vous pouvez utiliser la commande mvn.
(Je pense que cela fonctionne mieux que make`` git)
#Obtenez le référentiel
#(Je l'ai fait dans un environnement avec un git approprié)
git clone [email protected]:eclipse/jgit.git
# (Ou w obtenez https://github.com/eclipse/jgit/tree/stable-4.Je pense que vous pouvez télécharger le zip à 11)
#Déplacer le répertoire
cd jgit/
#Découvrez la dernière version stable actuelle
git checkout stable-4.11
#Installer
mvn clean install
#Essayez d'exécuter le jgit intégré
./org.eclipse.jgit.pgm/target/jgit --version
. / org.eclipse.jgit.pgm / target / est portable, et vous pouvez définir ce répertoire target dans l'environnement où vous voulez la commande git.
** Je pense que c'est correct d'avoir un environnement séparé pour la construction de jgit et où vous voulez installer jgit ** (croyez au slogan Java ** Écrivez une fois, exécutez n'importe où ** ...).
Ensuite, créez un lien symbolique avec la commande suivante avec le nom "" git " vers. / Org.eclipse.jgit.pgm / target / jgit`.
#Créez une symbolique avec le nom git ($Créé en PWD)
ln -s ./org.eclipse.jgit.pgm/target/jgit git
Si vous passez le chemin ici, vous pouvez le traiter comme une commande git.
** JGit est une implémentation Java de git. ** **
La déclaration officielle est la suivante, donc ce n'est pas comme frapper git dans les coulisses.
An implementation of the Git version control system in pure Java.
Je pense que l'utilisation principale est de gérer des instructions telles que commit et checkout de git depuis Java (ou langage JVM) à partir du programme. Ce qui suit est un exemple.
//exemple de git commit
Git git = new Git(db);
CommitCommand commit = git.commit();
commit.setMessage("initial commit").call();
//exemple de journal git
Git git = new Git(db);
Iterable<RevCommit> log = git.log().call();
Il ressemble à system (), donc je pense que le but principal est de le faire fonctionner sans appuyer sur la commande git.
Il existe un document officiel sur la façon de l'utiliser comme une CLI comme cette fois, et il ne devrait y avoir aucun moyen de l'utiliser.
Concernant la fiabilité, Il semble qu'Eclipse le développe, donc il sera également utilisé dans Eclipse. Il semble être utilisé dans Gitbucket (comme la version open source de GitHub) écrit en Scala, donc je pense que c'est assez fiable.
(Remarque: le git ci-dessous est un lien symbolique vers jgit)
$ git --version
jgit version 5.0.0-SNAPSHOT
$ git
jgit --git-dir GIT_DIR --help (-h) --show-stack-trace --version command [ARG ...]
The most commonly used commands are:
 add              Add file contents to the index
 archive          Zip up files from the named tree
 branch           List, create, or delete branches
 checkout         Checkout a branch to the working tree
 clean            Remove untracked files from the working tree
 clone            Clone a repository into a new directory
 commit           Record changes to the repository
 config           Get and set repository or global options
 daemon           Export repositories over git://
 debug-lfs-store  Run LFS Store in a given directory
 describe         Show the most recent tag that is reachable from a commit
 diff             Show diffs
 fetch            Update remote refs from another repository
 gc               Cleanup unnecessary files and optimize the local repository
 init             Create an empty git repository
 log              View commit history
 ls-remote        List references in a remote repository
 ls-tree          List the contents of a tree object
 merge            Merges two development histories
 push             Update remote repository from local refs
 reflog           Manage reflog information
 repo             Parse a repo manifest file and add submodules
 reset            Reset current HEAD to the specified state
 rm               Stop tracking a file
 show             Display one commit
 status           Show the working tree status
 tag              Create a tag
 version          Display the version of jgit