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

Related tags

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.

Issues
  • 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
  • New branch titles

    New branch titles

    The new format for branch titles which shows more information using branch colors.

    opened by shpakovski 33
  • 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
  • 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
  • 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
  • External Applications: Open in iTerm

    External Applications: Open in iTerm

    • [x] #227
    opened by lolgear 23
  • 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
  • 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 21
  • 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
  • Windows Separation Remastered: About

    Windows Separation Remastered: About

    • [x] About panel has been incapsulated.
    • [x] About panel has been moved to its own xib.
    • [x] About panel has been removed from MainMenu xib.
    opened by lolgear 20
  • Dropping a commit from branch

    Dropping a commit from branch

    Hereby I request support for dropping a commit from a branch, just like doing an interactive rebase and marking a commit with drop. The current feature where you can right-click a commit and delete it isn't the same – it deletes the commit for all branches.

    In general, I wish there were versions of these already available rebase-like operations that would only apply to the current branch.

    opened by neonb 0
  • Add

    Add "Copy Action Stamp" or similar functionality for reposurgeon-style action stamps

    Reposurgeon is a tool for performing quite complicated repository editing/importing/exporting. Gitup works very well in concert with reposurgeon for reviewing the repositories and finding commits etc.

    Reposurgeon has a concept of an "Action Stamp" which is a timestamp combined with a user email which can uniquely identify a commit in a repository across rebuilds of the repository.

    http://www.catb.org/~esr/reposurgeon/repository-editing.html#reference-lifting

    An action stamp is an RFC3339 timestamp, followed by a ‘!’, followed by an author email address (author is preferred rather than committer because that timestamp is not changed when a patch is replayed on to a branch, but the code to make a stamp for a commit will fall back to the committer if no author field is present). It attempts to refer to a commit without being VCS-specific. Thus, instead of commit 304a53c2 or r2355, 2011-10-25T15:11:[email protected].

    <timestamp!email>

    Reposurgeon suggests the exact format above,

    <YYYY-MM-DDThh:mm:[email protected]> with UTC

    Gitup can show the time and committer of a given commit, and it would be amazingly super helpful if there was somehow an option to get the action stamp, whether by context menu, or by magic preference setting.

    An alias to get a stamp with git command line:

    [alias]
    	# git stamp <commit-ish> - print a reposurgeon-style action stamp
    	stamp = show -s --format='%cI!%ce'
    

    Thanks for your consideration

    opened by mrstux 0
  • Clarify the necessity of personal access token

    Clarify the necessity of personal access token

    Hi, Now that GitHub has effectively deprecated the use of account password for Git operations as of August 13, 2021, and the use of personal access token is mandatory regardless of the state of two factor authentication setting, the message below should be amended accordingly.

    210910

    https://github.com/git-up/GitUp/blob/78569b8f87f4fb5974c0cedb78449c00b7d69798/GitUp/Application/Base.lproj/AuthenticationWindowController.xib#L87

    opened by rinopo 0
  • GitUpKit. Replace Xcode project with SPM package.

    GitUpKit. Replace Xcode project with SPM package.

    It is possible to completely remove GitUpKit Xcode project and wrap GitUpKit in SPM package. There are two advantages.

    1. GitUpKit can be published ( some parts of it ) as SPM package.
    2. All boilerplate with Xcode project will gone.

    SPM package is convenient. Adding/removing targets, files. Adding/removing dependencies. Managing platforms and versions.

    opened by lolgear 1
  • Add option to filter out untracked files in Working Directory of Commit view

    Add option to filter out untracked files in Working Directory of Commit view

    It would be very helpful to be able to filter out untracked files when too many of them are present in working directory.

    opened by WorldTreeBug 0
  • Failed connecting to

    Failed connecting to "origin" remote: SSH could not execute request: Timed out waiting on socket

    Hello there, I have been using this excellent tool for nearly two years. As of today, I am getting: Failed connecting to "origin" remote: SSH could not execute request: Timed out waiting on socket whenever I try to pull or fetch. Using git pull / git fetch in command line mode works. Restarting Gitup or the Mac doesn't help. I did not change ssh key or update my OS so I do not know why all of a sudden this happened. Any ideas I can try? Thanks in advance!

    opened by BabaSalley 3
  • The logging system is outdated

    The logging system is outdated

    We have to update logging facility to os_log, because it is inconvenient to hook to logs. This system also uses sqlite3 to gather logs, but at modern OSes it is not required anymore ( everything is done by os_log ).

    opened by lolgear 1
  • 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 18
  • Add clone option to the startup menu

    Add clone option to the startup menu

    I think, having a "clone" button available in the "welcome" menu would be great, as it's far more often that I'd like to clone something from a remote repository than to create a new one. Also, Xcode has the "clone" menu option.

    Few people have already asked about how to clone a repository: #153, #743, so it's safe to assume, that even more people have never raised this issue even though they have the same question.

    Having "clone" button available would make experience working with GitUp so much faster and intuitive.

    Screen Shot 2021-06-26 at 8 07 57
    opened by richardtop 0
  • Support multiple identities

    Support multiple identities

    I suggest having support for multiple identities, which can include, for example:

    • Name
    • Email address
    • ssh key

    So, for example, each repository could be configured to have a committer identity which will be used. A similar feature in Tower app: https://www.git-tower.com/help/guides/working-copy/user-profiles/mac

    opened by richardtop 0
Releases(v1.2)
  • 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 2, 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 21, 2018)

  • v1.0.9(Sep 26, 2017)

  • v1.0.8(Sep 18, 2017)

  • v1.0.7(Mar 5, 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 1, 2016)

  • b1017(Apr 20, 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)
  • 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)
  • b1009(Dec 3, 2015)

  • 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(Sep 30, 2015)

  • b1004(Sep 14, 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)
  • b1002(Sep 5, 2015)

  • b1003(Sep 5, 2015)

    • @mandrigin Optimized performance for repositories with lots of branches
    • @jtbandes Added Quick View animation (requires enabling visual effects in Preferences)
    • @charlietran Browse HEAD Ancestors now shows the HEAD commit in the list
    • @swisspol Updated Sparkle to 1.11.0
    Source code(tar.gz)
    Source code(zip)
  • v1.0(Aug 18, 2015)

Filter to put OSA languages (AppleScript, JavaScript) into git, as if they where plain text-files

osagitfilter Filter to put OSA languages into a git-repository. So you can put your .scpt-file (AppleScript, JavaScript) into your git-repository, and

Doeke Zanstra 16 Sep 9, 2021
Mac OS X Git GUI

Xit Xit (pronounced "exit") is a graphical tool for working with git repositories. The overall goals are: A useful graphical interface for viewing and

David Catmull 743 Sep 23, 2021
GitHub notifications on your menu bar. Available on macOS, Windows Linux.

Gitify GitHub Notifications on your menu bar. Available on macOS, Windows and Linux. Gitify Mobile has been deprecated in favour of the official GitHu

Manos Konstantinidis 3.4k Sep 18, 2021
Simple collaboration from your desktop

GitHub Desktop GitHub Desktop is an open source Electron-based GitHub app. It is written in TypeScript and uses React. Where can I get it? Download th

GitHub Desktop 12.9k Sep 19, 2021
The best fork of the best lightweight, visual git client for macOS. Current development focus is on modernizing, bug fixing, and removing legacy git command line usage in favour of libgit2 and objective-git.

What is GitX? GitX is an OS X (MacOS) native graphical client for the git version control system. GitX has a long history of various branches and vers

GitX 408 Sep 10, 2021
Simple MacOS app to alert you when you have unread GitHub notifications

GithubNotify It sits in your menubar and changes color when you have unread github notifications. Quick install Grab the latest release, unzip, and ru

Erik Price 17 Sep 14, 2021
Managing Pull Requests and Issues For GitHub GitHub Enterprise

Trailer For maintained binaries and/or more info: Latest macOS version Latest iOS version Trailer for the command-line and Linux Trailer for Android N

Paul Tsochantaris 993 Sep 17, 2021
Gitee, OS X status bar application for Github

Gitee How many stars I got yesterday? What is the total stars number I got right now? Or, did someone follow me these days? As a practice of developin

Nightonke 1.1k Aug 26, 2021
🔥 GitHub contribution streak stat tracking menu bar app

Streaker ?? GitHub contribution streak & stat tracking menu bar app Installation Manual Download the latest version of Streaker from the GitHub releas

Jamie Weavis 143 Sep 16, 2021
A macOS application for tracking code review process

TeamStatus-for-GitHub A macOS status bar application for tracking code review process within the team. Download Prebuilt binary version of the app is

Marcin Religa 43 Jan 8, 2021
:cat: GitHub contributions app, for iOS, WatchOS, and OSX

?? Github contributions GitHub contributions is an app to follow your contributions on github, available for iOS ?? (with widget extension), Apple wat

Remi ROBERT 69 Jul 31, 2021