筆記整理自廖雪峯老師Git教程git
一、 建立版本庫app
`git init`
二、 把文件添加到倉庫(從工做區到暫存區)spa
`git add readme.txt` `git add .`
三、 把文件提交到倉庫(從暫存區到當前分支)指針
`git commit -m 'commit'`
四、 添加一個遠程庫:生成 http://xxx.git
code
五、 要查看遠程庫的信息,用git remote
,或者,用git remote -v
顯示更詳細的信息orm
六、 關聯已有的本地倉庫blog
`git remote add origin xxx.git` (origin是遠程庫的名字)
七、 把本地庫的全部內容推送到遠程庫上,把當前分支master推送到遠程排序
第一次推送master分支,加上-u參數,把本地的master分支和遠程的master分支關聯起來 `git push -u origin master` 把本地的修改提交到遠程的master分支 `git push origin master` 若是咱們只有一個master分支,就能夠直接: `git push`
八、 要克隆一個倉庫,首先必須知道倉庫的地址,而後使用git clone命令克隆教程
`git clone http://xxx.git`
熟練使用以上步驟就能夠愉快的使用git了,可是想要更進一步,還須要往下看:rem
工做區
就是你本地的項目文件夾,版本庫
是工做區裏的.git文件。
Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區
,還有Git爲咱們自動建立的第一個分支master
,以及指向master的一個指針叫HEAD
。
咱們使用git提交能夠看爲三步:
第一步是用git add
把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit
提交更改,實際上就是把暫存區的全部內容提交到當前分支;
第三步是用git push
把本地分支中的修改提交到遠程庫
九、HEAD指向的版本就是當前版本, Git容許咱們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
十、穿梭前,用git log
能夠查看提交歷史,以便肯定要回退到哪一個版本, 用git log --graph
命令能夠看到分支合併圖
十一、要重返將來,用git reflog
查看命令歷史,以便肯定要回到將來的哪一個版本
十二、git status
查看版本庫狀態
1三、用git diff HEAD -- readme.txt
命令能夠查看工做區和版本庫裏面最新版本的區別
1四、git checkout -- file
能夠丟棄工做區的修改(用版本庫裏的版本替換工做區的版本)
1五、用命令git reset HEAD <file>
能夠把暫存區的修改撤銷掉,從新放回工做區
1六、命令git rm
用於刪除一個文件
1七、查看分支:git branch
1八、建立分支:git branch <name>
1九、切換分支:git checkout <name>
20、建立+切換分支:git checkout -b <name>
2一、合併某分支到當前分支:git merge <name>
2二、刪除分支:git branch -d <name>
2三、若是要丟棄一個沒有被合併過的分支,能夠經過git branch -D <name>
強行刪除
2四、Git還提供了一個git stash
功能,能夠把當前工做現場「儲藏」起來,等之後恢復現場後繼續工做
2五、用git stash list
命令查看保存的工做區
2六、用git stash apply
恢復工做現場,可是恢復後,stash內容並不刪除
2七、用git stash drop
來刪除stash內容
2八、用git stash pop
,恢復的同時把stash內容也刪了
2九、本地新建的分支若是不推送到遠程,對其餘人就是不可見的,
30、從本地推送分支,使用git push origin branch-name
,若是推送失敗,先用git pull抓取遠程的新提交
3一、在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name
,本地和遠程分支的名稱最好一致
3二、創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name
3三、從遠程抓取分支,使用git pull
,若是有衝突,要先處理衝突
3四、git rebase
操做能夠把本地未push的分叉提交歷史整理成直線;
3五、git rebase
的目的是使得咱們在查看歷史提交的變化時更容易,由於分叉的提交須要三方對比
3六、命令git tag <tagname>
用於新建一個標籤,默認爲HEAD,也能夠指定一個commit id
3七、命令git tag -a <tagname> -m "blablabla..."
能夠指定標籤信息
3八、命令git tag
能夠查看全部標籤,標籤不是按時間順序列出,而是按字母排序的
3九、能夠用git show <tagname>
查看標籤信息,能夠看到說明文字
40、命令git push origin <tagname>
能夠推送一個本地標籤;
4一、命令git push origin --tags
能夠推送所有未推送過的本地標籤;
4二、命令git tag -d <tagname>
能夠刪除一個本地標籤;
4三、命令git push origin :refs/tags/<tagname>
能夠刪除一個遠程標籤。
4四、忽略某些文件時,須要編寫.gitignore;
4五、.gitignore文件自己要放到版本庫裏,而且能夠對.gitignore作版本管理!
4六、被忽略的文件,能夠用-f強制添加到Git
4七、能夠用git check-ignore
命令檢查.gitignore哪一個規則寫錯了
4八、配置別名:git config --global alias.st status
,--global參數是全局參數,也就是這些命令在這臺電腦的全部Git倉庫下都有用
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"
4九、每一個倉庫的Git配置文件都放在.git/config文件中,能夠手動修改配置,別名就在[alias]後面,要刪除別名,直接把對應的行刪掉便可,而當前用戶的Git配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中
遠程拉取版本庫
git clone http://xxx.git cd xxx
建立新版本庫
git init git remote add origin http://xxx.git
提交更新
git add . //git rm xxx git commit -m "Initial commit" git push //-u origin master