codegit
圖片bash
視頻markdown
wordthis
so on編碼
git
能檢測代碼的差別性,可是對於圖片,視頻和word這些二進制的文件,git
只能跟蹤其大小變化.因此對於文字版本的控制,最好使用markdown以文本的形式
進行存儲.3d
由於文本是有編碼的,好比中文有經常使用的GBK編碼,日文有Shift_JIS編碼,若是沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,全部語言使用同一種編碼,既沒有衝突,又被全部平臺所支持。code
Unix的哲學是「沒有消息就是好消息」orm
git commit -m 'blabla'視頻
git commit -am 'blabla'圖片
這二者淺顯的區別是:-am
表示沒有新增長文件,只是對原來的文件作了修改,因此執行此命令沒問題.
若是新建了文件,就按正常步驟:
$ git add . $ git commit -m 'blabla'
git log
git log --pretty=oneline
$ git reset --hard HEAD
有時,咱們會有把當前版本在本地弄亂的狀況,執行上面命令便可回到最後一次提交的版本上去.
那麼上一個版本就是HEAD^
,上上一個版本就是HEAD^^
,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100
$ git reflog $ git co d62cd5c
➜ gittest git:(d62cd5c) git br * (detached from d62cd5c) master ➜ gittest git:(d62cd5c) git co master Warning: you are leaving 1 commit behind, not connected to any of your branches: d62cd5c update If you want to keep them by creating a new branch, this may be a good time to do so with: git branch new_branch_name d62cd5c Switched to branch 'master' ➜ gittest git:(master) git br testbr d62cd5c ➜ gittest git:(master) git br * master testbr ➜ gittest git:(master) git merge testbr Updating d28643d..d62cd5c Fast-forward readme.md | 2 ++ 1 file changed, 2 insertions(+)
用git diff HEAD -- readme.txt
命令能夠查看工做區和版本庫裏面最新版本的區別
git checkout -- file
能夠丟棄工做區的修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,這裏有兩種狀況:
一種是readme.txt自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;
一種是readme.txt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit
或git add
時的狀態。
git checkout -- file
命令中的--
很重要,沒有--
,就變成了「切換到另外一個分支」的命令.
如今你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm
刪掉,而且git commit
:
$ git rm test.txt rm 'test.txt' $ git commit -m "remove test.txt" [master d17efd8] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
1 .使用rm
直接刪除,而後恢復
➜ gittest git:(master) ls new.md readme.md ➜ gittest git:(master) rm new.md ➜ gittest git:(master) ✗ ls readme.md ➜ gittest git:(master) ✗ git co -- new.md ➜ gittest git:(master) ls new.md readme.md
2 .使用git rm
,工做區被刪除的文件也會消失
➜ gittest git:(master) ls new.md readme.md ➜ gittest git:(master) git rm new.md rm 'new.md' ➜ gittest git:(master) ✗ ls readme.md ➜ gittest git:(master) ✗ git st On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: new.md
但git
會保存一個版本記錄,只要是commit
過的,均可以放心刪除
,刪除後作個提交記錄就好.
查看分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
,強制刪除git branch -D <name>
刪除遠程分支:
As of Git v1.7.0, you can delete a remote branch using git push origin --delete <branchName> which is easier to remember than git push origin :<branchName>
當你的小夥伴從遠程庫clone時,默認狀況下,你的小夥伴只能看到本地的master分支。
如今,你的小夥伴要在dev分支上開發,就必須建立遠程origin的dev分支到本地,因而他用這個命令建立本地dev分支:
$ git checkout -b dev origin/dev
先用git pull
把最新的提交從origin/dev抓下來,而後,在本地合併,解決衝突,再推送
首先,能夠試圖用git push origin branch-name推送本身的修改;
若是推送失敗,則由於遠程分支比你的本地更新,須要先用git pull試圖合併;
若是合併有衝突,則解決衝突,並在本地提交;
沒有衝突或者解決掉衝突後,再用
git push origin branch-name
推送就能成功!若是git pull提示「no tracking information」,則說明本地分支和遠程分支的連接關係沒有建立,
用命令git branch --set-upstream branch-name origin/branch-name
。
切換到master,執行
$ git tag v1.0
能夠用命令git tag
查看全部標籤:
➜ gittest git:(master) ✗ git tag v0.9 v1.0
默認標籤是打在最新提交的commit上的。有時候,若是忘了打標籤,
方法是找到歷史提交的commit id,而後打上就能夠了:
$ git log --pretty=oneline --abbrev-commit 0f14186 add new.md d62cd5c update d28643d first (END)
$ git tag v0.9 0f14186
--abbrev-commit
這個參數表明: "show only partial prefixes of commit object names"
$ git tag -a v0.1 -m "version 0.1 released" 3628164
小結
命令git push origin <tagname>能夠推送一個本地標籤;
命令git push origin --tags能夠推送所有未推送過的本地標籤;
命令git tag -d <tagname>能夠刪除一個本地標籤;
命令git push origin :refs/tags/<tagname>能夠刪除一個遠程標籤。
git commit --amend
git commit --cached _yourfile_
Fork it
Clone it
Create your feature branch (git checkout -b my-new-feature)
Commit your changes (git commit -am 'Add some feature')
Push to the branch (git push origin my-new-feature)
Create new Pull Request