git的一些補充點

  1. git rm和 rm的區別
    git rm是刪除文件, 同時加入到git的跟蹤管理中,作一個登記,那麼在git commit的時候, 會把此次刪除做爲一次修改提交上去, 不然, 在 git log中你就看不到 此次修改提交.
    rm僅僅只是 文件管理器的 刪除 文件的命令, 從 硬盤上刪除, 可是沒有在git中作登記.記錄, 因此 在git commit的時候,不會把此次刪除記錄操做 提交到local server上
    那麼若是 已經 用 rm刪除文件了,又 要 git commit的話, 能夠在 commit的時候, 帶上 -a選項: git commit -am 'msg...html

  2. git rm --cache file/path
    --cache是指 只是從 緩存區 stage區域 刪除, 並不從工做區中刪除文件.
  3. git commit -am 'xxx'
    -m是 msg --message是消息的意思,是對該次提交所做的註釋
    -a 是 --all 是對 全部作了修改和刪除的文件進行 自動 stage, 可是對 新文件(沒有add的新文件)沒有影響
    git -a: tell command to automatically stage files that have been modified and deleted, but files you have not told git about are not affected.
    也就是, 若是 你只是用 rm命令 而不是用git rm 刪除文件, 那麼你就能夠有兩種方式進行處理:
    第一, 再次用 git rm刪除, 最後, commit
    第二, 不用git rm了, 在提交的時候, 帶上 -a選項. 即 git commit -am '...'git

由於對文件的編輯方式有 新建 new, 修改modify, 刪除delete幾種, 固然你能夠把全部的文件都 add到stage中, 而後commit, 也能夠 只add新建文件, 而對modify和delte的文件, 不add, 在commit的時候, 帶上 -a選項就能夠自動 將它們提交到stage了. 緩存

git push -u origin master:

"origin master" 是指推送到origin倉庫的 master分支
-u是指默認, 綁定, 將當前分支推送到 默認的/綁定的遠程倉庫上的對應分支.
當第一次使用了 -u選項後, 之後 推送的話, 就再也不須要寫 origin master了.直接使用 git push編輯器

git 從2.0以後, 默認的推送選項是 --simple 再也不是2.0以前的--match, 若是是 --match表示的是將當前本地分支 推送到 全部匹配的 遠程倉庫的對應分支.網站

git push 是指, 若是當前分支和 多個(遠程主機上的倉庫分支)之間 存在"追蹤" 關係, 那麼指定-u會綁定一個默認主機, 之後就能夠git push而不用任何參數推送到 默認的 遠程倉庫上去了 . git 就是用來 創建/保持/管理 這種 追蹤關係的! 經過這種 追蹤關係 來保持對文件/工程 (所謂工程, 就是 在一個項目中, 全部文件/多種資源的 文件的集合 包括這些文件和它們之間的 相對依賴關係的 總稱) 的關聯, 因此, 若是你要 保持 版本跟蹤, 那麼 就告訴 git吧, 讓git 來爲你 管理 你的文件或工程!!!

  1. git brach -avvl
    -a顯示全部的分支,
    -v顯示每次提交的詳細信息
    -l顯示每一個分支的對應信息等
  • git branch -avv, 注意這裏是兩個-v, 兩個小寫的v, 不是 -v-V, 沒有 大V, 大V是錯誤的.
  1. git log
    顯示全部的提交記錄

git add -A
不須要一個一個地添加untracked文件, 能夠一次性地添加全部的文件.操作系統



關於git 的使用的一個詳細參考地址: https://blog.csdn.net/gemmem/article/details/7290125

其中 很重要的一個概念是 : git倉庫在哪裏,和目錄的關係是怎樣的?.net

  • git倉庫就是那個 隱藏目錄 .git
  • 倉庫和工做目錄的位置關係: 可否 將一個目錄下的 git倉庫, 和 本地機器上 另外一個不一樣位置處的 目錄(即 工做目錄)之間創建關聯, 並進行add和commit 等 跟蹤/追蹤呢?
    不能: 由於, git倉庫和 你說的那個要與之創建關聯/聯繫的那個目錄(實際上就是 工做目錄) 之間 是 緊密相連的, 它們之間是不能分開的,不能分割開的,事實上, .git倉庫就 存在於 工做目錄下! .git倉庫 是 工做目錄下的 一個 隱藏子目錄.
    因此, 好比, 若是你想對 www/html網站目錄進行git跟蹤管理, 就應該直接在 html目錄下運行 git init命令, 這樣在 www/html目錄下(工做目錄) 就生成一個 .git的 版本管理倉庫了.code

  • git 命令是針對某一個 倉庫而言的. repo命令是針對某一個項目而言的. 由於一個項目中 能夠包含多個 倉庫. 因此 在具體的一個倉庫中 , 就使用 git命令
  • git 的幫助命令是: git help 某某命令 這裏git 就至關於一個 總的 命令.... 字命令就是help命令....server

===============htm

要提交git commit, 必須告訴tell git who are you. 就須要配置git 使用 命令 git config 來配置 user. 其中 --global 和 --local選項指定 該user配置 是全局的(每一個/倉庫) 仍是隻用於當前這個倉庫的.

全局的git配置是 在 ~/.gitconfig 文件中, 若是是 當前倉庫的配置文件, 則是: .git/config 文件 注意兩個配置文件的名稱不一樣.
配置 user 對象, 會有一個 [user]節. 若是是 配置 當前倉庫的話, 是指 該user 只用於 當前倉庫的提交.

在git提交時, 會發現, 即便某些文件自己 並無改變, commit 時, 仍然提示有所改變,"... files changed, .. . insertions" 是 因爲 在 當前倉庫的 配置文件.git/config 中設置 了 core.filemode=true. 意思是指 將工做目錄中的文件 提交到 stage的時候, 都改變成 100644的模式:

100表示 文件的類型是 "普通文件" regular file, 040是目錄, 120 是 symbolic link 等
644是文件的模式.
因此 是因爲文件模式發生了改變, 致使文件在 commit的時候, 發生了改變, 要使文件不發生改變, 只要修改 core.filemode 爲 false 便可!

git config 命令就是 對 git 配置文件 進行操做的命令, 你能夠用 git config -e 打開編輯器來編輯這個config文件. 也能夠用 --add, --unset , --replace, --replace-all, --get等選項來操做配置文件, 可是都要經過 config命令來進行, 不能直接用 git get core.filemode等相似命令來 操做config文件, 由於 只有git config命令, 沒有 git get命令!

==============

git的版本跟蹤/追蹤, 是很是尊重用戶的, 若是你不想要這個 版本倉庫了, 不想再對工做目錄進行版本管理了, 你能夠刪除 這個 git倉庫: 只須要一步操做就能夠了: 刪除 工做目錄下的 隱藏文件夾 .git 這個目錄就能夠了.

如同在漢語中, 有多音字和相同發音的字, 英語中一樣有不少的同音字. 好比ge音: 有 歌, 哥, 各, 葛, 戈等的發音. 可是要經過 語境上下文來區分. 一樣的, 英語中也有不少同音字, 因此, 聽英語 也不是 單獨的聽一個一個的單詞的~ (聽單一,單獨的,一個一個的單詞,你是聽不出是什麼單詞的, 由於有那麼多 的同音字)也是要聽詞組的, 聽句子的! 也是要根據 上下文的語境來進行區分和讀取/理解的...

clothes: 不能用單數和數詞: 好比: the clothes are smart. 不能說 five clothes. 一般只說 those clothes, 或用數詞 : a T-shirt, two sweaters
而 clothing 是一個集合名詞, 好比people 同樣, 好比一件衣服要說: an article of clothing, a piece of clothing.

dress: 穿衣服要用被動語態,好比: She is dressed in her everyday clothes.
clothes: 中的es不發iz, 而是發z音,因此是 【kl2uz】


git add 的好處還有一個: 在切換分支branch的時候, 這些 git add 暫存區 會一塊兒 切換過去!

git branch 分支號 <以前的某次提交的id號>, 這個命令的做用是: 基於以前的 某次 提交commit id , 回滾到 以前的中間的某次提交, 並創建一個 分支,(回滾到以前的某次提交, 而且建立分支的好處是: 回滾後,沒必要覆蓋 master分支. 從而起到 "另存爲" 一個 提交點(快照) 的做用)

感受 git 跟 一些管理 : 操做系統 復原/回滾/還原精靈的 有點相似, 能夠任意的 在 某個 時間節點上, 建立快照, 而後能夠 恢復到這些時間節點上, 而其餘的保存的 時間節點 快照仍然存在!
git branch 新的分支號 <以前的舊的分支號> : 就是基於 以前的某個分支號 建立新的 分支號.
也能夠基於某個分支 , 建立新的分支! git branch new_branch old_branch

相關文章
相關標籤/搜索