42

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.

3
  • "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 - 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 9:27

10 Answers 10

52

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.

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
11
  • 4
    Definitely the method I would use, since you get a well-maintained RPM installed rather than whatever your build tools created. Mar 7 '17 at 21:19
  • 3
    Just want note that it might not be secure to use 3rd party repos. Here is a blog post 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
  • 1
    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 7:46
  • 2
    It seems that the new instruction for setting up ius is: 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
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.

15

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/

6

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.

2
  • 1
    This is nice but only for x86_64 basearch currently
    – BoeroBoy
    Mar 2 '20 at 9:14
  • 1
    and how to make scl binaries system wide defaults
    – mmv-ru
    May 9 '20 at 23:37
3

What is working for me for CentOS 7.4:

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 git224

Ref:

2

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.

2

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
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
1
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*
1
  • 1
    You can give the URL directly to the yum module. You don't need to download it in a separate play. Sep 3 '21 at 16:09
1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.