1. 程式人生 > >git服務器的搭建及使用(第二章)

git服務器的搭建及使用(第二章)

etc log 指定 作者 取消 不起作用 -a 關聯 pat

一、git服務器創建倉庫

  在普通用戶有讀寫權限的目錄下,創建git倉庫,切勿使用root創建(root創建的倉庫,普通用戶無寫的權限,導致提交失敗)。

  mkdir xxx.git

  git init --bare創建git倉庫

  或者克隆現有的倉庫

  git clone <git倉庫地址>

二、本地項目上傳到git服務器

  在Windows平臺上安裝Git,msysGit的項目的安裝包,下載地址 https://gitforwindows.org/

    在本地項目目錄下創建git倉庫並添加遠程服務器git倉庫

  1. git init在項目下創建git裸倉庫
  2. git add . 添加項目下的所有文件到git緩存區(註意後面的小數點“.”,代表所有文件)
  3. git commit -m "提交文件",提交到git倉庫

  4. git remote add <遠程倉庫別名> <遠程倉庫地址>,關聯遠程倉庫

  5. git pull -rebase <遠程倉庫別名> master,獲取遠程庫與本地同步合並(如果遠程庫不為空,這一步操作是必須的)

  6. 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 <遠程倉庫別名> 移除遠程倉庫

四、操作中遇到的問題

  1. git 命令不起作用。
    修改/etc/profile,# Path manipulation下if中添加pathmunge /usr/local/git/bin。
  2. 使用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服務器的搭建及使用(第二章)