Git學習筆記(3)

五、標簽管理

1.創建標簽

為方便查找文件版本,可以對版本號打上標簽,步驟如下:
Step1:切換到需要打標簽的分支上

Step2:用命令git tag [-a] <tagname> [-m] [“解釋性文字”] [版本id]新建一個標簽,默認為HAED版本,也可以加上commit id指定任意版本。注:也可以加上選項-s ,用私鑰簽名一個標簽(PGP簽名),具體用法百度可查。

命令git show <tagname>可以看到說明文字,若加上了簽名,則也可以看到簽名信息

命令git tag可以查看所有標簽

2.操作標簽

1)如果標簽打錯了,可通過命令git tag -d <tagname>來將其刪除。因為創建的標簽都只存儲在本地,不會自動推送到遠程。所以打錯的標簽可在本地安全刪除。
2)若要推送某個標簽至遠程,可使用命令git push origin <tagname>,或者使用命令git push origin --tags將所有尚未推送到遠程的標簽一次性推送至遠程。
3)對于已經推送到遠程的標簽,如果想要刪除,則需要先用git tag -d <tagname>將其在本地刪除,然后通過命令git push origin :refs/tags/<tagname>將其從遠程刪除。


六、使用GitHub

1.GitHub中的一些功能解釋

功能 解釋
Gist 用于管理和發布一些沒必要保存在倉庫中的代碼。
Popular repository 顯示用戶的公開倉庫中受歡迎的倉庫。
Contributions 顯示每日用戶對倉庫的貢獻程度。
Contibution activity 按時間順序顯示具體貢獻活動的鏈接。
watch 相當于"訂閱",點擊后,在用戶的公開活動中會顯示該倉庫的更新。
star 相當于"收藏",用戶可以在該標記中找到被star過的倉庫。
Fork 將原項目復制到了自己的倉庫中,相當于在原有主分支上新建了一個分支。
code 顯示該倉庫中的文件列表。
issue 用于bug報告、功能添加、方向性討論等。
pull request 代碼的更改和討論都可以在此進行。
pulse 顯示該倉庫最近的活動信息。
Graphs 以圖表形式顯示該倉庫的各項指標。
commits 顯示當前分支的提交歷史。
branches 查看倉庫的分支列表。
releases 顯示倉庫的tag列表。
contributors 顯示對該倉庫進行過提交的程序員名單。
raw 直接在瀏覽器中顯示該文件的內容。
blame 按行顯示最新提交的信息。
history 查看該文件的歷史操作記錄。

2.在GitHub中參與一個開源項目的步驟如下:

Step1:訪問想要參與的項目主頁,點擊Fork則將該項目倉庫復制到了自己的遠程庫下。注:在GitHub中,可以任意Fork開源倉庫。
Step2:將復制得到的內容從自己的遠程庫中clone至本地倉庫。注意:一定要從自己的賬戶下clone,只有這樣才可以推送修改至遠程,如果從作者賬號clone,則沒有推送修改的權限。
Step3:對其中的內容進行修改,工作完成后推送至自己的遠程庫。
Step4:如果希望作者接受你的修改,則可以在GitHub上發起一個pull request。如果對方接受,則修改就合并到該項目中,開源項目即得到了完善。


七、自定義Git

一些常用的Git自定義功能

1.顯示不同的顏色

$ git config --global color.ui true

2.忽略特殊文件

忽略原則是:
1)操作系統自動生成的文件,比如縮略圖等;
2)編譯生成的中間文件、可執行文件等;
3)自己帶有敏感信息的配置文件,如存放口令的配置文件等。

忽略方法是:修改git工作區根目錄下的.gitignore文件,將要忽略的文件名填進去,Git就會自動將其忽略(該文件本身要提交到Git,對其做版本管理)。

檢驗是否忽略的方法是:使用命令git status查看是否提示working directory clean
命令git check-ignore可用來檢查.gitignore文件,例如:

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

Git告訴我們,.gitignore文件的第三行規則忽略了該文件。

3.配置別名

1)配置命令

有些命令比較繁瑣,可以用配置別名的方式對其做簡化,例如:

$ git config --global alias.st status

執行以上命令后,敲git st則相當于git status
根據這種思想,我們可以給某些難于記憶的指令配置容易理解的別名,例如命令git reset HEAD file可以將暫存區的修改撤銷掉,相當于一個unstage的操作,故可以對其配置一個unstage別名:

$ git config --global alias.unstage 'reset HEAD'

配置完成后,敲入git unstage test.py相當于命令git reset HEAD test.py

還有一些常用的配置:

$ git config --global alias.last 'log -1' #顯示最后一次提交的信息
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

2)配置文件

上述命令中,--global是針對當前用戶的所有倉庫起作用的,若不加該參數,則只對當前倉庫生效。
每個倉庫的配置文件都位于.git/config文件中,可使用cat命令查看該文件。別名位于[alias]后面,要刪除別名,直接將對應行刪掉即可。(注:當前用戶的Git配置文件放在用戶主目錄下的隱藏文件.gitconfig中。)
若要用命令刪除一個已定義的別名,可采用

$ git config --global --unset alias.xxx

刪除別名為xxx的修改。

4.搭建Git服務器

如果不想公開源代碼,又不愿意為GitHub私有倉庫付費,可以選擇自己搭建一臺Git服務器作為私有倉庫使用。

1)搭建方法

Step1:安裝git

$ sudo apt-get install git

Step2:創建一個git用戶,來運行git服務

$ sudo adduser git

Step3:創建證書登錄
收集所有需要登錄的用戶的公鑰,也就是他們各自的id_rsa.pub文件,將所有公鑰導入到/home/git/.ssh/authorized_keys文件中,一行一個。

Step4:初始化Git倉庫
先選定一個目錄作為Git倉庫,假定為/srv/sample.git,在/srv目錄下輸入命令:

$ sudo git init --bare sample.git

Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為這臺服務器上的Git倉庫純粹是用于共享,所以不讓用戶直接登錄到服務器上去修改工作區,并且服務器上的Git倉庫通常都以.git結尾。然后,將owner改為git:

$ sudo chown -R git:git sample.git

Step5:禁用shell登錄
出于安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到該文件中類似下面一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改為

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

這樣,git用戶就可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就會自動退出。

Step6:clone遠程倉庫

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送方法類似于推送到GitHub。

2)管理公鑰

如果團隊很小,可以利用上述方法管理。如果團隊較大,可以用Gitosis來管理公鑰。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,701評論 9 163
  • Git是目前最流行的版本管理系統,也是最先進的分布式版本控制系統(distributed version cont...
    pro648閱讀 5,752評論 1 17
  • 聲明:這篇文章來源于廖雪峰老師的官方網站,我僅僅是作為學習之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 3,974評論 3 27
  • 2017年12月6日上午10點30分,我們的父親,一位兢兢業業為我國新聞事業辛勤工作了一輩子的老新聞工作者,在與心...
    我叫紅景天閱讀 395評論 0 1
  • 我不怕一個人面對這兵荒馬亂的世界,我怕的是,有了你之后,我依然要活成刀槍不入的女漢子模樣,自己拿刀、自己拿槍,防衛...
    黑丫說閱讀 926評論 2 2