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

1、git服務器建立倉庫

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

  mkdir xxx.git
windows

  git init --bare建立git裸倉庫
緩存

   (服務器

    裸倉庫不能進行任何操做,不然會報錯fatal: this operation must be run in a work tree。ssh

    須要使用以下命令,再進行git其餘操做:fetch

    touch readmethis

    git initspa

    git add readmeorm

    git commit -m "提交readme"對象

   )

  或者克隆現有的倉庫

  git clone <git倉庫地址>

2、本地項目上傳到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,將最新的修改推送到遠程倉庫

3、遠程倉庫的使用

  git remote -v 查看遠程倉庫

  git remote add <遠程倉庫別名> <遠程倉庫地址> 添加遠程倉庫

  git fetch <遠程倉庫別名> 從遠程倉庫中抓取本地倉庫沒有的數據

  git pull <遠程倉庫別名> <分支名> 從倉庫分支中拉取數據

  git push <遠程倉庫別名> <分支名> 推送文件到上游

  git remote show <遠程倉庫別名> 查看遠程倉庫信息

  git remote rename <舊遠程倉庫別名> <新遠程倉庫別名> 遠程倉庫重命名

  git remote rm <遠程倉庫別名> 移除遠程倉庫

4、操做中遇到的問題

  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 -- <文件名> 撤銷修改,將文件還原成上次提交的內容

  (未完待續)

相關文章
相關標籤/搜索