linux学习之centos(四):git的安装

整个流程如下:(参考文章:linux安装git方法

[carsonzhu@localhost 桌面]$ wget https://github.com/git/git/archive/v2.8.3.zip
--2016-05-23 14:43:32--  https://github.com/git/git/archive/v2.8.3.zip
正在解析主机 github.com... 192.30.252.130
正在连接 github.com|192.30.252.130|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://codeload.github.com/git/git/zip/v2.8.3 [跟随至新的 URL]
--2016-05-23 14:43:34--  https://codeload.github.com/git/git/zip/v2.8.3
正在解析主机 codeload.github.com... 192.30.252.162
正在连接 codeload.github.com|192.30.252.162|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [application/zip]
正在保存至: “v2.8.3”

    [                    <=>                ] 7,048,716   1.44M/s   in 5.2s    

2016-05-23 14:43:40 (1.30 MB/s) - “v2.8.3” 已保存 [7048716]
[root@localhost 桌面]# unzip v2.8.3
[root@localhost 桌面]# cp -r git-2.8.3 /opt/git2.8.3
[root@localhost 桌面]# cd /opt/git2.8.3
[root@localhost git2.8.3]# ls
abspath.c                   git-sh-i18n.sh       run-command.c
aclocal.m4                  git-sh-setup.sh      run-command.h
advice.c                    git.spec.in          send-pack.c
advice.h                    git-stash.sh         send-pack.h
alias.c                     git-submodule.sh     sequencer.c
alloc.c                     git-svn.perl         sequencer.h
archive.c                   GIT-VERSION-GEN      server-info.c
archive.h                   gitweb               setup.c
archive-tar.c               git-web--browse.sh   sha1-array.c
archive-zip.c               gpg-interface.c      sha1-array.h
argv-array.c                gpg-interface.h      sha1_file.c
argv-array.h                graph.c              sha1-lookup.c
attr.c                      graph.h              sha1-lookup.h
attr.h                      grep.c               sha1_name.c
base85.c                    grep.h               shallow.c
bisect.c                    hashmap.c            shell.c
bisect.h                    hashmap.h            sh-i18n--envsubst.c
blob.c                      help.c               shortlog.h
blob.h                      help.h               show-index.c
block-sha1                  hex.c                sideband.c
branch.c                    http-backend.c       sideband.h
branch.h                    http.c               sigchain.c
builtin                     http-fetch.c         sigchain.h
builtin.h                   http.h               split-index.c
bulk-checkin.c              http-push.c          split-index.h
bulk-checkin.h              http-walker.c        strbuf.c
bundle.c                    ident.c              strbuf.h
bundle.h                    imap-send.c          streaming.c
cache.h                     INSTALL              streaming.h
cache-tree.c                khash.h              string-list.c
cache-tree.h                kwset.c              string-list.h
check_bindir                kwset.h              submodule.c
check-builtins.sh           levenshtein.c        submodule-config.c
check-racy.c                levenshtein.h        submodule-config.h
color.c                     LGPL-2.1             submodule.h
color.h                     line-log.c           symlinks.c
column.c                    line-log.h           t
column.h                    line-range.c         tag.c
combine-diff.c              line-range.h         tag.h
command-list.txt            list-objects.c       tar.h
commit.c                    list-objects.h       tempfile.c
commit.h                    ll-merge.c           tempfile.h
commit-slab.h               ll-merge.h           templates
compat                      lockfile.c           test-chmtime.c
config.c                    lockfile.h           test-config.c
config.mak.in               log-tree.c           test-ctype.c
config.mak.uname            log-tree.h           test-date.c
configure.ac                mailinfo.c           test-delta.c
connect.c                   mailinfo.h           test-dump-cache-tree.c
connected.c                 mailmap.c            test-dump-split-index.c
connected.h                 mailmap.h            test-dump-untracked-cache.c
connect.h                   Makefile             test-fake-ssh.c
contrib                     match-trees.c        test-genrandom.c
convert.c                   merge-blobs.c        test-hashmap.c
convert.h                   merge-blobs.h        test-index-version.c
copy.c                      merge.c              test-line-buffer.c
COPYING                     merge-recursive.c    test-match-trees.c
credential.c                merge-recursive.h    test-mergesort.c
credential-cache.c          mergesort.c          test-mktemp.c
credential-cache--daemon.c  mergesort.h          test-parse-options.c
credential.h                mergetools           test-path-utils.c
credential-store.c          name-hash.c          test-prio-queue.c
csum-file.c                 notes.c              test-read-cache.c
csum-file.h                 notes-cache.c        test-regex.c
ctype.c                     notes-cache.h        test-revision-walking.c
daemon.c                    notes.h              test-run-command.c
date.c                      notes-merge.c        test-scrap-cache-tree.c
decorate.c                  notes-merge.h        test-sha1-array.c
decorate.h                  notes-utils.c        test-sha1.c
delta.h                     notes-utils.h        test-sha1.sh
diff.c                      object.c             test-sigchain.c
diffcore-break.c            object.h             test-string-list.c
diffcore-delta.c            pack-bitmap.c        test-submodule-config.c
diffcore.h                  pack-bitmap.h        test-subprocess.c
diffcore-order.c            pack-bitmap-write.c  test-svn-fe.c
diffcore-pickaxe.c          pack-check.c         test-urlmatch-normalization.c
diffcore-rename.c           pack.h               test-wildmatch.c
diff-delta.c                pack-objects.c       thread-utils.c
diff.h                      pack-objects.h       thread-utils.h
diff-lib.c                  pack-revindex.c      trace.c
diff-no-index.c             pack-revindex.h      trace.h
dir.c                       pack-write.c         trailer.c
dir.h                       pager.c              trailer.h
Documentation               parse-options.c      transport.c
editor.c                    parse-options-cb.c   transport.h
entry.c                     parse-options.h      transport-helper.c
environment.c               patch-delta.c        tree.c
ewah                        patch-ids.c          tree-diff.c
exec_cmd.c                  patch-ids.h          tree.h
exec_cmd.h                  path.c               tree-walk.c
fast-import.c               pathspec.c           tree-walk.h
fetch-pack.c                pathspec.h           unicode_width.h
fetch-pack.h                perl                 unimplemented.sh
fmt-merge-msg.h             pkt-line.c           unix-socket.c
fsck.c                      pkt-line.h           unix-socket.h
fsck.h                      po                   unpack-trees.c
generate-cmdlist.sh         ppc                  unpack-trees.h
gettext.c                   preload-index.c      update_unicode.sh
gettext.h                   pretty.c             upload-pack.c
git-add--interactive.perl   prio-queue.c         url.c
git-archimport.perl         prio-queue.h         url.h
git-bisect.sh               progress.c           urlmatch.c
git.c                       progress.h           urlmatch.h
git-compat-util.h           prompt.c             usage.c
git-cvsexportcommit.perl    prompt.h             userdiff.c
git-cvsimport.perl          quote.c              userdiff.h
git-cvsserver.perl          quote.h              utf8.c
git-difftool--helper.sh     reachable.c          utf8.h
git-difftool.perl           reachable.h          varint.c
git-filter-branch.sh        read-cache.c         varint.h
git-gui                     README.md            vcs-svn
git-instaweb.sh             ref-filter.c         version.c
gitk-git                    ref-filter.h         versioncmp.c
git-merge-octopus.sh        reflog-walk.c        version.h
git-merge-one-file.sh       reflog-walk.h        walker.c
git-merge-resolve.sh        refs                 walker.h
git-mergetool--lib.sh       refs.c               wildmatch.c
git-mergetool.sh            refs.h               wildmatch.h
git-p4.py                   RelNotes             worktree.c
git-parse-remote.sh         remote.c             worktree.h
git-quiltimport.sh          remote-curl.c        wrap-for-bin.sh
git.rc                      remote.h             wrapper.c
git-rebase--am.sh           remote-testsvn.c     write_or_die.c
git-rebase--interactive.sh  replace_object.c     ws.c
git-rebase--merge.sh        rerere.c             wt-status.c
git-rebase.sh               rerere.h             wt-status.h
git-relink.perl             resolve-undo.c       xdiff
git-remote-testgit.sh       resolve-undo.h       xdiff-interface.c
git-request-pull.sh         revision.c           xdiff-interface.h
git-send-email.perl         revision.h           zlib.c

编译安装:
将其安装在“/usr/local/git”目录下
先编译
[root@localhost git2.8.3]# make prefix=/usr/local/git all
GIT_VERSION = 2.8.3    
 * new build flags     CC credential-store.o 
/bin/sh: cc: command not found make: *** [credential-store.o] 错误 127
解决方法:安装git依赖的包
[root@localhost git2.8.3]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

再次编译:make prefix=/usr/local/git all就ok了
然后安装
[root@localhost git2.8.3]# make prefix=/usr/local/git install
    SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr/local/git' INSTALL_BASE='' --localedir='/usr/local/git/share/locale'
Writing perl.mak for Git
    GEN git-add--interactive
    GEN git-difftool
    GEN git-archimport
    GEN git-cvsexportcommit
    GEN git-cvsimport
    GEN git-cvsserver
    GEN git-relink
    GEN git-send-email
    GEN git-svn
    SUBDIR git-gui
    SUBDIR gitk-git
    SUBDIR perl
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <private-Error.pm >blib/lib/Error.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Editor.pm >blib/lib/Git/SVN/Editor.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Migration.pm >blib/lib/Git/SVN/Migration.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Log.pm >blib/lib/Git/SVN/Log.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN.pm >blib/lib/Git/SVN.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Memoize/YAML.pm >blib/lib/Git/SVN/Memoize/YAML.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/I18N.pm >blib/lib/Git/I18N.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Ra.pm >blib/lib/Git/SVN/Ra.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Prompt.pm >blib/lib/Git/SVN/Prompt.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/GlobSpec.pm >blib/lib/Git/SVN/GlobSpec.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Fetcher.pm >blib/lib/Git/SVN/Fetcher.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/IndexInfo.pm >blib/lib/Git/IndexInfo.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git/SVN/Utils.pm >blib/lib/Git/SVN/Utils.pm
/usr/bin/perl -pe "s<Q++LOCALEDIR++E></usr/local/git/share/locale>" <Git.pm >blib/lib/Git.pm
    SUBDIR templates
install -d -m 755 '/usr/local/git/bin'
install -d -m 755 '/usr/local/git/libexec/git-core'
install   git-credential-store git-daemon git-fast-import git-http-backend git-imap-send git-sh-i18n--envsubst git-shell git-show-index git-upload-pack git-remote-testsvn git-http-fetch git-http-push git-credential-cache git-credential-cache--daemon git-remote-http git-remote-https git-remote-ftp git-remote-ftps git-bisect git-difftool--helper git-filter-branch git-merge-octopus git-merge-one-file git-merge-resolve git-mergetool git-quiltimport git-rebase git-request-pull git-stash git-submodule git-web--browse git-add--interactive git-difftool git-archimport git-cvsexportcommit git-cvsimport git-cvsserver git-relink git-send-email git-svn git-p4 git-instaweb '/usr/local/git/libexec/git-core'
install -m 644  git-mergetool--lib git-parse-remote git-rebase--am git-rebase--interactive git-rebase--merge git-sh-setup git-sh-i18n '/usr/local/git/libexec/git-core'
install git git-upload-pack git-receive-pack git-upload-archive git-shell git-cvsserver '/usr/local/git/bin'
make -C templates DESTDIR='' install
make[1]: Entering directory `/opt/git2.8.3/templates'
install -d -m 755 '/usr/local/git/share/git-core/templates'
(cd blt && tar cf - .) | 
	(cd '/usr/local/git/share/git-core/templates' && umask 022 && tar xof -)
make[1]: Leaving directory `/opt/git2.8.3/templates'
install -d -m 755 '/usr/local/git/libexec/git-core/mergetools'
install -m 644 mergetools/* '/usr/local/git/libexec/git-core/mergetools'
install -d -m 755 '/usr/local/git/share/locale'
(cd po/build/locale && tar cf - .) | 
	(cd '/usr/local/git/share/locale' && umask 022 && tar xof -)
make -C perl prefix='/usr/local/git' DESTDIR='' install
make[1]: Entering directory `/opt/git2.8.3/perl'
make[2]: Entering directory `/opt/git2.8.3/perl'
Installing /usr/local/git/share/perl5/Git.pm
Installing /usr/local/git/share/perl5/Error.pm
Installing /usr/local/git/share/perl5/Git/SVN.pm
Installing /usr/local/git/share/perl5/Git/I18N.pm
Installing /usr/local/git/share/perl5/Git/IndexInfo.pm
Installing /usr/local/git/share/perl5/Git/SVN/Log.pm
Installing /usr/local/git/share/perl5/Git/SVN/Editor.pm
Installing /usr/local/git/share/perl5/Git/SVN/Ra.pm
Installing /usr/local/git/share/perl5/Git/SVN/Migration.pm
Installing /usr/local/git/share/perl5/Git/SVN/Fetcher.pm
Installing /usr/local/git/share/perl5/Git/SVN/Prompt.pm
Installing /usr/local/git/share/perl5/Git/SVN/GlobSpec.pm
Installing /usr/local/git/share/perl5/Git/SVN/Utils.pm
Installing /usr/local/git/share/perl5/Git/SVN/Memoize/YAML.pm
Installing /usr/local/git/share/man/man3/Git.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Memoize::YAML.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Ra.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Fetcher.3pm
Installing /usr/local/git/share/man/man3/private-Error.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Prompt.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Utils.3pm
Installing /usr/local/git/share/man/man3/Git::SVN::Editor.3pm
Installing /usr/local/git/share/man/man3/Git::I18N.3pm
Appending installation info to /usr/local/git/lib64/perl5/perllocal.pod
make[2]: Leaving directory `/opt/git2.8.3/perl'
make[1]: Leaving directory `/opt/git2.8.3/perl'
make -C gitweb install
make[1]: Entering directory `/opt/git2.8.3/gitweb'
make[2]: Entering directory `/opt/git2.8.3'
make[2]: “GIT-VERSION-FILE”是最新的。
make[2]: Leaving directory `/opt/git2.8.3'
    GEN gitweb.cgi
    GEN static/gitweb.js
install -d -m 755 '/usr/local/git/share/gitweb'
install -m 755 gitweb.cgi '/usr/local/git/share/gitweb'
install -d -m 755 '/usr/local/git/share/gitweb/static'
install -m 644 static/gitweb.js static/gitweb.css static/git-logo.png static/git-favicon.png '/usr/local/git/share/gitweb/static'
make[1]: Leaving directory `/opt/git2.8.3/gitweb'
make -C gitk-git install
make[1]: Entering directory `/opt/git2.8.3/gitk-git'
install -m 755 gitk-wish '/usr/local/git/bin'/gitk
install -d -m 755 '/usr/local/git/share/gitk/lib/msgs'
install -m 644 po/bg.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/ca.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/de.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/es.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/fr.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/hu.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/it.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/ja.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/pt_br.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/ru.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/sv.msg '/usr/local/git/share/gitk/lib/msgs' &&  install -m 644 po/vi.msg '/usr/local/git/share/gitk/lib/msgs' && true
make[1]: Leaving directory `/opt/git2.8.3/gitk-git'
make -C git-gui gitexecdir='/usr/local/git/libexec/git-core' install
make[1]: Entering directory `/opt/git2.8.3/git-gui'
  DEST /usr/local/git/libexec/git-core
    INSTALL 755 git-gui
    INSTALL 755 git-gui--askpass
    LINK        git-citool -> git-gui
  DEST /usr/local/git/share/git-gui/lib
    INSTALL 644 tclIndex
    INSTALL 644 about.tcl
    INSTALL 644 blame.tcl
    INSTALL 644 branch_checkout.tcl
    INSTALL 644 branch_create.tcl
    INSTALL 644 branch_delete.tcl
    INSTALL 644 branch_rename.tcl
    INSTALL 644 branch.tcl
    INSTALL 644 browser.tcl
    INSTALL 644 checkout_op.tcl
    INSTALL 644 choose_font.tcl
    INSTALL 644 choose_repository.tcl
    INSTALL 644 choose_rev.tcl
    INSTALL 644 class.tcl
    INSTALL 644 commit.tcl
    INSTALL 644 console.tcl
    INSTALL 644 database.tcl
    INSTALL 644 date.tcl
    INSTALL 644 diff.tcl
    INSTALL 644 encoding.tcl
    INSTALL 644 error.tcl
    INSTALL 644 index.tcl
    INSTALL 644 line.tcl
    INSTALL 644 logo.tcl
    INSTALL 644 merge.tcl
    INSTALL 644 mergetool.tcl
    INSTALL 644 option.tcl
    INSTALL 644 remote_add.tcl
    INSTALL 644 remote_branch_delete.tcl
    INSTALL 644 remote.tcl
    INSTALL 644 search.tcl
    INSTALL 644 shortcut.tcl
    INSTALL 644 spellcheck.tcl
    INSTALL 644 sshkey.tcl
    INSTALL 644 status_bar.tcl
    INSTALL 644 themed.tcl
    INSTALL 644 tools_dlg.tcl
    INSTALL 644 tools.tcl
    INSTALL 644 transport.tcl
    INSTALL 644 win32.tcl
    INSTALL 644 git-gui.ico
    INSTALL 644 win32_shortcut.js
  DEST /usr/local/git/share/git-gui/lib/msgs
    INSTALL 644 bg.msg
    INSTALL 644 de.msg
    INSTALL 644 el.msg
    INSTALL 644 fr.msg
    INSTALL 644 hu.msg
    INSTALL 644 it.msg
    INSTALL 644 ja.msg
    INSTALL 644 nb.msg
    INSTALL 644 pt_br.msg
    INSTALL 644 ru.msg
    INSTALL 644 sv.msg
    INSTALL 644 vi.msg
    INSTALL 644 zh_cn.msg
make[1]: Leaving directory `/opt/git2.8.3/git-gui'
bindir=$(cd '/usr/local/git/bin' && pwd) && 
	execdir=$(cd '/usr/local/git/libexec/git-core' && pwd) && 
	{ test "$bindir/" = "$execdir/" || 
	  for p in git git-shell git-upload-pack git-cvsserver; do 
		rm -f "$execdir/$p" && 
		test -z "" && 
		ln "$bindir/$p" "$execdir/$p" 2>/dev/null || 
		cp "$bindir/$p" "$execdir/$p" || exit; 
	  done; 
	} && 
	for p in git-receive-pack git-upload-archive; do 
		rm -f "$bindir/$p" && 
		test -z "" && 
		ln "$bindir/git" "$bindir/$p" 2>/dev/null || 
		ln -s "git" "$bindir/$p" 2>/dev/null || 
		cp "$bindir/git" "$bindir/$p" || exit; 
	done && 
	for p in  git-add git-am git-annotate git-apply git-archive git-bisect--helper git-blame git-branch git-bundle git-cat-file git-check-attr git-check-ignore git-check-mailmap git-check-ref-format git-checkout-index git-checkout git-clean git-clone git-column git-commit-tree git-commit git-config git-count-objects git-credential git-describe git-diff-files git-diff-index git-diff-tree git-diff git-fast-export git-fetch-pack git-fetch git-fmt-merge-msg git-for-each-ref git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-help git-index-pack git-init-db git-interpret-trailers git-log git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-ours git-merge-recursive git-merge-tree git-mktag git-mktree git-mv git-name-rev git-notes git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-prune-packed git-prune git-pull git-push git-read-tree git-receive-pack git-reflog git-remote git-remote-ext git-remote-fd git-repack git-replace git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-pack git-shortlog git-show-branch git-show-ref git-stripspace git-submodule--helper git-symbolic-ref git-tag git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-var git-verify-commit git-verify-pack git-verify-tag git-worktree git-write-tree git-cherry git-cherry-pick git-format-patch git-fsck-objects git-init git-merge-subtree git-show git-stage git-status git-whatchanged; do 
		rm -f "$execdir/$p" && 
		test -z "" && 
		ln "$execdir/git" "$execdir/$p" 2>/dev/null || 
		ln -s "git" "$execdir/$p" 2>/dev/null || 
		cp "$execdir/git" "$execdir/$p" || exit; 
	done && 
	remote_curl_aliases="git-remote-https git-remote-ftp git-remote-ftps" && 
	for p in $remote_curl_aliases; do 
		rm -f "$execdir/$p" && 
		test -z "" && 
		ln "$execdir/git-remote-http" "$execdir/$p" 2>/dev/null || 
		ln -s "git-remote-http" "$execdir/$p" 2>/dev/null || 
		cp "$execdir/git-remote-http" "$execdir/$p" || exit; 
	done && 
	./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"
查看git所在的路径:
[root@localhost git2.8.3]# whereis git
git: /usr/local/git
[root@localhost etc]# cd /usr/local/git/bin
查看新安装的git版本号:
[root@localhost bin]# ./git --version
git version 2.8.3

 

其他可参考文章:centos编译安装git最新版本

Git 界面GUI和命令行Command两种操作方式

linux下git的安装和使用

Linux(CentOs6.4)安装Git

原文地址:https://www.cnblogs.com/carsonzhu/p/5520297.html