首先去 https://git-scm.com/downloads 這個網站下載與本身電腦相匹配的Git的安裝文件下載完畢後點擊運行,一路點擊next便可完成安裝.git
首先選擇一個合適的地方,建立一個空目錄,而後進入當前目錄,在當前目錄下右鍵,點擊Git Bush,可使用 pwd 命令來顯示當前目錄,接着使用 git init 命令把這個目錄變成Git 能夠管理的倉庫而後你就會看到這個目錄下多了一個.git的目錄,這個目錄就是 Git 來追蹤和管理版本庫的,若是系統默認隱藏了這類後綴名的文件你可能就會看不到,使用 ls-ah 命令就能夠看見.緩存
git config --global user.email "your email"
git config --global user.email "your name"服務器
經常使用的git操做命令app
(1) git clone <版本庫的網址> <本地目錄名> 克隆遠程倉庫到本地
我比較推薦: 去GitHub網站上建立一個項目倉庫,複製倉庫地址,而後再本地選擇一個你想要存放這個項目的地方,新建一個空的文件夾,在這個文件夾下面右鍵選擇git Bush,而後使用git clone <你複製的地址>,這裏本地目錄名省略則默認時當前目錄,就能夠把你的項目克隆到本地了.測試
(2) git add 添加文件到暫存區fetch
添加你新建的文件到暫存區.網站
把工做時的全部變化提交到暫存區,包括文件內容修改(modified)以及新(new)文件,但不包括刪除的文件("."是匹配符,這裏能夠代指匹配全部).版本控制
u(update的縮寫),該命令僅監控已經被add的文件,它會將被修改的文件(即tracked file)提交到暫存區. 不會提交新文件(untracked file)指針
是 git add . 和 git add -u 這兩個命令功能的合集,提交全部修改的(modified)文件到暫存區,包括新文件(new).日誌
咱們能夠經過git add -i [<path>]命令查看<path>中被全部修改過或已刪除文件但沒有提交的文件,
補充: 經過git add <匹配符>的方式你能夠添加符合特定條件的文件,例如hello* 表示添加以hello開頭的文件的修改添加到暫存區,具體的寫法你們能夠自行百度下^_^^_^
git push -u origin master //把本地庫的全部內容推送到遠程庫上
(3)git commit 提交修改的文件到工做區
提交全部暫存區的文件
提交全部被跟蹤的修改過的文件,包括沒有進入暫存區的文件
取消上一次的提交
(4) git pull //從遠程倉庫拉取數據同步到本地
(5) git push //從本地倉庫推送(同步)修改到遠程倉庫
關於git push 的幾個擴展的用法
若是當前分支與多個主機存在追蹤關係,則可使用 -u 參數指定一個默認主機,這樣後面就能夠不加任何參數使用git push,不帶任何參數的git push,默認只推送當前分支,這叫作simple方式,還有一種matching方式,會推送全部有對應的遠程分支的本地分支, Git 2.0以前默認使用matching,如今改成simple方式若是想更改設置,可使用git config命令。git config --global push.default matching OR git config --global push.default simple;可使用git config -l 查看配置
當遇到這種狀況就是不論是否存在對應的遠程分支,將本地的全部分支都推送到遠程主機,這時須要 -all 選項
push的時候須要本地先git pull更新到跟服務器版本一致,若是本地版本庫比遠程服務器上的低,那麼通常會提示你git pull更新,若是必定要提交,那麼可使用這個命令。
使用 git status 命令可讓咱們時刻掌握倉庫當前的狀態,好比那些文件被修改,那些文件須要提交等等.
使用 git diff "filename" 就能夠查看某個文件修改先後的版本的不一樣
使用 git log 命令咱們能夠查看某個項目從最近到最遠的提交日誌.若是內容太多,能夠試試加上 --pretty=online 來進行篩選.
git reflog 能夠記錄你的每一次命令,方便你隨時查看歷史操做記錄
git checkout -- filename 這一指令能夠將修改過但還未commit的文件版本返回至最近一次commit或者add的狀態.
場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令git checkout -- file。git checkout -- file 還能夠一鍵還原誤刪的文件.
場景2:當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操做。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
git rm filename git commit -m "remove a file"
Git鼓勵大量使用分支: 查看分支:git branch 建立分支:git branch <name> 切換分支:git checkout <name> 建立+切換分支:git checkout -b <name> 合併某分支到當前分支:git merge <name> git merge --no-ff feature-x: 默認狀況下,git執行"快進式合併",使用--no-ff參數後,會執行正常合併,當刪除eature-x分支後,從分支歷史上還能夠看到給分支信息,可是若是是快進式合併,刪除分支後,會丟掉分支信息. 刪除分支:git branch -d <name> 強制刪除沒有被合併的分支: git branch -D <name>
git log: 打印版本提交日誌.
git reset(HEAD默認指向當前版本,也就是最新提交的版本,HEAD^表示當前版本的上一個版本, HEAD^^表示當前版本的上上個版本, ~n表示當前版本的上n個版本): * git reset HEAD filename: 將某個文件從暫存區回退到工做區. * git reset --soft HEAD~n: 意爲將版本軟回退n個版本,所謂軟回退表示將本地版本庫的頭指針所有重置到指定版本,且將此次提交以後的全部變動都移動到暫存區. * git reset --mixed HEAD 8306e6eb46a(version code): 意爲將版本硬回退到某一指定版本號對應的版本,將本地版本庫的頭指針所有重置到指定版本,且會重置緩存區,即本次提交以後的全部更改都會被移動到未暫存階段.若是想要的工做區的代碼也回退到這個版本,須要git pull一下,由於當前的HEAD指向了想要回退的那個版本,因此此時的更新就是相對於制定版本的更新. * git reset --hard HEAD 8306e6eb46a(version code): 意爲將版本硬回退到某一指定版本號對應的版本,可是不只僅是將本地版本庫的頭指針所有重置到指定版本,也會重置暫存區,並將工做代碼回退到這個版本,就是比--mixed多了一個git pull. * git reset --help 查看幫助 * git reset --hard 撤銷本地修改,包括已經被提交到暫存區的修改撤回,乾淨的會退到上次提交以後的狀態 * git clean -df 這個命令是撤銷沒有被提交到暫存區的本地修改
這裏講一講多分支開發的合併,在正規的項目中,咱們常常會採用多分支開發,主分支master, 開發分支develop(開發者們開發合併代碼的分支),熱更新分支hotFix(臨時的用於解決上線項目運行時候的bug的分支),切分支的方法git branch <branchName>,提交的方式是向管理員提交pull request,步驟以下:
點擊New Merge Request,選擇要合併的源分支和目標分支,並添加合併的相關信息,能夠
在description中@某個項目成員,也能夠設置Assignee指定某個項目成員,這樣他們能夠會收到郵件要求進行Code review.
當你正在寫一個功能,這個時候你又須要切一個分支去修復bug,可是當前功能未寫完,不想提交,就可使用git stash
命令,把當前工做區"隱藏"起來,等之後恢復現場後繼續工做.
那麼git stash幫咱們把代碼隱藏在哪裏了呢? 經過指令git stash list
能夠查看全部暫存的stash工做區.
當你想要回來繼續工做的時候,切回以前工做的分支,而後回覆以前的狀態有兩個方法:
;
也能夠屢次stash,而後恢復指定的stash.
補充:
git rebase操做能夠把本地未push的分叉提交歷史整理成直線;
git rebase的目的是使得咱們在查看歷史提交的變化時更容易,由於分叉的提交須要三方對比。**
說明: 記得養成良好的習慣,每次添加修改和刪除文件的時候都要先添加到暫存區再提交,每一次提交的時候要寫說明,修改了哪些地方,方便往後查看.