Provides examples and code snippets for the JGit Java Git implementation.
The JGit framework is rich and diverse, it has two layers, a low-level api and a higher-level set of porcelain commands.
This project tries to provide a collection of ready-to-run snippets which try to augment the existing JavaDoc and the User Guide
git clone git://github.com/centic9/jgit-cookbook
mvn dependency:sources eclipse:eclipse package
Import the project into an Eclipse workspace and execute the snippets there.
- Get the SHA-1 ref from a name, e.g. refs/heads/master
- Get the commit-object from a name or a SHA-1
- Get the tree-object from a commit-object, name or SHA-1
- Read the contents of a file/blob
- Get the tag-object from a name or a SHA-1
- Resolve complex references, e.g. HEAD^^ to a SHA-1
- Iterate over the commits on a branch
- Read contents of a specific file from a specific commit
- List remotes configured for the current repository
- Print out user information from Git
- Read file attributes, e.g. executeable state, file or directory, size, ...
- Use class BranchTrackingStatus to retrieve number of commits ahead/behind compared to remote branches
- Iterate all commits of a repository - https://gerrit.googlesource.com/plugins/branch-network/+log/refs/heads/master/src/main/java/com/googlesource/gerrit/plugins/branchnetwork/data/JGitFacade.java
- Take some of the unit tests as example: https://github.com/eclipse/jgit/tree/master/org.eclipse.jgit.test/tst/org/eclipse/jgit/api
- Add/Remove/Read Notes
- SubModules: http://stackoverflow.com/questions/13426798/jgit-read-gitmodules
- Diffing: http://stackoverflow.com/questions/12987364/how-to-diff-with-two-files-by-jgit-without-creating-repo
- Ammend a previous commit: http://stackoverflow.com/questions/4772142/jgit-unstaging-files-removing-files-from-the-index-and-ammending-a-commit
- Remove a file from the index: http://stackoverflow.com/questions/4803462/jgit-java-git-library-unstaging-files
- Git repo on Amazon S3: http://stackoverflow.com/questions/8744611/git-repository-on-s3-as-origin-not-as-backup http://stackoverflow.com/questions/7031729/publish-to-s3-using-git http://www.fancybeans.com/blog/2012/08/24/how-to-use-s3-as-a-private-git-repository/
- Doing stuff without local storage: Using org.eclipse.jgit.storage.dfs.InMemoryRepository to clone a Git repo in-memory and work from there
- Stashes, see http://wiki.eclipse.org/JGit/New_and_Noteworthy/2.0#StashApplyCommand
- CherryPick
- Rebase - http://stackoverflow.com/questions/22945257/jgit-how-to-squash-commits
The following sources were used to build the snippets
Please note that the list of snippets is not yet complete, probably never will. If you are missing things or have suggestions how to improve or add snippets, please either send pull requests or create issues.
Copyright 2013, 2014 Dominik Stadler
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.