Git 簡單使用說明php
感謝大神分享http://markyun.github.io/2015/instruction-Git/前端
1安裝msysgit:python
msysgit是Windows版的Git,從http://msysgit.github.io/下載,而後按默認選項安裝便可。nginx
安裝完成後,在開始菜單裏找到「Git」->「Git Bash」,蹦出一個相似命令行窗口的東西,就說明Git安裝成功!git
2 配置用戶名:github
git config --global user.name "Your Name" git config --global user.email "email@example.com"
三、建立倉庫(或者 克隆一個遠程倉庫 ):web
git init
Initialized empty Git repository in /Users/michael/learngit/.git/ (告訴你是一個空的倉庫)
請確保目錄名(包括父目錄)不包含中文sql
四、添加文件到倉庫:shell
把文件(readme.txt)放在建立的倉庫內編程
git add readme.txt //可反覆屢次使用,
添加多個文件;
git add .
(.)點表示當前目錄下的全部內容,交給git管理,也就是提交到了git的本地倉庫。 用命令git commit告訴Git,把文件提交到倉庫:
git commit -m "Update README.md, add the front-end interview questions " [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
五、修改文件後,更新倉庫
git status 查看倉庫當前的狀態, 告訴咱們,什麼文件被修改過了,但尚未準備提交的修改。
git diff 文件名, 查看具體修改了什麼內容
git add 文件名 更新和添加同樣
git commit
六、版本回退:
先 git log 添加的註釋
也能夠:git reflog 記錄你的每一次添加命令和註釋 和commit_id:
只回到上一個版本就是HEAD^,
git reset --hard HEAD^
上上一個版本就是HEAD^^ git reset --hard HEAD^^
git reset --hard commit_id。
七、暫存區
Git和其餘版本控制系統如SVN的一個不一樣之處就是有暫存區的概念。 第一次修改 -> add -> 第二次修改 -> add -> commit
只會提交第一次的修改內容到主分支
八、撤銷提交操做(add)
git checkout -- readme.txt //(--很重要,沒有--,就變成了「建立一個新分支」的命令)
把readme.txt文件在工做區的修改所有撤銷,這裏有兩種狀況: 當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令
git checkout -- file
一種是readme.txt自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態; 當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,
第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操做
二是readme.txt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到【最近一次git commit後】 或【git add以前】的狀態;
假設你不但改錯了東西,還從暫存區提交到了版本庫,怎麼辦呢? 能夠回退到上一個版本。 不過,這是有條件的,就是你尚未把本身的本地版本庫推送到遠程。
九、刪除文件
git rm test.txt
rm 'test.txt' m "remove test.txt" git commit - //若是刪錯了,由於版本庫裏還有呢,因此能夠很輕鬆地把誤刪的文件恢復到最新版本: git checkout -- test.txt
十、設置SSH Key
因爲你的本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此,須要SSH Key
默認存放在 C:\Users\Administrator.ssh idrsa是私鑰,不能泄露出去,idrsa.pub是公鑰,能夠放心地告訴任何人。
ssh-keygen -t rsa -C 「mygood@126.com"
爲何GitHub須要SSH Key呢?由於GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的, 而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送。
十一、綁定到遠程倉庫 (注意格式的gitlab,不支持ssh,請使用http)
關聯一個遠程庫 git remote add origin git@github.com:markyun/beilibao.git 遠程庫的名字就是origin,這是Git默認的叫法,也能夠改爲別的,可是origin這個名字一看就知道是遠程庫。
十二、推送到遠程倉庫
git remote -v //查看你當前項目遠程鏈接的是哪一個倉庫地址。 git push -u origin master //將本地的項目提交到遠程倉庫中。
正常狀況下這樣顯示:
git push -u origin master
Counting objects: 19, done. o 4 threads. Compressing objects: 100% ( Delta compression using up t19/19), done. Writing objects: 100% (19/19), 13.73 KiB, done. lliao/learngit.git * [new branch] Total 23 (delta 6), reused 0 (delta 0) To git@github.com:micha e master -> master to track remote branch master from origin. Branch master set u p
若是提示:
ssh:connect to host github.com port 22:bad file number could not read from remote repository
(說不能讀取遠端庫,請確保有正確的訪問權限而且倉庫存在。看看你本機22端口有沒有打開)
ssh github.com 測試是否能正常使用SSH
當你第一次使用Git的clone或者push命令鏈接GitHub時,會獲得一個警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established. RSA key fingerprint is xx.xx.xx.xx.xx. cting (yes/no)? Are you sure you want to continue conn e
這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車便可。 Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
這個警告只會出現一次,後面的操做就不會有任何警告了。
1三、從服務器上把一個遠程倉庫中的工程徹底的拷貝下來
git clone git@github.com:china-UED/test.git
假如本地已經存在了這個項目,而倉庫中又有一新的更新,如何把更的合併到本地的項目中?
git fetch origin //取得遠程更新,這裏能夠看作是準備要取了
git merge origin/master //把更新的內容合併到本地分支/master
----------------待補充--------------
1四、建立與合併分支
1五、衝突的處理
1六、多人協做
1七、其餘
git config --list 查看配置 git config --global core.autocrlf false 關閉 github的換行符自動轉換」功能
補充 Git 命令快速查詢表
命令 簡要說明
git add 添加至暫存區
git add–interactive 交互式添加
git apply 應用補丁
git am 應用郵件格式補丁
git annotate 同義詞,等同於 git blame
git archive 文件歸檔打包
git bisect 二分查找
git blame 文件逐行追溯
git branch 分支管理
git cat-file 版本庫對象研究工具
git checkout 檢出到工做區、切換或建立分支
git cherry-pick 提交揀選
git citool 圖形化提交,至關於 git gui 命令
git clean 清除工做區未跟蹤文件
git clone 克隆版本庫
git commit 提交 git config 查詢和修改配置 git describe 經過里程碑直觀地顯示提交ID git diff 差別比較 git difftool 調用圖形化差別比較工具 git fetch 獲取遠程版本庫的提交 git format-patch 建立郵件格式的補丁文件。參見 git am 命令 git grep 文件內容搜索定位工具 git gui 基於Tcl/Tk的圖形化工具,側重提交等操做 git help 幫助 git init 版本庫初始化 git init-db* 同義詞,等同於 git init git log 顯示提交日誌 git merge 分支合併 git mergetool 圖形化衝突解決 git mv 重命名 git pull 拉回遠程版本庫的提交 git push 推送至遠程版本庫 git reBase 分支變基 git rebase–interactive 交互式分支變基 git reflog 分支等引用變動記錄管理 git remote 遠程版本庫管理 git repo-config* 同義詞,等同於 git config git reset 重置改變分支「遊標」指向 git rev-parse 將各類引用表示法轉換爲哈希值等 git revert 反轉提交 git rm 刪除文件 git show 顯示各類類型的對象 git stage* 同義詞,等同於 git add git stash 保存和恢復進度 git status 顯示工做區文件狀態 git tag 里程碑管理
二、對象庫操做相關命令
命令 簡要說明
git commit-tree 從樹對象建立提交 git hash-object 從標準輸入或文件計算哈希值或建立對象 git ls-files 顯示工做區和暫存區文件 git ls-tree 顯示樹對象包含的文件 git mktag 讀取標準輸入建立一個里程碑對象 git mktree 讀取標準輸入建立一個樹對象 git read-tree 讀取樹對象到暫存區 git update-index 工做區內容註冊到暫存區及暫存區管理 git unpack-file 建立臨時文件包含指定 blob 的內容 git write-tree 從暫存區建立一個樹對象
三、引用操做相關命令
命令 簡要說明
git check-ref-format 檢查引用名稱是否符合規範 git for-each-ref 引用迭代器,用於shell編程 git ls-remote 顯示遠程版本庫的引用 git name-rev 將提交ID顯示爲友好名稱 git peek-remote* 過期命令,請使用 git ls-remote git rev-list 顯示版本範圍 git show-branch 顯示分支列表及拓撲關係 git show-ref 顯示本地引用 git symbolic-ref 顯示或者設置符號引用 git update-ref 更新引用的指向 git verify-tag 校驗 GPG 簽名的Tag
四、版本庫管理相關命令
命令 簡要說明
git count-objects 顯示鬆散對象的數量和磁盤佔用
git filter-branch 版本庫重構
git fsck 對象庫完整性檢查
git fsck-objects* 同義詞,等同於 git fsck
git gc 版本庫存儲優化
git index-pack 從打包文件建立對應的索引文件 git lost-found* 過期,請使用 git fsck –lost-found 命令 git pack-objects 從標準輸入讀入對象ID,打包到文件 git pack-redundant 查找多餘的 pack 文件 git pack-refs 將引用打包到 .git/packed-refs 文件中 git prune 從對象庫刪除過時對象 git prune-packed 將已經打包的鬆散對象刪除 git relink 爲本地版本庫中相同的對象創建硬鏈接 git repack 將版本庫未打包的鬆散對象打包 git show-index 讀取包的索引文件,顯示打包文件中的內容 git unpack-objects 從打包文件釋放文件 git verify-pack 校驗對象庫打包文件
五、數據傳輸相關命令
命令 簡要說明
git fetch-pack 執行 git fetch 或 git pull 命令時在本地執行此命令,用於從其餘版本庫獲取缺失的對象 git receive-pack 執行 git push 命令時在遠程執行的命令,用於接受推送的數據 git send-pack 執行 git push 命令時在本地執行的命令,用於向其餘版本庫推送數據 git upload-archive 執行 git archive –remote 命令基於遠程版本庫建立歸檔時,遠程版本庫執行此命令傳送歸檔 git upload-pack 執行 git fetch 或 git pull 命令時在遠程執行此命令,將對象打包、上傳
六、郵件相關命令
命令 簡要說明
git imap-send 將補丁經過 IMAP 發送 git mailinfo 從郵件導出提交說明和補丁 git mailsplit 將 mbox 或 Maildir 格式郵箱中郵件逐一提取爲文件 git request-pull 建立包含提交間差別和執行PULL操做地址的信息 git send-email 發送郵件
七、協議相關命令
命令 簡要說明
git daemon 實現Git協議
git http-backend 實現HTTP協議的CGI程序,支持智能HTTP協議
git instaweb 即時啓動瀏覽器經過 gitweb 瀏覽當前版本庫
git shell 受限制的shell,提供僅執行Git命令的SSH訪問
git update-server-info 更新啞協議須要的輔助文件 git http-fetch 經過HTTP協議獲取版本庫 git http-push 經過HTTP/DAV協議推送 git remote-ext 由Git命令調用,經過外部命令提供擴展協議支持 git remote-fd 由Git命令調用,使用文件描述符做爲協議接口 git remote-ftp 由Git命令調用,提供對FTP協議的支持 git remote-ftps 由Git命令調用,提供對FTPS協議的支持 git remote-http 由Git命令調用,提供對HTTP協議的支持 git remote-https 由Git命令調用,提供對HTTPS協議的支持 git remote-testgit 協議擴展現例腳本
八、版本庫轉換和交互相關命令
命令 簡要說明
git archimport 導入Arch版本庫到Git
git bundle 提交打包和解包,以便在不一樣版本庫間傳遞
git cvsexportcommit 將Git的一個提交做爲一個CVS檢出
git cvsimport 導入CVS版本庫到Git。或者使用 cvs2git
git cvsserver Git的CVS協議模擬器,可供CVS命令訪問Git版本庫
git fast-export 將提交導出爲 git-fast-import 格式 git fast-import 其餘版本庫遷移至Git的通用工具 git svn Git 做爲前端操做 Subversion
九、合併相關的輔助命令
命令 簡要說明
git merge-base 供其餘腳本調用,找到兩個或多個提交最近的共同祖先 git merge-file 針對文件的兩個不一樣版本執行三向文件合併 git merge-index 對index中的衝突文件調用指定的衝突解決工具 git merge-octopus 合併兩個以上分支。參見 git merge 的octopus合併策略 git merge-one-file 由 git merge-index 調用的標準輔助程序 git merge-ours 合併使用本地版本,拋棄他人版本。參見 git merge 的ours合併策略 git merge-recursive 針對兩個分支的三向合併。參見 git merge 的recursive合併策略 git merge-resolve 針對兩個分支的三向合併。參見 git merge 的resolve合併策略 git merge-subtree 子樹合併。參見 git merge 的 subtree 合併策略 git merge-tree 顯式三向合併結果,不改變暫存區 git fmt-merge-msg 供執行合併操做的腳本調用,用於建立一個合併提交說明 git rerere 重用所記錄的衝突解決方案
十、 雜項
命令 簡要說明
git bisect–helper 由 git bisect 命令調用,確認二分查找進度
git check-attr 顯示某個文件是否設置了某個屬性 git checkout-index 從暫存區拷貝文件至工做區 git cherry 查找沒有合併到上游的提交 git diff-files 比較暫存區和工做區,至關於 git diff –raw git diff-index 比較暫存區和版本庫,至關於 git diff –cached –raw git diff-tree 比較兩個樹對象,至關於 git diff –raw A B git difftool–helper 由 git difftool 命令調用,默認要使用的差別比較工具 git get-tar-commit-id 從 git archive 建立的 tar 包中提取提交ID git gui–askpass 命令 git gui 的獲取用戶口令輸入界面 git notes 提交評論管理 git patch-id 補丁過濾行號和空白字符後生成補丁惟一ID git quiltimport 將Quilt補丁列表應用到當前分支 git replace 提交替換 git shortlog 對 git log 的彙總輸出,適合於產品發佈說明 git stripspace 刪除空行,供其餘腳本調用 git submodule 子模組管理 git tar-tree 過期命令,請使用 git archive git var 顯示 Git 環境變量 git web–browse 啓動瀏覽器以查看目錄或文件 git whatchanged 顯示提交歷史及每次提交的改動 git-mergetool–lib 包含於其餘腳本中,提供合併/差別比較工具的選擇和執行 git-parse-remote 包含於其餘腳本中,提供操做遠程版本庫的函數 git-sh-setup 包含於其餘腳本中,提供 shell 編程的函數庫