Linux命令:git

最近更新時間 2020-01-01 20:55:49

git是一個分佈式版本控制軟件,最初為更好管理Linux內核開發而設計。與CVS、Subversion等一類集中式版本控制工具不同,它採用了分佈式版本庫的作法,不需要服務器端軟件,就可以運作版本控制,使得源代碼的發佈和交流極其方便。

git的速度很快,這對於諸如Linux內核這樣的大項目來説自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。

GIT GUI客户端

安裝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/"

 

rss_feed