Linux命令:git
最近更新時間 2020-01-01 20:55:49
git是一個分佈式版本控制軟件,最初為更好管理Linux內核開發而設計。與CVS、Subversion等一類集中式版本控制工具不同,它採用了分佈式版本庫的作法,不需要服務器端軟件,就可以運作版本控制,使得源代碼的發佈和交流極其方便。
git的速度很快,這對於諸如Linux內核這樣的大項目來説自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。
GIT GUI客户端
- GitHub Desktop,可用於第三方Git倉庫網站。
- Git for Windows。
- TortoiseGit。
- Sourcetree。
安裝Git
1. 在Linux上安裝Git,並查看版本信息。
CentOS
yum install git
Debian
apt-get install git
git version
git version 1.8.3.1
常用命令
2. 使用git前你需要先配置用户名和email地址,git提交的時候需要使用。
配置用户名和郵箱
git config --global user.name "username"
git config --global user.email "[email protected]"
顯示當前配置信息
git config --list
user.name=username [email protected]
3. 設置和取消密碼。
git config --global user.password "password"
git config --global --unset user.password
4. 初始化本地倉庫。
git init docsxyz
Initialized empty Git repository in /home/git/docsxyz/.git/
倉庫創建成功後會生成.git目錄,該目錄為隱藏目錄,需通過 ls -al查看。目錄結構如下所示:
- branches:存放分支信息。
- config:存放各種設置文檔。
- HEAD:指向當前所在分支的指針文件路徑,一般指向refs下的某文件。
- hooks:存儲鈎子的文件夾。
- objects:存放git對象。
- refs:存儲指向各個分支的指針(SHA-1標識)文件。
5. 克隆現有的倉庫。
git clone https://github.com/ranxk/ranxkshell.git
Cloning into 'ranxkshell'... remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (6/6), done. remote: Total 21 (delta 0), reused 0 (delta 0), pack-reused 15 Unpacking objects: 100% (21/21), done.
6. 查看本地倉庫修改狀態。
git status
# On branch master # # Initial commit # # Untracked files: # (use "git add ..." to include in what will be committed) # # README.md nothing added to commit but untracked files present (use "git add" to track)
以上命令表示添加了README.md文件,需要執行git add ...命令添加文件。
7. 添加文件或目錄。
git add .
8. 提交本地修改,添加備註信息。
git commit -am '添加README'
[master (root-commit) 0a03487] 添加README 1 file changed, 1 insertion(+) create mode 100644 README.md
查看本地倉庫狀態
git status
# On branch master nothing to commit, working directory clean
9. 推送本地到服務器。
git push
Counting objects: 11, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (7/7), 716 bytes, done. Total 7 (delta 2), reused 4 (delta 1) To [email protected]:schacon/simplegit-progit.git a11bef0..ca82a6d master -> master
10. 查看提交日誌。
git log
commit 0a034875a611144b93c80ed851c00cc2b6768c64 Author: username Date: Wed Jan 1 19:37:13 2020 +0800 添加README
只顯示一行輸出簡化信息,短Hash值和備註信息
git log --oneline
0a03487 添加README
顯示最近5次提交記錄
git log -5
git log可以添加參數對輸出格式進行控制,如下所示:
--oneline
顯示簡化信息。--name-only
顯示提交文件。--stat
輸出文件增刪改的統計數據。-p
輸出每個commit具體修改的內容,輸出的形式以diff的形式給出。--pretty
自定義輸出的信息。--author
限定輸出給定的用户。-n
n表示你要輸出的提交記錄。--after
限定輸出的開始時間,如:'10-1-2019'。--before
限定輸出的結束時間,如:'10-1-2019'。
11. 格式化輸出日誌信息。
git log --pretty=format:"%h %s"
0a03487 添加README
以上命令作用類似,git log --oneline
,format支持的參數如下:
%H
提交對象(commit)的完整哈希字串。%h
提交對象的簡短哈希字串。%T
樹對象(tree)的完整哈希字串。%t
樹對象的簡短哈希字串。%P
父對象(parent)的完整哈希字串。%p
父對象的簡短哈希字串。%an
作者(author)的名字。%ae
作者的電子郵件地址。%ad
作者修訂日期(可以用-date= 選項定製格式)。%ar
作者修訂日期,按多久以前的方式顯示。%cn
提交者(committer)的名字。%ce
提交者的電子郵件地址。%cd
提交日期。%cr
提交日期,按多久以前的方式顯示。%s
提交説明。
常見問題
fatal: could not read Username for 'https://github.com/': terminal prompts disabled
如果用户配置過ssh,可通過替換git@進行訪問
如果git@github路徑沒問題,可以全局替換URL
git config --global --add url."[email protected]:".insteadOf "https://github.com/"