git_community_book_notes:ch3_junior_usage

1忽略某些文件

  1. 起因
    • 項目中經常會生成一些GIt系統不需要追蹤的文件。
    • 開發中你會發現項目中到處都有未追蹤的文件。git add 和 git commit -a變得不實用
  2. 解決方案
    • 再頂層工作目錄中添加一個.gitignore的文件,來告訴Git系統要忽略哪些文件。
    • .gitignore可以共享,項目開發者也能共享一個忽略文件規則
    • 對特定的倉庫起作用: .git/info/exclude和git配置變量core.excludesfile中指定的文件裏

2REBASE

2-1REBASE基本用法

git checkout -b mywork origin
#你對本地分支做了修改,他人對origin分支修改; 產生了“分叉”
  • 使用pull命令把origin分支上的修改拉下來合併,看起來像一個新的合併提交
  • 或者 使用git rebase命令,看起來更像一個沒有合併的分支

    1. 把mywork的每個提交取消掉,並保存爲臨時補丁,在.git/rebase目錄中
    2. 把mywork分支更新到最新的origin分支
    3. 應用上面保存的補丁到mywork上
  • gitrebase發生衝突時,解決衝突

    1. 解決衝突
    2. 用git-add命令更新這些命令
    3. 執行 git rebase --continue繼續應用餘下的補丁

2-2交互式rebase

關鍵詞:交互式
向別處推送提交之前對他們進行重寫。
對推送之前的提交進行分割、合併或者重排序
git rebase -i origin/master

#查看被rebase的提交
git log github/master..

假如從上一次推送起有5個提交

  1. 交互式添加:提供友好界面去操作git索引
  2. 交互式的操作,按照提示進行操作。

儲藏

  • 情形:開發中遇到和當前工作不相關bug需要停止當前工作
  • 解決方式:使用git stash保存當前的工作狀態, 修復完bug之後執行’unstash’操作回到之前的工作狀態

流程:

git stash "work in progress for foo features"
##1. 將你的本地修改儲存,然後重置工作目錄和索引,恢復到分支上次提交時的狀態
...edit and test...
##2. 修復bug
git commit -a -m "blorpl:typofix"
##3. 修復完bug之後,使用git stash apply恢復以前的工作狀態
git stash apply

儲藏隊列

  • git stash list命令查看你保存的儲藏stashes
    每執行一次儲藏,就添加到stash隊列中
  • git stash clear:清空這個隊列
  • git stash apply stash@{l}:使用在隊列中的任意一個儲藏

GIT樹名

用名字表示方法:替代SHA串表示一個提交或是其它git對象

  1. sha短名
    • 只要前綴不重複,一個提交的sha名就不會和其它名字衝突
  2. 分支,remote或標籤
    • 使用分支,remote或標籤名來替代SHA串名
  3. 日期標識符
    • 用日期標註版本
  4. 順序標識符
    • 表示某點前面第N個提交;master@{5}表示master前面第5個提交
  5. 多個父對象
    • 告訴你某提交的第N個直接父提交; master由a,b合併而成;master^2表示分支b
  6. 波浪號
    • 表示一個提交對象的第N級祖父節點
  7. 樹對象指針
    • master^{tree}
  8. 二進制標識符
    • master:/path/to/file得到某對象blob的sha串名
  9. 區間
    • ..表示

追蹤分支

用來聯繫本地分支和遠程分支。

  • 使用情形:

    • 經常從遠程倉庫里拉取分支到本地,但不想用gitpull這種格式

      1. git clone自動在本地建立一個’master’分支
      2. 在使用git branch的時候加上’–track’參數
        git branch --track experimental origin/experimental
      3. 運行git pull experimental
    • 從origin抓取內容,把遠程的origin/experimental分支合併進本地的experi分支

使用GIT GREP進行搜索

  • 不用簽出歷史文件就能查找它們
    • git grep thingsforgrep
    • 參數 -n, –name-only, -c
    • -e 組合搜索條件

GIT的撤消操作-重置,簽出和撤銷

用於修復錯誤

  • 修復未提交文件中的錯誤(重置)
    • git reset --hard HEAD 命令會清空所有未提交的內容
    • git checkout -- hello.rb 恢復’hello.rb’
  • 修復已提交文件中的錯誤
    • 馬上後悔了
      • 創建一個新的提交去撤銷老提交所有的的修改
      • 修改老提交
  • 創建新提交來修復錯誤
    • git revert HEAD創建了一個撤銷了上次提交的新提交
    • git revert HEAD^:撤銷了上次提交的上次提交
    • git commit 把用於撤銷的提交真正的提交
  • 修改提交來修改錯誤
    • git commit --amend

維護GIT

git靠壓縮歷史信息來節約磁盤和內存空間
git gc:比較耗時

  • 保持可靠性 git fsck進行倉庫的一致性檢查

建立一個公共倉庫

git clone --bare ~/proj proj.git
touch proj.git/git-daemon-export-ok
  1. 在~/proj目錄創建一個proj.git目錄,這個目錄裏有一個”裸git倉庫”
  2. 把pro.git目錄拷貝到用來託管公共倉庫的主機上
  3. 通過git協議或http協議導出git倉庫

建立一個私有倉庫

  • 通過ssh協議來訪問倉庫
git clone --bare /home/user/myrepo/.git /tmp/myrepo.git
scp -r /tmp/myrepo.git myserver.com:/opt/git/myrepo.git

- 使用Gitosos的多用戶訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章