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