Git教程:
http://www.liaoxuefeng.com/wi...git
1.設置用戶名,郵箱github
git config --global user.name "yourname"
git config --global user.email "blackironman@163.com"app
2.pwd 查看當前的工做路徑
3.mkdir test 建立文件夾test
4.ls 查看當前目錄下的文件
5.git status 查看當前狀態
6.git diff 查看修改的信息
7.添加遠端倉庫(用origion 代替 後面的地址) 能夠添加多個,修改origin命名就好;git remote -v查看遠程庫的信息ssh
git remote add origin git@github.com:blackironman/gitstudy.git
推送到遠端fetch
git push -u origin master或者 分支名
下載github上的文件編碼
git pull git@github.com:blackironman/study.git(本地git庫已和遠程庫建立關聯) git clone 地址(github上的SSH地址):git@github.com:blackironman/study.git(本地git庫未與遠程庫建立關聯)
從遠程倉庫拉下來(git fetch)合併(git merge)
(多人共同操做一個文件時,需手動合併)
git pullspa
添加github合做者:(推送權限)
生成ssh-key
在Windows下打開Git Bash輸入:ssh-keygen -t rsa -C "youremail@example.com" 一直回車使用默認值
最後在github右上角的圖標 ---Settings---SSH keys -- add SSH Keys title任意,在key文本中粘貼 (查看:C:用戶a.ssh)id_rsa.pub文件的內容。指針
8.使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文本文件。緣由是Microsoft開發記事本的團隊使用了一個很是弱智的行爲來保存UTF-8編碼的文件,他們自做聰明地在每一個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到不少難以想象的問題,好比,網頁第一行可能會顯示一個「?」,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。建議你下載Notepad++代替記事本,不但功能強大,並且免費!記得把Notepad++的默認編碼設置爲UTF-8 without BOM便可:日誌
建立版本庫:code
Git init 初始化倉庫 --- git clone ssh/http地址 ---- git add git.txt添加文件 --- git commit -m 「提示信息"
版本回退:
1.git log 查看提交日誌
2.git reflog 查看全部的版本信息(包括已經刪除得commit記錄)
3.git reset --hard HEAD^ 回退到上一個版本,上上個版本是HEAD^^,上100個版本HEAD~100。
4.git reset --hard 10994a(commit id)回退到指定版本。版本號不必寫全,前幾位就能夠
了,Git會自動去找。固然也不能只寫前一兩位,由於Git可能會找到多個版本號,就沒法肯定是哪個了。
5.git cherry-pick合併某個commit : git cherry-pick能夠選擇某一個分支中的一個或幾個commit(s)來進行操做(操做的對象是commit)。(要切換到須要操做得分支而且拉取代碼)
HEAD指向的版本就是當前版本,所以,Git容許咱們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log能夠查看提交歷史,以便肯定要回退到哪一個版本。
要重返將來,用git reflog查看命令歷史,以便肯定要回到將來的哪一個版本。
工做區和暫存區:stage爲暫存區
管理修改:
Git跟蹤並管理的是修改,而非文件。
用git diff HEAD -- git.txt命令能夠查看工做區、暫存區和版本庫裏面最新版本的區別。
撤銷修改:
git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另外一個分支」的命令。
讓這個文件回到最近一次git commit或git add時的狀態。
1.在工做區中撤銷就回到版本庫中最新的狀態同樣。
2.提交了暫存區撤回,就回到add工做區。
以前學過的git reset HEAD <file> 回退版本,git status 查看狀態仍是能看到提示說什麼文件進行了修改。
小結:
場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令git checkout -- file。 場景2:當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>,就回到了場景1,第二步按場景1操做。 場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,進行版本回退,不過前提是沒有推送到遠程庫 分支:(修復bug分支和新功能開發分支) 查看分支:git branch 建立分支:git branch <name> 切換分支:git checkout <name> 建立+切換分支:git checkout -b <name> 合併某分支到當前分支:git merge <name> 刪除分支:git branch -d <name> 強行刪除:git branch -D <name>
一般Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。
若是要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。
git merge --no-ff -m "merge with no-ff" dev --no--ff表示禁用Fast forward,由於建立新的commit,故加上 -m 「提示信息」
當你要臨時解決一個緊急bug的時候,能夠用git stash把當前工做區的內容儲藏起來。經過創建分支去解決bug。
工做現場還在,Git把stash內容存在某個地方了,可是須要恢復一下,有兩個辦法:
1.用git stash apply恢復,可是恢復後,stash內容並不刪除,你須要用git stash drop來刪除; 2.用git stash pop,恢復的同時把stash內容也刪了: 你能夠屢次stash,恢復的時候,先用git stash list查看,而後恢復指定的stash,用命令: $ git stash apply stash@{0}
多人協做模式:
查看遠程庫信息,使用git remote -v;若是沒有推送權限看不到push地址 1.首先,能夠試圖用git push origin <branch-name>推送本身的修改; 2.若是推送失敗,則由於遠程分支比你的本地更新,須要先用git pull試圖合併; 3.若是合併有衝突,則解決衝突,並在本地提交; 4.沒有衝突或者解決掉衝突後,再用git push origin <branch-name>推送就能成功! 若是git pull提示no tracking information,則說明本地分支和遠程分支的連接關係沒有建立,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
標籤管理:
標籤就是指向某個commit的指針,不能移動;分支能夠移動。
建立標籤:git tag v1.0 或者git tag v0.9 f788882(指定的commit id)
查看標籤信息:git show v0.9
還能夠建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
注意:標籤老是和某個commit掛鉤。若是這個commit既出如今master分支,又出如今dev分支,那麼在這兩個分支上均可以看到這個標籤。
命令git push origin <tagname>能夠推送一個本地標籤; 命令git push origin --tags能夠推送所有未推送過的本地標籤; 命令git tag -d <tagname>能夠刪除一個本地標籤; 命令git push origin :refs/tags/<tagname>能夠刪除一個遠程標籤。 在GitHub上,能夠任意Fork開源倉庫; 本身擁有Fork後的倉庫的讀寫權限; 能夠推送pull request給官方倉庫來貢獻代碼。