一、Git基礎知識
參考:https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6
1、文件的三種狀態
Git內部文件只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。已提交代表文件已被保存在本庫中了;已修改代表修改了某個文件,但還沒有被提交保存;已暫存代表把已修改的文件放在下次提交時要保存的清單中。因此文件本地流轉的工作區域有:工作目錄,暫存區域和git本地倉庫。
二、Git基礎操作
1、Git初始化
下載安裝Git后,第一件事就是使用 git config 初始化Git,配置名字和郵箱:
$ git config --global user.name "q w" $ git config --global user.email "123@email.com"
2、創建本地倉庫
a.在工作目錄中初始化新倉庫
$ git init $ git add * $ git commit -m "first commit"
b.從現有倉庫克隆
$ git clone gitURL localdir //講giturl倉庫克隆到本地localdir目錄下
3、Git本地文件操作
a.查看文件狀態
$ git status //查看文件有沒有被跟蹤,被跟蹤的文件有沒有被修改,被暫存的文件有沒有被提交
$ git diff //比較工作目錄和暫存區快照之間的差異
b.提交更新
$ git commit -m "commit note" //提交暫存區的修改文件到本地git版本庫
$ git commit -am "commit note" //跳過使用暫存區,Git把跟蹤的修改過的文件暫存起來一並提交,跳過git add步驟
c.移除文件(不重要,可替代)
$ git rm hello.c //若直接本地操作不通過git刪除,則在commit時會報錯:尚未暫存以備提交的變更。需要用git rm來記錄移除文件的操作
$ git rm --cached hello.c //移除文件跟蹤,但不實際在本地刪除文件
$ git rm log/\*.log //刪除log目錄下,所有log文件
d.移動文件(不重要,可替代)
$ git mv file1 file2 //這條命令等於1. mv file1 file2 2.git rm file1 3.git add file2
e.撤銷操作
$ git reset HEAD file //取消已經暫存的文件file
$ git checkout -- file //取消對file文件的修改(危險)
f.遠程倉庫的使用
一個項目可能會包含多個版本倉庫,比如國內+國外、測試環境+生產環境。
$ git remote -v //列出一個項目中包含的所有遠程倉庫 $ git remote add [shortname] [url] //關聯遠程倉庫,添加新的遠程倉庫shortname到項目中 $ git fetch [remote-name] //拉去遠程倉庫中,本地倉庫還沒有數據 $ git push origin master //推送數據到遠程倉庫 $ git remote show origin //查看遠程倉庫信息 $ git remote rename pb paul //遠程倉庫重命名 $ git remote rm paul //遠程倉庫刪除
g.打標簽
$ git tag //列出已有標簽 $ git tag -a v1.4 -m 'my version 1.4' //新建標簽 $ git push origin v1.5 //分享標簽,push命令默認不會把標簽傳送到遠端服務器,只有通過顯示的命令才行 $ git push origin --tags //一次推送所有標簽
4、Git分支
a.新建合並分支
$ git branch test //新建分支test
$ git checkout test //切換分支,其實是HEAD指向test分支(注:HEAD可以理解為指向當前所在分支的指針)
$ git checkout -b test //相當於同時執行了上面兩條分支
$ git merge test //合並test分支,表示把這個分支合並到當前分支
$ git branch -d test //刪除test分支,合並之后就可以刪掉了
b.遇到沖突時的分支合並
$ git merge test //開始合並test分支到當前分支
$ git status //可以查看那些文件發生沖突
直接打開修改沖突文件
$ git add //若所有沖突都解決了,則運行此命令,將文件標記為已解決狀態
並和遠程倉庫關聯
初始化本地倉庫:
git init
git remote add origin git@github.com:michaelliao/learngit.git