The Git interface you've been missing all your life has finally arrived.

Related tags

Miscellaneous GitUp
Overview

Build Status

GitUp

Work quickly, safely, and without headaches. The Git interface you've been missing all your life has finally arrived.

Git recently celebrated its 10 years anniversary, but most engineers are still confused by its intricacy (3 of the top 5 questions of all time on Stack Overflow are Git related). Since Git turns even simple actions into mystifying commands (“git add” to stage versus “git reset HEAD” to unstage anyone?), it’s no surprise users waste time, get frustrated, distract the rest of their team for help, or worse, screw up their repo!

GitUp is a bet to invent a new Git interaction model that lets engineers of all levels work quickly, safely, and without headaches. It's unlike any other Git client out there from the way it’s built (it interacts directly with the Git database on disk), to the way it works (you manipulate the repository graph instead of manipulating commits).

With GitUp, you get a truly efficient Git client for Mac:

  • A live and interactive repo graph (edit, reorder, fixup, merge commits…),
  • Unlimited undo / redo of almost all operations (even rebases and merges),
  • Time Machine like snapshots for 1-click rollbacks to previous repo states,
  • Features that don’t even exist natively in Git like a visual commit splitter or a unified reflog browser,
  • Instant search across the entire repo including diff contents,
  • A ridiculously fast UI, often faster than the command line.

GitUp was created by @swisspol in late 2014 as a bet to reinvent the way developers interact with Git. After several months of work, it was made available in pre-release early 2015 and reached the top of Hacker News along with being featured by Product Hunt and Daring Fireball. 30,000 lines of code later, GitUp reached 1.0 mid-August 2015 and was released open source as a gift to the developer community.

Getting Started

Learn all about GitUp and download the latest release from http://gitup.co.

Read the docs and use GitHub Issues for support & feedback.

Releases notes are available at https://github.com/git-up/GitUp/releases. Builds tagged with a v (e.g. v1.2.3) are released on the "Stable" channel, while builds tagged with a b (e.g. b1234) are only released on the "Continuous" channel. You can change the update channel used by GitUp in the app preferences.

To build GitUp yourself, simply run the command git clone --recursive https://github.com/git-up/GitUp.git in Terminal, then open the GitUp/GitUp.xcodeproj Xcode project and hit Run.

IMPORTANT: If you do not have an Apple ID with a developer account for code signing Mac apps, the build will fail with a code signing error. Simply delete the "Code Signing Identity" build setting of the "Application" target to work around the issue:

Alternatively, if you do have a developer account, you can create the file "Xcode-Configurations/DEVELOPMENT_TEAM.xcconfig" with the following build setting as its content:

DEVELOPMENT_TEAM = [Your TeamID]

For a more detailed description of this, you can have a look at the comments at the end of the file "Xcode-Configurations/Base.xcconfig".

GitUpKit

GitUp is built as a thin layer on top of a reusable generic Git toolkit called "GitUpKit". This means that you can use that same GitUpKit framework to build your very own Git UI!

GitUpKit has a very different goal than ObjectiveGit. Instead of offering extensive raw bindings to libgit2, GitUpKit only uses a minimal subset of libgit2 and reimplements everything else on top of it (it has its own "rebase engine" for instance). This allows it to expose a very tight and consistent API, that completely follows Obj-C conventions and hides away the libgit2 complexity and sometimes inconsistencies. GitUpKit adds on top of that a number of exclusive and powerful features, from undo/redo and Time Machine like snapshots, to entire drop-in UI components.

Architecture

The GitUpKit source code is organized as 2 independent layers communicating only through the use of public APIs:

Base Layer (depends on Foundation only and is compatible with OS X and iOS)

  • Core/: wrapper around the required minimal functionality of libgit2, on top of which is then implemented all the Git functionality required by GitUp (note that GitUp uses a slightly customized fork of libgit2)
  • Extensions/: categories on the Core classes to add convenience features implemented only using the public APIs

UI Layer (depends on AppKit and is compatible with OS X only)

  • Interface/: low-level view classes e.g. GIGraphView to render the GitUp Map view
  • Utilities/: interface utility classes e.g. the base view controller class GIViewController
  • Components/: reusable single-view view controllers e.g. GIDiffContentsViewController to render a diff
  • Views/: high-level reusable multi-views view controllers e.g. GIAdvancedCommitViewController to implement the entire GitUp Advanced Commit view

IMPORTANT: If the preprocessor constant DEBUG is defined to a non-zero value when building GitUpKit (this is the default when building in "Debug" configuration), a number of extra consistency checks are enabled at run time as well as extra logging. Be aware that this overhead can significantly affect performance.

GitUpKit API

Using the GitUpKit API should be pretty straightforward since it is organized by functionality (e.g. repository, branches, commits, interface components, etc...) and a best effort has been made to name functions clearly.

Regarding the "Core" APIs, the best way to learn them is to peruse the associated unit tests - for instance see the branch tests for the branch API.

Here is some sample code to get you started (error handling is left as an exercise to the reader):

Opening and browsing a repository:

// Open repo
GCRepository* repo = [[GCRepository alloc] initWithExistingLocalRepository:<PATH> error:NULL];

// Make sure repo is clean
assert([repo checkClean:kGCCleanCheckOption_IgnoreUntrackedFiles error:NULL]);

// List all branches
NSArray* branches = [repo listAllBranches:NULL];
NSLog(@"%@", branches);

// Lookup HEAD
GCLocalBranch* headBranch;  // This would be nil if the HEAD is detached
GCCommit* headCommit;
[repo lookupHEADCurrentCommit:&headCommit branch:&headBranch error:NULL];
NSLog(@"%@ = %@", headBranch, headCommit);

// Load the *entire* repo history in memory for fast access, including all commits, branches and tags
GCHistory* history = [repo loadHistoryUsingSorting:kGCHistorySorting_ReverseChronological error:NULL];
assert(history);
NSLog(@"%lu commits total", history.allCommits.count);
NSLog(@"%@\n%@", history.rootCommits, history.leafCommits);

Modifying a repository:

// Take a snapshot of the repo
GCSnapshot* snapshot = [repo takeSnapshot:NULL];

// Create a new branch and check it out
GCLocalBranch* newBranch = [repo createLocalBranchFromCommit:headCommit withName:@"temp" force:NO error:NULL];
NSLog(@"%@", newBranch);
assert([repo checkoutLocalBranch:newBranch options:0 error:NULL]);

// Add a file to the index
[[NSData data] writeToFile:[repo.workingDirectoryPath stringByAppendingPathComponent:@"empty.data"] atomically:YES];
assert([repo addFileToIndex:@"empty.data" error:NULL]);

// Check index status
GCDiff* diff = [repo diffRepositoryIndexWithHEAD:nil options:0 maxInterHunkLines:0 maxContextLines:0 error:NULL];
assert(diff.deltas.count == 1);
NSLog(@"%@", diff);

// Create a commit
GCCommit* newCommit = [repo createCommitFromHEADWithMessage:@"Added file" error:NULL];
assert(newCommit);
NSLog(@"%@", newCommit);

// Restore repo to saved snapshot before topic branch and commit were created
BOOL success = [repo restoreSnapshot:snapshot withOptions:kGCSnapshotOption_IncludeAll reflogMessage:@"Rolled back" didUpdateReferences:NULL error:NULL];
assert(success);
  
// Make sure topic branch is gone
assert([repo findLocalBranchWithName:@"temp" error:NULL] == nil);
  
// Update workdir and index to match HEAD
assert([repo resetToHEAD:kGCResetMode_Hard error:NULL]);

Complete Example #1: GitDown

GitDown is a very basic app that prompts the user for a repo and displays an interactive and live-updating list of its stashes (all with ~20 lines of code in -[AppDelegate applicationDidFinishLaunching:]):

Through GitUpKit, this basic app also gets for free unlimited undo/redo, unified and side-by-side diffs, text selection and copy, keyboard shortcuts, etc...

This source code also demonstrates how to use some other GitUpKit view controllers as well as building a customized one.

Complete Example #2: GitDiff

GitDiff demonstrates how to create a view controller that displays a live updating diff between HEAD and the workdir à la git diff HEAD:

Complete Example #3: GitY

GitY is a GitX clone built using GitUpKit and less than 200 lines of code:

Complete Example #4: iGit

iGit is a test iOS app that simply uses GitUpKit to clone a GitHub repo and perform a commit.

Contributing

See CONTRIBUTING.md.

Credits

Also a big thanks to the fine libgit2 contributors without whom GitUp would have never existed!

License

GitUp is copyright 2015-2018 Pierre-Olivier Latour and available under GPL v3 license. See the LICENSE file in the project for more information.

IMPORTANT: GitUp includes some other open-source projects and such projects remain under their own license.

Comments
  • GitUp. libgit2 updated. v1.3.0

    GitUp. libgit2 updated. v1.3.0

    This PR updates libgit2 to version v1.3.0.

    Related PR in gitup libgit2 fork. https://github.com/git-up/libgit2/pull/7

    You need to run sh ./update_xcode.sh script to generate necessary file features.h

    opened by lolgear 51
  • Safer remote operations

    Safer remote operations

    I find it too easy to accidentally break remote (force push, delete branches etc.). This PR adds small tweak for such alerts so that confirm button is not marked as default. Instead user needs to either use mouse or tab+space to confirm, so gets more time to make sure that's what they want. This is off by default, so existing users are not affected, needs to be explicitly enabled.

    Changes:

    • Added kGIAlertType_Danger type which is used for potential data loss changes (mainly remote).
    • Added GIViewControllerUserDefaultKey_SaferRemoteConfirmations user default which enables/disabled this behavior (default = false).
    • Added preferences UI in advanced settings that changes above user default.

    As far as UI change goes, it's convenient but can remain hidden preference with no UI as far as I'm concerned, set by handling defaults in Terminal - it's not something that will be tweaked daily. That's why I split PR into 2 commits; if UI change is not desired, I can remove last one, but having an option for preventing too easy data loss on remote is something I find crucial...

    The reasoning behind this is: all GitUp alerts are confirmable simply by pressing enter. While all dangerous operations are guarded behind additional alert and use stop icon to differentiate, the behavior is still the same - just press enter to confirm. This behavior makes GitUp different from git command line - all "force" operations need to be explicitly invoked by user (by adding --force flag for example). Thus it's too easy to accidentally hit enter as a matter of habit when alert appears. This is additionally dangerous when user is expecting there will be 2 alerts, but there's only one. For example delete remote branch when there's no local counterpart - GitUp shows local and remote branches together at the top of the view, using the same font and color, the only difference is presence of slash symbol for remotes, and it's not as pronounced in angled as it would be in horizontal text (I find this aspect better with https://github.com/git-up/GitUp/pull/23).

    opened by tomaz 36
  • Support for macOS Mojave's dark mode

    Support for macOS Mojave's dark mode

    I thought I'd create an issue to track dark mode support on macOS Mojave. I have a branch set up that has some preliminary support (it also has what I think is a slightly nicer fix for #459, and some other improvements). Here's what it looks like currently:

    screen shot 2018-06-12 at 00 37 40 screen shot 2018-06-12 at 00 38 31 screen shot 2018-06-12 at 00 38 50

    Is there anyone else working on this?

    enhancement 
    opened by saagarjha 31
  • Faster graph rendering for repositories with huge amount of branches.

    Faster graph rendering for repositories with huge amount of branches.

    We have a huge repo at work (~22000 branches at the moment) and GitUp is really slow on it.

    While profiling it turns to be that GitUp makes a lot of comparisons while building an object graph. instruments2 2015-08-19 14-05-05

    I have made a special optimised class which is much faster (also it checks SHA strings, not objects). According to Instruments, it is not the heaviest stack trace anymore (and the app seems to be far more usable on our repo right now).

    opened by mandrigin 31
  • GitUp hangs with private GitHub orgs when using HTTPS

    GitUp hangs with private GitHub orgs when using HTTPS

    Love the GitUp, thank you very much. Want to introduce it at work where we use a private org to store many of our repos. I have zero problems/challenges with GitUp on my public repos but cannot interact with repos in our private org.

    When I try to push, I am prompted by the OSX keychain helper for user/pass and then it sits in a Remote operation in progress state.

    bug 
    opened by stevetarver 28
  • Linux support

    Linux support

    I'd love to play with this tool on Linux. Is any porting planned? What would be the main challenges for a port (I imagine the GUI toolkit being the likely biggest -- only? -- issue)?

    question 
    opened by severin-lemaignan 27
  • Resolve name conflicts caused by symlinks while moving items to trash

    Resolve name conflicts caused by symlinks while moving items to trash

    Without the fix "Discard All" action could fail in the middle if there's a symlink in Trash with the same name as one of the items being discarded.

    This scenario is pretty common when working with CocoaPods (iOS/Mac dependency management tool).

    I'm not sure if this is a good solution performance-wise. Another option is to usestat() instead of -fileExistsAtPath:.

    I AGREE TO THE GITUP CONTRIBUTOR LICENSE AGREEMENT

    -fileExistsAtPath: checklist:

    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUp/Application/AppDelegate.m#L563 — switched to -fileOrSymlinkExistsAtPath:
    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUp/Application/AppDelegate.m#L594 — switched to -fileOrSymlinkExistsAtPath:
    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Core/GCLiveRepository.m#L524 — snapshot loading, files aren't supposed to be symlink
    • [ ] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Extensions/GCRepository+Index.m#L119 — I don't know how does conflict resolving work for symlinks.
    • [ ] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Extensions/GCRepository+Utilities.m#L144 — I'm not sure how to handle moving of symlinks.
    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Extensions/GCRepository+Utilities.m#L515
    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Core/GCRepository.m#L208 — private app data path getter, symlinks aren't expected
    • [ ] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Core/GCSubmodule.m#L158 — the check is faulty if there's a symlink at the path of submodule, but I've found that -[GCSubmodule checkSubmoduleInitialized:error:] also doesn't like symlinks and decided not to touch it this check at all.
    • [x] https://github.com/git-up/GitUp/blob/59ab927d0a3f86671ce5045ab5c47131bba4a199/GitUpKit/Utilities/GIViewController+Utilities.m#L142 — broken symlinks are staged & committed.
    opened by nikolaykasyanov 22
  • Animated transition in/out of Quick View

    Animated transition in/out of Quick View

    As Quick View feels a lot like Quick Look, I thought it would be nice to have some smooth transitions. (It would be nice for the title bar to fade at the same time, but I didn't do that in this commit.)

    • Use 2 snapshot layers to animate the transition in/out of Quick View
    • Rename Document's _containerView to _mapContainerView, to make its purpose more evident
    • Link QuartzCore.framework
    opened by jtbandes 21
  • GitUp. libgit2 main branch after v1.1.1

    GitUp. libgit2 main branch after v1.1.1

    This PR updates libgit2 to version v1.1.1 ( actually, a main branch after version 1.1.1 ). https://github.com/libgit2/libgit2/commit/e65229ee972c113413eeca77853213352129bd47

    The related branch with required libgit2 updates can be found at https://github.com/lolgear/libgit2/tree/gitup_libgit2_main_after_v1.1.1

    I would like to open a PR for git-up/libgit2 fork, but it requires to update libgit2 branch.

    Related PR in gitup libgit2 fork. https://github.com/libgit2/libgit2/pull/6001

    opened by lolgear 20
  • Failed to start SSH session: Unable to exchange encryption keys

    Failed to start SSH session: Unable to exchange encryption keys

    Despite being able to successfully fetch and push via SSH from the Terminal, I am unable to do either from GitUp. I'm unable to identify the source of the error, however a quick google search of the error message yielded this issue in the gitfs project. Maybe GitUp requires a libssh2 dependency update?

    screen shot 2016-11-23 at 4 24 32 pm question 
    opened by egracer 18
  • SHA-1 RSA ssh key error

    SHA-1 RSA ssh key error

    Per https://github.blog/2021-09-01-improving-git-protocol-security-github/, Github is discontinuing support for SHA-1 RSA ssh keys as of 2022-1-11. Further down in that page it's mentioned that libssh2 doesn't have support for SHA-2 RSA keys yet (though this PR adds it and was merged 4 days ago).

    Given the prevalence of SHA-2 RSA ssh keys (the default for ssh-keygen), I suspect many will run into this. Github recommends switching to an ECDSA key.

    [Edit] I can confirm that switching to an ECDSA key works (ssh-keygen -t ecdsa, update .ssh/config).

    opened by riggs 17
  • Refactoring. MRC removal. Part three.

    Refactoring. MRC removal. Part three.

    • kit: interface graph mrc has been removed.

    This PR is third PR in series of MRC removal PRs. Part two. https://github.com/git-up/GitUp/pull/857

    This PR removes MRC from

    • GIGraph
    opened by lolgear 2
  • Build from source succeeds but crashes

    Build from source succeeds but crashes

    After changing the code-signing identities (signed to run locally) and hitting the run button on Xcode, as per the instructions on the README file, the build successfully completes but I do not see a release version of the application stored somewhere on disk. Nevertheless, Xcode automatically runs the built executable and it crashes, leaving the following debug messages.

    GitUp 1 GitUp 2

    Could you please provide some instructions as to how I can fix this? Thank you.


    P.S. I'm currently running Xcode 14.0.1 on macOS Monterey 12.6, although I plan to upgrade to macOS Ventura later today.

    opened by j-rahman 0
  • Stashed change selected is not persisted across changed tabs

    Stashed change selected is not persisted across changed tabs

    Steps:

    1. Have at least 2 stashed changes in the "stashes" (CMD+3)
    2. Open "stashes" (CMD+3) and select 2nd stash, so that it becomes highlighted
    3. Open another tab, e.g. a tree (CMD+1) or a commit editor (CMD+2)
    4. Go back to the "stashes" (CMD+3)

    Expected result:

    • The 2nd stash is still highlighted and selected

    Actual result:

    • The selection always resets to the 1st stash regardless of what has been selected before.
    opened by richardtop 0
  • Can not open merge tool

    Can not open merge tool

    Click the button, nothing happened.

    gitup version: Version 1.3.2 (1045) file merge version: Version 2.11 (21012) macos version: macos Monterey 12.5.1 Apple M1

    image
    opened by pys1992 1
  • ERROR: The project you were looking for could not be found or you don't have permission to view it.

    ERROR: The project you were looking for could not be found or you don't have permission to view it.

    Not quite sure what triggers this, I get this error on all the projects from one company that talk to gitlab.com: Looks like this whenever I pull/push:

    image

    Any ideas how to reproduce this further? Is there some logging I can enable to get to the root cause?

    Of course everything works fine from the shell…

    opened by dwt 2
Releases(v1.3.2)
  • v1.3.2(Jun 4, 2022)

    What's Changed

    • Fix #792 Missing Image Comparison by @Stengo in https://github.com/git-up/GitUp/pull/795
    • Select two commits for diff by @chargenius in https://github.com/git-up/GitUp/pull/781
    • Fixes clipped toolbar item in macOS Monterey
    • Minimum version now macOS 10.11 (we'll be bumping to 10.13 relatively soon)

    New Contributors

    • @chargenius made their first contribution in https://github.com/git-up/GitUp/pull/781

    Full Changelog: https://github.com/git-up/GitUp/compare/v1.3.1...v1.3.2

    Source code(tar.gz)
    Source code(zip)
    GitUp.zip(9.37 MB)
  • v1.3.1(Dec 13, 2021)

  • v1.3(Nov 30, 2021)

    • Image diffing preview support #748 @Stengo
    • Git core.hooksPath support #744 @maku693
    • Sparkle updates made optional #776 @lucasderraugh
    • Command line option -t to open in new tab and -h for help. #734 @lucasderraugh
    • Small bug fixes around pre-10.14 releases and preference pane incorrectly loading defaults @lucasderraugh

    Sparkle updates that were previously set to automatic will stay automatic unless you explicitly opt out. To be prompted for updates, run defaults delete co.gitup.mac SUAutomaticallyUpdate

    Screen Shot 2021-11-30 at 2 01 26 PM Source code(tar.gz)
    Source code(zip)
    GitUp.zip(9.46 MB)
  • v1.2(Jan 21, 2021)

    • Redesign for Big Sur
    • M1 Support
    • Green now means additions, blue is modifications
    • Double click branch/commit in search to checkout
    • Small fixes for keychain, drawing issues, performance and more! Thanks to @zwaldowski, @fo2rist, @ilg, @jasonhan-vassar, & @mdznr for your hard work.

    Screen Shot 2021-01-21 at 10 30 06 AMScreen Shot 2021-01-21 at 10 30 06 AM

    Source code(tar.gz)
    Source code(zip)
    GitUp.zip(9.26 MB)
  • v1.1.3(Apr 29, 2020)

    • Checkout branches from search without showing remotes on map (@lucasderraugh)
    • Diff Splitter ordering matches map (@bentemple)
    • Fix double clicking title not expanding window (@mattia)
    • Notarization w/ Runtime Hardening (@lucasderraugh)
    • ⌫ on 2 branches at same commit now selects non-HEAD (@lolgear)

    Screen_Recording_2020-03-28_at_3 17 04_PM

    Source code(tar.gz)
    Source code(zip)
    GitUp.zip(4.65 MB)
  • v1.1.2(Feb 3, 2020)

    • Adjustable text size for diff views (@douglashill)
    • Improvements on graph view speeds with large number of branches (@zwaldowski)
    • Other refactors

    Faster staging of multiple files was pushed to the next stable build.

    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Dec 9, 2019)

    • Dark Mode improvements using standard controls
    • Fix Open in Terminal + iTerm support
    • Drag repo folder onto Welcome window to open
    • Copy commit message from Graph
    • Emoji as first character message width fix
    • ⌥ in Map view navigates off branch
    Source code(tar.gz)
    Source code(zip)
  • v1.1(Aug 22, 2019)

    • Dark Mode (please give feedback if there are colors you feel are "off")
      • Defaults to System Pref (can be explicit in GitUp Preferences)
    • Addresses crashes in Catalina
    • Files can be dragged out of diff views onto Terminal or other applications that can read them
    • DiffMerge tool support
    • Small UI fixes around tooltips and view alignment

    Special thanks to @zwaldowski, @douglashill, @saagarjha and others who contributed to dark mode support

    Source code(tar.gz)
    Source code(zip)
  • b1030(Aug 3, 2019)

    • Dark Mode (please give feedback if there are colors you feel are "off")
    • Addresses crashes in Catalina
    • Files can be dragged out of diff views onto Terminal or other applications that can read them
    • DiffMerge tool support
    • Small UI fixes around tooltips and view alignment

    Special thanks to @zwaldowski, @douglashill, @saagarjha and others who contributed to dark mode support

    Source code(tar.gz)
    Source code(zip)
  • v1.0.11(Feb 28, 2018)

    • Updated OpenSSL and libssh2 to latest versions to fix GitHub pushes and pulls over SSH not working anymore
    • Also updated SQLite to latest version
    Source code(tar.gz)
    Source code(zip)
  • b1026(Feb 22, 2018)

  • v1.0.9(Sep 26, 2017)

  • v1.0.8(Sep 18, 2017)

  • v1.0.7(Mar 6, 2017)

    • @swisspol Updated to latest libgit2
    • @swisspol Added basic support for Git LFS
    • @antons Fixed off-center search field placeholders
    • @tbodt Remove options from gitup tool help
    Source code(tar.gz)
    Source code(zip)
  • v1.0.6(Sep 1, 2016)

  • b1020(Sep 1, 2016)

  • b1019(Sep 1, 2016)

  • b1018(Aug 31, 2016)

    • @lucasderraugh Keep selected row when dropping a stash
    • @mtrudel Added preference to disable welcome window
    • @nikolaykasyanov Resolved name conflicts caused by symlinks while moving items to trash
    • @anton-simakov Added down arrow key shortcut to open recent menu in welcome window
    • @swisspol Added fully anonymous Google Analytics tracking to get an idea of how many people are using GitUp and where they are in the world
    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(May 2, 2016)

  • b1017(Apr 21, 2016)

    • @JamesBucanek Make the view options for the Map view persistent by storing them in the repository
    • @swisspol Fixed crash when attempting to clone invalid repository URL
    • @swisspol Make sure view menu is properly disabled while in conflict resolution mode
    Source code(tar.gz)
    Source code(zip)
  • b1016(Apr 1, 2016)

    • @swisspol Updated libgit2 again to fix regression in submodule status
    • @swisspol Fixed discarding untracked files not working in Simple Commit view
    Source code(tar.gz)
    Source code(zip)
  • b1015(Mar 28, 2016)

    • @swisspol Updated libgit2
    • @swisspol Preserve author when cherry-picking commits
    • @swisspol Handle running out of disk space when writing snapshots to disk
    • @lapfelix Add "Show in Finder…" to Diff view contextual menu
    • @deyton Improve Welcome window behavior
    • @danpecher and @gouch Fixed typos
    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Mar 2, 2016)

    • @swisspol Updated all forums links to now point to GitHub wiki and issues
    • @swisspol Fixed recursive initialization of submodules not always working
    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Jan 11, 2016)

  • b1010(Dec 12, 2015)

    • @shpakovski Redesigned branch labels in Map view
    • @hugocf Fixed tooltips for previous / next buttons in Quick View
    • @tomaz Safer confirmations for dangerous remote operations
    • @swisspol Fixed a crash introduced with updated "Set Upstream" menu command
    Source code(tar.gz)
    Source code(zip)
  • b1009(Dec 3, 2015)

  • v1.0.2(Dec 3, 2015)

    • @swisspol Allow opening any type of folder as Git repositories
    • @swisspol Fixed auto-updating not working on El Capitan
    • @swisspol Reduce max diffable file size from 32 MB to 8
    • @swisspol Don't deselect commit in Map view if no commit is selected in side list
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Oct 2, 2015)

    • @00Davo Display both committer and author dates in Quick View as well as full SHA1
    • @swisspol Fixed Quick View left pane not resizing its contents
    Source code(tar.gz)
    Source code(zip)
  • b1005(Oct 1, 2015)

  • b1004(Sep 15, 2015)

    • @swisspol Fixed a bug in libgit2 where GitUp would crash on repos with thousands of empty directories in .git/refs/
    • @swisspol Built using Xcode 7
    Source code(tar.gz)
    Source code(zip)
Xcode Plugin helps you find missing methods in your class header, protocols, and super class, also makes fast inserting.

FastStub-Xcode Life is short, why waste it on meaningless typing? What is it? A code generating feature borrowed from Android Studio. FastStub automat

mrpeak 509 Jun 29, 2022
macOS status bar app to automatically fetch Git repositories.

Fetcher About macOS status bar app to automatically fetch Git repositories. License Project is released under the terms of the MIT License. Repository

JD Gadina 4 Nov 5, 2021
Ejercicio de git

testdam Ejercicio git Creo un nuevo repositorio GitHub Invito al compañero al repositorio También entro yo al repositorio que ha creado el compañero d

ArturViaderdev 0 Nov 4, 2021
A Version Control Kit that allows Aurora Editor to do everything git related.

Version Control Kit AuroraEditor Version Control Kit allows us to perform actions like commiting, pulling, pushing and fetching history of whole files

Aurora Editor 4 Nov 10, 2022
macOS SwiftUI manager new window's life

WindowManager macOS swiftUI manager window's life cycle Usage // open DocumentsView WindowUtil.makeWindow(MyDocumentsView.self, viewType: .document)

Daniel 4 Oct 26, 2022
DMSi has a secure access room with a card reader on each side.

Interview - Card Reader DMSi has a secure access room with a card reader on each side. You must scan to enter and scan to exit. However, we've been ha

Hundter Biede 1 Oct 19, 2021
The most powerful Event-Driven Observer Pattern solution the Swift language has ever seen!

Event-Driven Swift Decoupling of discrete units of code contributes massively to the long-term maintainability of your project(s). While Observer Patt

Flowduino 4 Nov 14, 2022
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs!

SwiftGen SwiftGen is a tool to automatically generate Swift code for resources of your projects (like images, localised strings, etc), to make them ty

null 8.3k Nov 19, 2022
A react native interface for integrating payments using Braintree

A react native interface for integrating payments using Braintree

eKreative 16 Oct 5, 2022
SwiftyXPC - a wrapper for Apple’s XPC interprocess communication library that gives it an easy-to-use, idiomatic Swift interface.

SwiftyXPC is a wrapper for Apple’s XPC interprocess communication library that gives it an easy-to-use, idiomatic Swift interface.

null 34 Nov 13, 2022
This is a Swift Package bundling different Train APIs into one simple Swift interface.

This is a Swift Package bundling different Train APIs into one simple Swift interface.

ICE Buddy 8 Jul 5, 2022
Runtime Mobile Security (RMS) 📱🔥 - is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime

Runtime Mobile Security (RMS) ?? ?? by @mobilesecurity_ Runtime Mobile Security (RMS), powered by FRIDA, is a powerful web interface that helps you to

Mobile Security 1.9k Nov 13, 2022
Inject JavaScript to all websites!

Inject Javascript Safari Extension Hi, so, you want to Inject Javascript to a website? Great. Since this is a very basic (demo) project it has not tha

Wesley De Groot 6 Jun 7, 2022
Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Alaa Azab 0 Oct 7, 2021
MacLookup - Lookup for all Mac names, colors, model identifiers and part numbers

MacLookup Lookup for all Mac names, colors, model identifiers and part numbers.

Voyager Software Inc. 2 Jan 4, 2022
All my React Native examples

ReactNativeExamples All my React Native examples and experiements can be found here. This repo is divided into two sub folders, Instructions git clone

Joseph Khan 93 Oct 2, 2022
DBZ-Legends - A SwiftUI based app for all the DBZ peeps out there

DBZ-Legends Just a simple UI based app for all the DBZ fans. You can tap on the

Sougato Roy 2 Apr 5, 2022
A Swift library for Discord REST/Gateway API in all platforms.

swift-discord main develop A Swift library for Discord API. Package Products Discord, alias library that contains DiscordREST, DiscordGateway. Discord

swift-discord 3 Sep 30, 2022
Displays your HomeKit temperature sensors in your menu bar

Temperature Glance Displays your HomeKit temperature sensors in your menu bar Screenshot Note This is a very simple app that I made for myself but dec

Fernando Bunn 15 Nov 14, 2022