In einer bestimmten Umgebung kann "git" nicht installiert werden, weil "Sie keine Sudo-Berechtigung haben" oder "Moos mit" make "". Ich war in Schwierigkeiten, ich habe es als eine der Gegenmaßnahmen versucht, und es hat funktioniert, also werde ich es vorstellen
(Ich habe mein Bestes versucht, um Cross-Compilieren zu können, aber ich hoffe, es hilft den Leuten, auch wenn es nicht funktioniert.)
"Wenn Sie" jgit "verwenden, eine Java-Implementierung von" git ", ** funktioniert es überall dort, wo es eine JVM gibt **"
Als Ganzes fließen
Es ist wie das Abrufen von eclipse / jgit und das Erstellen. Ich denke, Sie können es erstellen, wenn Sie den Befehl mvn
verwenden können.
(Ich denke, es funktioniert besser als make`` git
)
#Holen Sie sich das Repository
#(Ich habe es in einer Umgebung mit einem geeigneten Git gemacht)
git clone [email protected]:eclipse/jgit.git
# (Oder wir bekommen https://github.com/eclipse/jgit/tree/stable-4.Ich denke, Sie können die Zip um 11 herunterladen)
#Verzeichnis verschieben
cd jgit/
#Schauen Sie sich die aktuelle stabile Version an
git checkout stable-4.11
#Installieren
mvn clean install
#Versuchen Sie, das erstellte JGIT auszuführen
./org.eclipse.jgit.pgm/target/jgit --version
. / org.eclipse.jgit.pgm / target /
ist portabel, und Sie können dieses target
-Verzeichnis in der Umgebung festlegen, in der Sie den Befehl git
möchten.
** Ich denke, es ist in Ordnung, eine separate Umgebung zum Erstellen von "jgit" zu haben und wo Sie "jgit" installieren möchten ** (glauben Sie an den Java-Slogan ** Einmal schreiben, überall ausführen ** ...).
Erstellen Sie danach eine symbolische Verknüpfung mit dem folgenden Befehl mit dem Namen "git" in Richtung ". / Org.eclipse.jgit.pgm / target / jgit".
#Erstellen Sie eine Symbolik mit dem Namen git ($Erstellt in PWD)
ln -s ./org.eclipse.jgit.pgm/target/jgit git
Wenn Sie den Pfad hier übergeben, können Sie ihn wie einen "git" -Befehl behandeln.
** JGit ist eine Java-Implementierung von git
. ** ** **
Die offizielle Aussage lautet wie folgt, es ist also nicht so, als würde man hinter den Kulissen "git" schlagen.
An implementation of the Git version control system in pure Java.
Ich denke, dass die Hauptverwendung darin besteht, Anweisungen wie "Commit" und "Checkout" von "Git" aus Java (oder der JVM-Sprache) aus dem Programm zu verarbeiten. Das Folgende ist ein Beispiel.
//Git Commit Beispiel
Git git = new Git(db);
CommitCommand commit = git.commit();
commit.setMessage("initial commit").call();
//Beispiel für ein Git-Protokoll
Git git = new Git(db);
Iterable<RevCommit> log = git.log().call();
Es sieht aus wie "system ()", daher denke ich, dass der Hauptzweck darin besteht, es zu bedienen, ohne den Befehl "git" zu drücken. Es gibt ein offizielles Dokument darüber, wie man es wie dieses Mal als CLI verwendet, und diese Verwendung sollte überhaupt sein.
In Bezug auf Zuverlässigkeit, Es scheint, dass Eclipse es entwickelt, daher wird es auch in Eclipse verwendet. Es scheint in Gitbucket (wie die Open-Source-Version von GitHub) verwendet zu werden, das in Scala geschrieben wurde, daher denke ich, dass es ziemlich zuverlässig ist.
(Hinweis: Das unten stehende "git" ist ein symbolischer Link zu "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