git服務器的搭建及使用(第二章)
一、git服務器創建倉庫
在普通用戶有讀寫權限的目錄下,創建git倉庫,切勿使用root創建(root創建的倉庫,普通用戶無寫的權限,導致提交失敗)。
mkdir xxx.git
git init --bare創建git倉庫
或者克隆現有的倉庫
git clone <git倉庫地址>
二、本地項目上傳到git服務器
在Windows平臺上安裝Git,msysGit的項目的安裝包,下載地址 https://gitforwindows.org/
在本地項目目錄下創建git倉庫並添加遠程服務器git倉庫
- git init在項目下創建git裸倉庫
- git add . 添加項目下的所有文件到git緩存區(註意後面的小數點“.”,代表所有文件)
-
git commit -m "提交文件",提交到git倉庫
-
git remote add <遠程倉庫別名> <遠程倉庫地址>,關聯遠程倉庫
-
git pull -rebase <遠程倉庫別名> master,獲取遠程庫與本地同步合並(如果遠程庫不為空,這一步操作是必須的)
-
git push -u <遠程倉庫別名> master,將最新的修改推送到遠程倉庫
三、遠程倉庫的使用
git remote -v 查看遠程倉庫
git remote add <遠程倉庫別名> <遠程倉庫地址>
git fetch <遠程倉庫別名> 從遠程倉庫中抓取本地倉庫沒有的數據
git pull <遠程倉庫別名> <分支名> 從倉庫分支中拉取數據
git push <遠程倉庫別名> <分支名> 推送文件到上遊
git remote show <遠程倉庫別名> 查看遠程倉庫信息
git remote rename <舊遠程倉庫別名> <新遠程倉庫別名> 遠程倉庫重命名
git remote rm <遠程倉庫別名> 移除遠程倉庫
四、操作中遇到的問題
- git 命令不起作用。
- 使用ssh公鑰,代替每次輸入密碼請求遠程git時,不起作用。
設置home目錄對組的寫權限以及設置git管理員下的.ssh目錄讀寫權限。
chmod g-w /home/xxx
chmod 700 /home/xxx/.ssh
chmod 600 /home/xxx/.ssh/authorized_keys
五、git對文件的基本操作及原理
Git倉庫中的項目文件屬於提交狀態及已跟蹤文件,git對文件變化的變化用快照記錄,工作一段時間後,文件的狀態可能處於未修改、已修改或已放入暫存。
git status 檢查當前文件狀態。
git add <文件名> 跟蹤當前文件,暫存狀態(針對新文件或修改過的文件)。
git commit -m "註釋" 提交更新。
git commit -a -m "註釋" 跳過暫存區,直接提交。
git rm -f <文件名> 強制刪除文件,清除暫存區的文件。
git mv <舊文件名> <新文件名> 移動文件。
git diff 查看尚未暫存的文件更新的部分。
git diff -cached(stager) 查看已暫存的將要添加到下次提交裏的內容。
git log 查看提交的歷史,列出所有的更新,按時間排列。
git log -p -n 查看提交歷史,-p顯示每次提交的內容差異,-n表示僅顯示最近n次的提交。
git log --stat 查看每次提交的簡略統計信息。
git log --shortstat 只顯示--stat最後的行數修改添加移除統計。
git log --name-only 僅在提交信息後顯示已修改的文件清單。
git log --name-status 顯示新增、修改、刪除的文件清單。
git log --abbrev-commit 僅顯示SHA-1的前幾個字符,而非所有的40個字符。
git log --relative-date 使用較短的相對時間顯示。
git log --graph 顯示ASCII圖形表示的分支合並歷史。
git log --pretty 使用其他格式顯示歷史提交信息,可用選項包括oneline、short、full、fuller和format(後期指定格式)。
git log --pretty=format:"%h - %t - %an - %cn" 以下為常用選項:
%H 提交對象的完整哈希字串
%h 提交對象的簡短哈希字串
%T 樹對象(tree)的完整哈希字串
%t 樹對象的簡短哈希字串
%P 父對象的完整哈希字串
%p 父對象的簡短哈希字串
%an 作者的名字
%ae 作者的電子郵箱
%ad 作者修訂日期(可以用--date=選項定制格式)
%ar 作者修訂日期,按多久以前的方式顯示
%cn 提交者的名字
%ce 提交者的電子郵箱地址
%cd 提交日期
%cr 提交日期,按多久以前的方式顯示
%s 提交說明
git log --since="",--after="" 僅顯示指定時間之後的提交。
git log --until="",--before="" 僅顯示指定時間之前的提交。
git log --author 僅顯示指定作者相關的提交。
git log --committer 僅顯示指定提交者相關的提交。
git log --grep 僅顯示含指定關鍵字的提交。
git log --S 僅顯示添加或移除了某個關鍵字的提交。
git commit --amend 覆蓋上次提交,提交補充
git reset HEAD <文件名> 取消暫存的文件,及撤銷上次提交
git checkout -- <文件名> 撤銷修改,將文件還原成上次提交的內容
(未完待續)
git服務器的搭建及使用(第二章)