Ubuntu環境下,如何安裝git
測試環境
以下的說明,均在「Xubuntu 14.04 64位元」的環境下測試。
安裝指令
1 | $ sudo apt-get install git |
是的,這篇文章的標題,只需要一行指令就可以說明了。
感覺這篇有點在充數,呵呵,我自己不能說是「xx充數」。
基本上相關的安裝方式只要參考「這篇(中文)」,就知道怎麼安裝了。
並且本篇不討論用編譯原始碼的方式安裝git,只有討論用Ubuntu套件的方式安裝。
套件探索
以下是套件探索的紀錄。有興趣深究的人,再繼續研讀下去吧。
查詢git相關的套件
可以執行這個指令
1 | $ apt-cache search ^git- |
或是下面這個
1 | $ sudo apt-get install git- # 此時按下「tab」鍵。應該就會出現「git-」開頭的列表。 |
探索 「package: git」 和 「source package: git」
先準備等會要工作的環境。
1 | $ mkdir ~/tmp/git -p |
下載「git」的「source package」,並且解開。
1 | $ cd ~/tmp/git/source |
觀看「control」檔,基本上,你可以發現「git」的「source package」拆成了很多「package」。看網頁的說明,也可以看到拆成那些「package」。
1 | $ vi debian/control |
下載「git」的「package」,並且解開。
1 | $ cd ~/tmp/git/download |
觀看「control」檔。會發現「Depends: …略… git-man」,也就是說安裝「git」會連同安裝「git-man」。
1 | $ vi DEBIAN/control |
若你已經安裝「git」了,也可以執行下面的指令,看到上面「control」檔紀錄的資訊。
1 | $ dpkg -s git |
如何知道「git」這個「套件」是否已經安裝在你的系統上了。
1 | $ dpkg -l git |
如何知道「git」這個「指令」屬於哪個「套件」。
1 | $ dpkg -S /usr/bin/git |
你就會看到「git: /usr/bin/git」,「:」前面的那個「git」指的就是「/usr/bin/git」屬於「git」套件。
探索 「package: git-core」
先準備等會要工作的環境。
1 | $ mkdir ~/tmp/git-core -p |
下載「git-core」的「package」,並且解開。
1 | $ cd ~/tmp/git-core/download |
觀看「control」檔。會發現「Depends: git」,也就是說安裝「git-core」會連同安裝「git」。
1 | $ vi DEBIAN/control |
另外看到「Description:」那有提到下面的文字。
1 | ...略... |
「git-core」目前捨棄不用了,請直接使用「git」。
目前「git-core」只是個「meta package」或是「dummy package」。
作用是為了要讓以前有相依「git-core」的套件可以正常安裝。
探索 「package: git-all」
先準備等會要工作的環境。
1 | $ mkdir ~/tmp/git-all -p |
下載「git-all」的「package」,並且解開。
1 | $ cd ~/tmp/git-all/download |
觀看「control」檔。會發現「git (>> 1:1.9.1), git (<< 1:1.9.1-.), git-doc, git-el, git-arch, git-cvs, git-mediawiki, git-svn, git-email, git-gui, gitk, gitweb。
1 | $ vi DEBIAN/control |
另外看到「Description:」那有提到下面的文字。1
2...略...
This is a dummy package which brings in all subpackages.
也就是說「git-all」只是個「meta package」,為了方便安裝「git」的「subpackages」,也就是上面探索「git」的「source package」提到的拆成很多的「package」。
探索 「package: git-man」
先準備等會要工作的環境。
1 | $ mkdir ~/tmp/git-man -p |
下載「git-man」的「package」,並且解開。
1 | $ cd ~/tmp/git-man/download |
觀看「control」檔。
1 | $ vi DEBIAN/control |
看到「Description:」那有提到下面的文字。
1 | ...略... |
了解有哪些「manual」可以查詢。1
2
3
4
5$ ls git-man/usr/share/man/
$ ls git-man/usr/share/man/man1 -1
$ ls git-man/usr/share/man/man3 -1
$ ls git-man/usr/share/man/man5 -1
$ ls git-man/usr/share/man/man7 -1
man 1
- $ man 1 git
- $ man 1 git-add
- $ man 1 git-am
- $ man 1 git-annotate
- $ man 1 git-apply
- $ man 1 git-archive
- $ man 1 git-bisect
- $ man 1 git-blame
- $ man 1 git-branch
- $ man 1 git-bundle
- $ man 1 git-cat-file
- $ man 1 git-check-attr
- $ man 1 git-check-ignore
- $ man 1 git-check-mailmap
- $ man 1 git-checkout
- $ man 1 git-checkout-index
- $ man 1 git-check-ref-format
- $ man 1 git-cherry
- $ man 1 git-cherry-pick
- $ man 1 git-clean
- $ man 1 git-clone
- $ man 1 git-column
- $ man 1 git-commit
- $ man 1 git-commit-tree
- $ man 1 git-config
- $ man 1 git-count-objects
- $ man 1 git-credential
- $ man 1 git-credential-cache
- $ man 1 git-credential-cache--daemon
- $ man 1 git-credential-store
- $ man 1 git-daemon
- $ man 1 git-describe
- $ man 1 git-diff
- $ man 1 git-diff-files
- $ man 1 git-diff-index
- $ man 1 git-difftool
- $ man 1 git-diff-tree
- $ man 1 git-fast-export
- $ man 1 git-fast-import
- $ man 1 git-fetch
- $ man 1 git-fetch-pack
- $ man 1 git-filter-branch
- $ man 1 git-fmt-merge-msg
- $ man 1 git-for-each-ref
- $ man 1 git-format-patch
- $ man 1 git-fsck
- $ man 1 git-fsck-objects
- $ man 1 git-gc
- $ man 1 git-get-tar-commit-id
- $ man 1 git-grep
- $ man 1 git-hash-object
- $ man 1 git-help
- $ man 1 git-http-backend
- $ man 1 git-http-fetch
- $ man 1 git-http-push
- $ man 1 git-imap-send
- $ man 1 git-index-pack
- $ man 1 git-init
- $ man 1 git-init-db
- $ man 1 git-instaweb
- $ man 1 git-log
- $ man 1 git-ls-files
- $ man 1 git-ls-remote
- $ man 1 git-ls-tree
- $ man 1 git-mailinfo
- $ man 1 git-mailsplit
- $ man 1 git-merge
- $ man 1 git-merge-base
- $ man 1 git-merge-file
- $ man 1 git-merge-index
- $ man 1 git-merge-one-file
- $ man 1 git-mergetool
- $ man 1 git-mergetool--lib
- $ man 1 git-merge-tree
- $ man 1 git-mktag
- $ man 1 git-mktree
- $ man 1 git-mv
- $ man 1 git-name-rev
- $ man 1 git-notes
- $ man 1 git-p4
- $ man 1 git-pack-objects
- $ man 1 git-pack-redundant
- $ man 1 git-pack-refs
- $ man 1 git-parse-remote
- $ man 1 git-patch-id
- $ man 1 git-prune
- $ man 1 git-prune-packed
- $ man 1 git-pull
- $ man 1 git-push
- $ man 1 git-quiltimport
- $ man 1 git-read-tree
- $ man 1 git-rebase
- $ man 1 git-receive-pack
- $ man 1 git-reflog
- $ man 1 git-relink
- $ man 1 git-remote
- $ man 1 git-remote-ext
- $ man 1 git-remote-fd
- $ man 1 gitremote-helpers
- $ man 1 git-remote-testgit
- $ man 1 git-repack
- $ man 1 git-replace
- $ man 1 git-request-pull
- $ man 1 git-rerere
- $ man 1 git-reset
- $ man 1 git-revert
- $ man 1 git-rev-list
- $ man 1 git-rev-parse
- $ man 1 git-rm
- $ man 1 git-send-pack
- $ man 1 git-shell
- $ man 1 git-sh-i18n
- $ man 1 git-sh-i18n--envsubst
- $ man 1 git-shortlog
- $ man 1 git-show
- $ man 1 git-show-branch
- $ man 1 git-show-index
- $ man 1 git-show-ref
- $ man 1 git-sh-setup
- $ man 1 git-stage
- $ man 1 git-stash
- $ man 1 git-status
- $ man 1 git-stripspace
- $ man 1 git-submodule
- $ man 1 git-subtree
- $ man 1 git-symbolic-ref
- $ man 1 git-tag
- $ man 1 git-unpack-file
- $ man 1 git-unpack-objects
- $ man 1 git-update-index
- $ man 1 git-update-ref
- $ man 1 git-update-server-info
- $ man 1 git-upload-archive
- $ man 1 git-upload-pack
- $ man 1 git-var
- $ man 1 git-verify-pack
- $ man 1 git-verify-tag
- $ man 1 gitweb
- $ man 1 git-web--browse
- $ man 1 git-whatchanged
- $ man 1 git-write-tree
man 3
man 5
- $ man 5 gitattributes
- $ man 5 githooks
- $ man 5 gitignore
- $ man 5 gitmodules
- $ man 5 gitrepository-layout
- $ man 5 gitweb.conf
man 7
- $ man 7 gitcli
- $ man 7 gitcore-tutorial
- $ man 7 gitcredentials
- $ man 7 gitcvs-migration
- $ man 7 gitdiffcore
- $ man 7 gitglossary
- $ man 7 gitnamespaces
- $ man 7 gitrevisions
- $ man 7 gittutorial-2
- $ man 7 gittutorial
- $ man 7 gitworkflows
探索 「package: git-doc」
先準備等會要工作的環境。
1 | $ mkdir ~/tmp/git-doc -p |
下載「git-doc」的「package」,並且解開。
1 | $ cd ~/tmp/git-doc/download |
觀看「control」檔。
1 | $ vi DEBIAN/control |
看到「Description:」那有提到下面的文字。
1 | ...略... |
基本上這個套件,就是「git」相關的文件,以「txt」或「html」的格式存在。
1 | $ vi vi git-doc/usr/share/doc-base/ # 此時按下「tab鍵」。 |
會出現1
2
3
4
5
6
7
8
9
10
11
12
13everyday-git
git-index-format
git-reference-manual
git-tools
the-racy-git-problem
git-bisect-lk2009
git-pack-format
git-shallow-clone-design
git-trivial-merge-rules
git-howtos
git-protocol
git-technical
git-user-manual
可以觀看這些檔案的內容,會指引你找到文件的開始。
例如:
1 | $ vi git-doc/usr/share/doc-base/everyday-git |
你就會看到文件上紀錄著1
2
3
4
5
6
7
8
9
10
11
12Document: everyday-git
Title: Everyday Git With 20 Commands Or So
Author: Junio C Hamano
Abstract: A useful minimum set of git commands, in context.
Section: File Management
Format: Text
Files: /usr/share/doc/git-doc/everyday.txt
Format: HTML
Index: /usr/share/doc/git-doc/everyday.html
Files: /usr/share/doc/git-doc/everyday.html
若你有安裝「git-doc」這個套件,就可以執行下面的指令來觀看文件。1
$ lynx /usr/share/doc/git-doc/everyday.html
或1
$ firefox /usr/share/doc/git-doc/everyday.html
或1
$ sensible-browser /usr/share/doc/git-doc/everyday.html
或1
$ less /usr/share/doc/git-doc/everyday.txt