61

I like to enable Git "Push to Deploy" on my CentOS 7 server. Currently I only can get Git 1.8.3.1 via yum. I need a newer version.

Do I have to build it from source or is there any repo I can use? I alreay added EPEL and elrepo but yum still gives me Git 1.8.3.1.

030
  • 5,901
  • 13
  • 68
  • 110
Oliver
  • 721
  • 1
  • 5
  • 5
  • "Push to deploy" means to use git hooks that get active upon a push. What functionality regarding this are you missing in the EL7 git version? I am successfully using Git 1.7.1 on EL6 for many such tasks. – Sven Jul 29 '15 at 15:59
  • 2
    @Sven Based on the need for a newer git version I'd rather say that he is referring to the Git 2.3 "Push to deploy", which allows you to push to a non-bare repository, and also have its working directory updated - https://github.com/blog/1957-git-2-3-has-been-released – andol Jul 29 '15 at 16:24
  • andol is right, I would like to use the "push to deploy" feature that is new with Git 2.3 – Oliver Jul 30 '15 at 09:27

11 Answers11

65

You could use a IUS repository (https://ius.io/) as provided on Git official site here or here. It contains prebuilt binaries for x86_64.

To do that, run (as root):

yum install epel-release
yum remove git
rpm -U https://centos7.iuscommunity.org/ius-release.rpm
yum install git2u

(centos7 can be replaced with centos6 or rhel{6,7} if you are not using CentOS).

Note: some users report that there is no more package called git2u. You can also try packages git222 or git224 in that case. Note: git2u is no longer valid. You can check in github for the latest IUS Git version. https://github.com/search?q=org%3Aiusrepo+topic%3Arpm+git&s=updated&type=repositories It worked for me using "sudo yum install git236".

Another option would be to use another RPM repository (i386 & x86_64):

sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
sudo yum install git

Note 2: as reported @alaindeseine in comments there is an issue accessing https://centos7.iuscommunity.org/ius-release.rpm. In that case use https://repo.ius.io/ius-release-el7.rpm

lospejos
  • 846
  • 1
  • 9
  • 8
  • 5
    Definitely the method I would use, since you get a well-maintained RPM installed rather than whatever your build tools created. – Ken Williams Mar 07 '17 at 21:19
  • 3
    Just want note that it might not be secure to use 3rd party repos. Here is a [blog post](https://linux-audit.com/missing-packages-do-not-trust-external-repositories/) dealing with that issue. – robsch Jun 12 '17 at 14:47
  • @robsch I completely agree with that, and I never will use external repos if required packages would be provided in standard/ofiicial repos. As always, it's a trade off subject. Anyway, we always should follow the "think twice before you do" strategy. – lospejos Jun 12 '17 at 16:03
  • 2
    I got `curl: (7) Failed to connect to centos7.iuscommunity.org port 443: Connection timed out` on `Amazon Linux AMI` Does anyone know how to solve it? – Van Tho Jun 15 '20 at 07:46
  • @VanTho IUS site may be down, please see my addition in my answer below – lospejos Jun 15 '20 at 11:30
  • https://centos7.iuscommunity.org/ currently gives me a certificate error, because the certificate is for laura.legalaccessplans.com I'd avoid it ius.io at least doesn't give certificate errors. – Jason S Sep 05 '20 at 14:17
  • 4
    It seems that the new instruction for setting up ius is: https://ius.io/setup. Also there is no package called `git2u` anymore. The new name should be `git224`: `yum install git224` works for me. – jdhao Mar 27 '21 at 11:39
  • Use `rpm --erase --nodeps git` instead of `yum remove git` or *golang* pkg will be removed because it depends on *git*. – Alex Jul 23 '21 at 13:35
  • Note that due to [endpoint rebranding](https://www.endpointdev.com/blog/2021/10/moving-to-endpointdev-dot-com/), the endpoint repo link should be changed to `https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm`. – jdhao Dec 10 '21 at 15:08
  • 2
    Works for me, but need to replace ``rpm -U https://centos7.iuscommunity.org/ius-release.rpm `` by ``yum install https://repo.ius.io/ius-release-el7.rpm`` – Alaindeseine Apr 20 '22 at 09:09
  • With `yum search git2` I found `git236`. – Liviu Oct 18 '22 at 18:28
18

I have this approach for CentOS 7.2:

rpm -U http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm \
    && yum install -y git

At the moment I have 2.10.0 GIT version.

Or for CentOS 7.1 the same path but wandisco-git-release-7-1.noarch.rpm.

You may inspect available releases http://opensource.wandisco.com/centos/7/git/x86_64/

Kirby
  • 1,009
  • 1
  • 10
  • 16
15

Building from source is quite straightforward. Digital Ocean has a nice guide on building Git from source on CentOS 7. Place the resulting binary in /usr/local/bin/ on your CentOS 7 system (which, by default, is included in your $PATH) and you're good to go.

Of course you would prefer packages/using the repo, however given your situation I would not hesitate building it myself.

For general information; Push to Deploy was introduced in Git 2.3.0. Make sure to use this version or above.

lauvdh
  • 151
  • 1
  • 2
12

What is working for me for CentOS 7:

yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum remove git
yum install git236

Ref:

Yerke
  • 103
  • 4
jdhao
  • 221
  • 2
  • 7
7

Red Hat maintains a software collection for Git 2.9:

https://www.softwarecollections.org/en/scls/rhscl/rh-git29/

This is the easiest and safest way to get Git 2.x on CentOS.

leoluk
  • 531
  • 6
  • 11
5

These days, a proper git package (not git2u) is available on endpoint:

yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum -y install git
DomQ
  • 309
  • 3
  • 6
3

The "Inline with Upstream Stable" (https://ius.io/) repo looks pretty good to me.

It has git 2.x rpms which play nicely with the rpm conflicts system.

You can find git rpms here:

https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/repoview/letter_g.group.html

I found the SCL (Software Collections) way to be more cumbersome. They're very careful not to interfere with the user who doesn't use them. A bit over careful in my opinion.

1

Here are the steps for those who can't use non standard/external repositories on Centos 7.6.

These steps are also suitable to be placed in a Dockerfile (if you don't want to upgrade Centos version)

yum update -y
yum install wget which zlib-devel perl-devel -y
wget https://github.com/git/git/archive/v2.26.2.tar.gz -O /tmp/git.tar.gz
cd /tmp && tar -zxf git.tar.gz
cd /tmp/git-2.26.2
make configure
# ./configure # to overwrite your existing git and YUM managed git locations
./configure --prefix=/usr/local # standard way
make install
whereis git
laimison
  • 579
  • 2
  • 9
  • 17
1

If somebody is looking for an ansible script running on RHEL7:

    - name: Remove build-in GIT
      yum:
        name: git
        state: absent
      become: true      

    - name: Download epel-release
      get_url:
        url: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
        dest: ~/epel-release-latest-7.noarch.rpm

    - name: Install epel-release 
      yum:
        name: epel-release-latest-7.noarch.rpm
        state: present
      become: true

    - name: Download uis-release
      get_url:
        url: https://repo.ius.io/ius-release-el7.rpm
        dest: ~/ius-release-el7.rpm

    - name: Install uis-release
      yum:
        name: ius-release-el7.rpm
        state: present
      become: true

    - name: Install git 224
      yum:
        name: git224.x86_64
        state: present
      become: true 

If you are looking for some other git version, check available versions after installing uis-release using

sudo yum list git*
30thh
  • 111
  • 2
0

On RHEL 7.8, I got conflict errors when trying to yum upgrade git (from version 1.8 to 2.24):

Error: git224-core conflicts with git-1.8.3.1-23.el7_8.x86_64
Error: git224 conflicts with git-1.8.3.1-23.el7_8.x86_64
Error: git224-perl-Git conflicts with perl-Git-1.8.3.1-23.el7_8.noarch
You could try using --skip-broken to work around the problem

To workaround this I used yum shell commands:

$ sudo yum shell
> erase git
> install git224
> run
  ...

  Removed:
    git.x86_64 0:1.8.3.1-23.el7_8                                                                     

  Dependency Removed:
    perl-Git.noarch 0:1.8.3.1-23.el7_8                                                                

  Installed:
    git224.x86_64 0:2.24.3-1.el7.ius                                                                  

  Dependency Installed:
    git224-core.x86_64 0:2.24.3-1.el7.ius            
    git224-core-doc.noarch 0:2.24.3-1.el7.ius       
    git224-perl-Git.noarch 0:2.24.3-1.el7.ius       

> quit

$ git --version
git version 2.24.3
JohnK
  • 105
  • 4
Noam Manos
  • 307
  • 1
  • 2
  • 8
0

There is an official, made by RedHat, package with git 2.27 available for both x86_64 and ARM64 available in Software Collections.

You can install it with:

yum install -y centos-release-scl-rh
yum install -y rh-git227-git

Note that by design it is installed under /opt and is not in your PATH by default.

You can easily make it the preferred git binary f.e. with a symlink:

ln -s /opt/rh/rh-git227/root/usr/bin/git /usr/local/bin/git

UPDATE: oups, sorry, while this package is a worth consideration way to go, it’s not that easy to use software collections. You have to enable the collection, I will update the answer later.

Greg Dubicki
  • 1,239
  • 1
  • 17
  • 33