- 最小配置:設(shè)置user.name and user.email
git config < --global > user.name 'your_name'
--global //對當前用戶所有的倉庫都有效
--local //只對某一個倉庫有效
--system //對系統(tǒng)所有的登錄用戶有效,基本不用
git config --list --< --global >//查看global的配置,local,sytem同理
創(chuàng)建一個git倉庫
兩個場景
-
已經(jīng)有了項目代碼了
cd 項目所在文件夾git init -
新建項目直接用git管理
cd 項目所在文件夾git init your_project會在當前路徑創(chuàng)建和項目名稱相同的文件夾cd your_project
git工作區(qū)和暫存區(qū)
git status //查看文件狀態(tài)(是否修改,add或者commit)
git add < dirName... > <fileName...>//可以同時添加多個文件或文件夾
git add將文件加入了暫存區(qū)
git add -u //可以將git已經(jīng)跟蹤了的文件(就是已經(jīng)add過了的)一起add
git commit -m 'commit 原因'
文件重命名
- 一般方法:
mv oldfFileName newName//這將使oldFileName刪除再新建一個newName文件,文件內(nèi)容不變
git add newName
git rm oldFileName
- 簡單方法:
git mv oldname newname
git commit -m '原因'
- git log 使用
git log //查看log 有commit id,Author(作者),email,Date和提交注釋信息。
-n3//查看最近3個
--oneline//簡潔顯示
--all //查看所有分支
--graph //圖行化查看分支哪里來的
--不加參數(shù)就支持看當前分支的log
git reset 版本回退和前進
git reset --hard 版本id //回退到指定版本,可以找回永久刪除的文件
git reset --hard HEAD^^//一個^后退一個版本
git reset --hard HEAD~n//n為幾就是后退幾個
--soft id//僅僅修改本地庫的HEAD指針
--mixed id//修改本地庫和暫存區(qū)的HEAD指針
--hard id //本地庫 暫存區(qū) 工作區(qū)(寫代碼)HEAD指針都改變
- git diff
git diff filename//將工作區(qū)文件和本地區(qū)的文件比較
git diff id filename //將某個版本的本地文件和當前工作區(qū)文件對比
- git分支
git branch -v//查看分支
git branch 分支名//創(chuàng)建分支
git checkout 分支名稱//切換分支
git merge B分支名稱//合并分支,注意要先到A分支然后把B分支合并到A
- 分支沖突:
就是兩個分支修改了同一個地方,git不知道要采用誰的修改。
- 解決:
首先把文件里面的特殊符號刪除,保存退出;再git add filename;最后git commit -m'原因' 即可
- commit tree blob區(qū)別
一個commit對應(yīng)一個tree,一個tree下面有許多blob(指某一個具體文件),在git里面兩個一模一樣的文件對應(yīng)同一個blob,這樣就能減少空間的浪費。
git cat-file -t id//看類型,例如commit,tree,blob
git cat-file -p id//看內(nèi)容
- git&&github
git remote add 別名 GitHub地址//相當于起別名
git remote -v//查看別名對應(yīng)的地址
git push 別名 分支//推送文件到GitHub倉庫
git clone 地址//把遠程庫clone到本地,而且也把本地庫的別名和初始化也完成了。
git pull 遠程庫別名 遠程庫分支//拉取遠程庫的指定分支
pull = fetch + merge
git fetch 別名 分支
git merge 別名/分支
以上兩個操作相當于一個git pull