Git -- 基礎命令

初始化

git init? ?目錄下會出現 .git 的目錄,所有 Git 需要的數據和資源都存放在這個目錄 中 ?


從現有倉庫Clone

git clone [url]

git clone [url] name ? ?clone 下來的項目目錄更改為 name


查看文件倉庫狀態

git status


跟蹤新文件(將已跟蹤的文件加入暫存區)

git add [fileName]


忽略文件

cat .gitignore

# ????????????????此為注釋 – 將被 Git 忽略

*.a ????????????????# 忽略所有 .a 結尾的文件

!lib.a ????????????# 但 lib.a 除外

/TODO ????????# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO build/

build/ ? ? ?????# 忽略?目錄下的所有文件

doc/*.txt ????# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

規則:

/ ?????:表示目錄

* ?????:表示通配多個字符

? ?????:表示通配單個字符

[] ?????:包含單個字符的匹配列表

! ????:表示不忽略

# ?????:注釋

/folder/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?:過濾整個文件夾

/folder/past.text ? ? ? ? ? ? ? ? :過濾具體某個文件

*.zip ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :過濾所有zip文件

!aa.zip ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? :不過濾aa.zip文件

!/folder/need.text ? ? ? ? ? ? ? :不過濾具體文件

備注:

? ? 1、.gitignore 文件需要在第一次push之前上傳,上傳后增加則無效(已經管理了,增加 忽略規則也無效)

????2、git 對 .gitignore 文件是按 行從上到下匹配 (即若前面的范圍大于后面的范圍,則后面的不生效)

? ? 3、.gitignore 文件只作用于 未被跟著的文件,即 添加后未 add 及 commit 過。若被跟蹤過,則無效

????4、針對 .gitignore 不生效的辦法:清除本地緩存(即改為未跟蹤狀態)

? ? ????git rm -r --cached . ? ? ? ? //清理緩存

? ? ????git add . ? ? ? ? ? ? ? ? ? ? ? ? ? ?//重新 trace file?

? ? ????git commit -m 'update .gitignore' ? //提交


查看修改內容

git diff ? ? ? ? ? ??顯示還沒有暫存起來的改動,而不是這次工作和上次提交之間的差異

git diff --cached

git diff --staged


提交更新

git commit -m "xxx"

git commit -a -m "xxx" ? ?會自動把所有已經跟蹤過的文件暫 存起來一并提交


移除文件

git rm grit.gemspec

如果刪除之前修改過并且已經放到暫存區域的話,則必須 要用強制刪除選項?-f

git rm --cached readme.txt?僅是從跟蹤清單中刪除


移動文件

git mv file_from file_to ? ? ?(同一目錄下,即為改名操作)


查看提交歷史

git log

選項 說明

-p 按補丁格式顯示每個更新之間的差異。

--stat 顯示每次更新的文件修改統計信息。

--shortstat 只顯示 --stat 中最后的行數修改添加移除統計。

--name-only 僅在提交信息后顯示已修改的文件清單。

--name-status 顯示新增、修改、刪除的文件清單。

--abbrev-commit 僅顯示 SHA-1 的前幾個字符,而非所有的 40 個字符。

--relative-date 使用較短的相對時間顯示(比如,“2 weeks ago”)。

--graph 顯示 ASCII 圖形表示的分支合并歷史。

--pretty 使用其他格式顯示歷史提交信息。可用的選項包括 oneline,short,full,fuller 和 format(后跟指定格式)。

按照時間作限制的選項,比如?--since?和?--until

git log --since=2.weeks

選項 說明

-(n) 僅顯示最近的 n 條提交

--since, --after 僅顯示指定時間之后的提交。

?--until, --before 僅顯示指定時間之前的提交。

?--author 僅顯示指定作者相關的提交。?

--committer 僅顯示指定提交者相關的提交。


撤消操作

git commit --amend

git reset HEAD <file>????????取消已經暫存的文件

git checkout -- benchmarks.rb????取消對文件的修改


遠程倉庫

git remote ????查看當前配置有哪些遠程倉庫

git remote -v ??顯示對應的克隆地址

git remote add [shortname] [url]: ? ?添加新的遠程倉庫

git fetch [remote-name]????從遠程倉庫抓取數據?

fetch 命令只是將遠端的數據拉到本地倉庫,并不自動合并到當前工作分支,只有當你確實準備好 了,才能手工合并

git pull????從原始克隆的遠 端倉庫中抓取數據后,合并到工作目錄中當前分支

git push [remote-name] [branch-name] ?????推送數據到遠程倉庫? ?

git remote show [remote-name] ?????查看某個遠程倉庫的詳細信息

git remote rename ?name newName?重命名

git remote rm ?移除 對應的遠端倉庫


標簽 ? ??

git tag?????列出現有標簽 ? ?

git tag -l 'v1.4.2.*' ? ?篩選

git tag -a v1.4 -m 'my version 1.4' ? ? ? ? ?創建一個含附注類型的標簽

git show????查看相應標簽的版本信息

git tag -s v1.5 -m 'my signed 1.5 tag' ??????簽署標簽

git tag v1.4-lw????輕量級標簽(保存著對應提交對象的校驗和信息的文件)

git tag -v [tag-name]????驗證已經簽署的標簽

git tag -a v1.2 9fceb02????后期加注標簽

git push origin [tagName]????????分享標簽

git push origin --tags????一次推送所有(本地新增的)標簽

git tag -d name 刪除本地tag

git push origin :refs/tags/tagName? 刪除遠程tag

git tag -l ????查看本地tag

git show-ref --tag ????查看遠程tag

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • linux基礎命令findfind / -name targetfilename 查找文件按時間查找也有參數 -a...
    AQ王浩閱讀 1,503評論 0 5
  • Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來。這樣一來,任何一處協同...
    __silhouette閱讀 15,942評論 5 147
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當前所在目錄變成...
    冬絮閱讀 4,884評論 0 9
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,583評論 1 26
  • 9:20—16:00精準營銷用戶的跟進服務 16:00—18:00 10 11、12、13、14所有會員跟進服務
    秦淮首席書童閱讀 117評論 0 0