32

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.

  • "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
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.

41

You could use a IUS repository (https://ius.io/) as provided on Git official site here: https://git-scm.com/download/linux

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).

Another option would be to use another RPM repository:

sudo yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
sudo yum install git
  • 4
    Definitely the method I would use, since you get a well-maintained RPM installed rather than whatever your build tools created. – Ken Williams Mar 7 '17 at 21:19
  • 2
    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
  • 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
  • @VanTho IUS site may be down, please see my addition in my answer below – lospejos Jun 15 '20 at 11:30
13

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/

4

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.

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

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

On RHEL 7.8, I got conflict errors when trying to yum upgarde 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
0

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

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.