①初始化一個Git倉庫:git initgit
②添加文件到Git倉庫:1.git add<file> ; 2.git commitruby
①查看工做區狀態,文件是否被修改過:git status服務器
②查看修改的內容:git diffssh
①HEAD:當前版本spa
②HEAD^:上個版本code
③定位版本:git reset --hard commit_id
orm
④git log:穿梭前,用git log
能夠查看提交歷史,以便肯定要回退到哪一個版本server
⑤git reflog:要重返將來,用git reflog
查看命令歷史,以便肯定要回到將來的哪一個版本。ci
①工做區:就是你在電腦裏能看到的目錄,好比個人learngit
文件夾就是一個工做區開發
②版本庫:工做區有一個隱藏目錄.git
,這個不算工做區,而是Git的版本庫。
③暫存區:Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區。
第一步是用git add
把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit
提交更改,實際上就是把暫存區的全部內容提交到當前分支。
①每次修改,若是不add到暫存區,就不會加入到commit中
①git checkout -- file:丟棄工做區的修改
②git reset HEAD file:把暫存區的修改撤銷掉,從新放回工做區
①git rm:從版本庫中刪除文件
①關聯一個遠程庫:git remote add origin git@server-name:path/repo-name.git
②關聯後第一次推送master分支的全部內容:git push -u origin master
③此後,每次本地提交後,只要有必要,就可使用命令git push origin master
推送最新修改
ps:因爲遠程庫是空的,咱們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。
①要克隆一個倉庫,首先必須知道倉庫的地址,而後使用git clone
命令克隆
②Git支持多種協議,包括https
,但經過ssh
支持的原生git
協議速度最快
①查看分支:git branch
②建立分支:git branch<name>
③切換分支:git cheakout<name>
④建立+切換分支:git cheakout -b <name>
⑤合併某分支到當前分支:git merge<name>
⑥刪除分支:git branch - d <name>
①查看分支合併圖:git log -- graph
eg:git log --graph --pretty =oneline --abbrev -commit
①合併分支時加--no-ff參數:普通模式合併,合併後的歷史有分支,禁用fast forward
eg:git log --no-ff-m"merge with no--ff"dev
①git stash:把當前工做現場隱藏起來,去修復bug
②git stash pop:恢復工做現場同時刪除stash內容
①開發一個新feature,最好新建一個分支;
②若是要丟棄一個沒有被合併過的分支,能夠經過git branch -D <name>
強行刪除
①git remote -v:查看遠程庫信息
②git push origin branch-name:從本地推送分支
③git pull:推送失敗時,抓取遠程的新提交
④git checkout -b branch-name origin/branch-name:在本地建立和遠程分支對應的分支(本地和遠程分支的名稱最好一致)
⑤git branch --set-upstream branch-name origin/branch-name:創建本地分支和遠程分支的關聯
①git tag <name>:新建一個標籤(默認爲HEAD,也能夠指定commit id)
②git tag -a <tagname> -m "blablabla...":能夠指定標籤信息
③git tag -s <tagname> -m "blablabla...":能夠用PGP簽名信息
④git tag:查看全部標籤
①git push origin <tagname>:推送一個本地標籤
②git push origin --tags:推送所有未推送過的本地標籤
③git tag -d <tagname>:刪除一個本地標籤
④git push origin :refs/tags/<tagname>:刪除一個遠程標籤
①在GitHub上,能夠任意Fork開源倉庫;
②本身擁有Fork後的倉庫的讀寫權限;
③能夠推送pull request給官方倉庫來貢獻代碼。
①忽略某些文件時,須要編寫.gitignore
;
①咱們只須要敲一行命令,告訴Git,之後
st
就表示status
:git config --global alias.st status
eg:
$ git config --global alias.co checkout $ git config --global alias.ci commit $ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
GitHub就是一個免費託管開源代碼的遠程倉庫。可是對於某些視源代碼如生命的商業公司來講,既不想公開源代碼,又捨不得給GitHub交保護費,那就只能本身搭建一臺Git服務器做爲私有倉庫使用。
例如大衆點評code.dianpingoa.com