初始化
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