1. 配置
使用git之前,必須讓git知道你是誰(代碼作者)府框,以及如何聯(lián)系(給你發(fā)郵件):
git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"
備注:如果要修改配置,重新執(zhí)行上述命令。
查看所有的配置:
git config --list
2. 創(chuàng)建版本庫
新建目錄隅忿,初始化為Git代碼庫
git init [project-name]
在當(dāng)前目錄新建Git代碼庫
mkdir [project-name]
cd [project-name]
git init
從遠(yuǎn)程下載項目和項目歷史
git clone [url]
3. 增加/刪除/修改/提交文件
查看狀態(tài):
git status
Changes to be committed:(默認(rèn)綠色)待提交的改變(還未執(zhí)行g(shù)it commit)
Changes not staged for commit: (默認(rèn)紅色)待加入暫存區(qū)的改變(還未執(zhí)行g(shù)it add)
Untracked files: (默認(rèn)紅色)未追蹤的文件(新文件在版本庫的狀態(tài))
查看變更內(nèi)容
git diff
添加文件/目錄到暫存區(qū)
git add [file1] [file2] ... // 添加指定文件
git add [dir] // 添加指定目錄到暫存區(qū)
git add . // 添加當(dāng)前目錄下所有文件
git add -p // 針對文件的多處變化,可以實現(xiàn)分次提交(每個文件的修改都需要確認(rèn))
刪除文件
git rm [file1] [file2] ... // 刪除工作區(qū)文件邦尊,并且將這次刪除加入暫存區(qū)
git rm --cached [file] // 停止追蹤指定文件背桐,但該文件保留在工作區(qū)
修改文件名,并加入到暫存區(qū)
git mv [src-file] [dist-file]
提交文件到倉庫區(qū)
git commit -m "message"
其他提交文件到倉庫區(qū)
git commit [file1] [file2] ... -m "message" // 添加指定文件到倉庫蝉揍,并做comment
git commit -a // 提交工作區(qū)被改變的文件到倉庫區(qū)(彈出界面链峭,展示當(dāng)前被改變的文件,需要自定義comment)
git commit -am "message" // 提交工作區(qū)被改變的文件直接到倉庫區(qū)又沾,并做comment
git commit -v // 彈出新窗口弊仪,展示diff信息,comment并提交
git commit --amend -m "message" // 修改最后一次commit的comment
git commit --amend [file1] [file2]... // 將文件加入到最后一次提交記錄中(對新文件不生效)
4. 查看記錄
顯示當(dāng)前分支的版本歷史
git log
顯示commit記錄杖刷,每次commit的發(fā)生變更的文件
git log --stat
顯示過去5次的提交励饵,并在同一行展示
git log -5 --pretty --oneline
小技巧:給命令去別名,查看最近N次提交的信息(包含作者滑燃,提交日期役听,commitID,提交信息等)
git config --global alias.logs = 'log --pretty=format:"%h %an(%ad)-%s" --date=format:"%Y-%m-%d %H:%M:%S"'
git logs: 查看所有的提交
git logs -10: 查看最近10次的提交記錄
查看提交的git日志(以圖的形式展示)
git log --graph
小技巧:
git config --global alias.graph 'logs --graph'
比較工作區(qū)和暫存區(qū)的差異
git diff
比較兩個分支的差異
git diff master develop --stat // 比較兩個分支的差異表窘,展示每個文件的修改情況
git diff master develop -- [file] // 比較兩個分支的差異典予,展示指定文件的具體差異
git diff commitId commitId -- [file] // 比較兩次提交的差異,展示指定文件的具體差異
5. 撤銷
撤銷工作區(qū)的修改
git checkout . // 撤銷工作區(qū)所有的修改
git checkout -- index.html // 撤銷工作區(qū)指定文件的修改
撤銷暫存區(qū)的修改
git reset . // 撤銷暫存區(qū)的文件到工作區(qū)乐严,但是修改依然保留
git reset index.html // 撤銷暫存區(qū)指定的文件瘤袖,但是修改依然保留
git reset --hard HEAD // 撤銷工作區(qū)和暫存區(qū)的修改(但是新增文件不在此約束下,依然存在)
git clean -df // 從工作目錄中移除沒有track的文件
6. 分支管理
顯示本地所有分支
git branch
顯示所有遠(yuǎn)程分支
git branch -r
列出所有本地分支和遠(yuǎn)程分支
git branch -a
新建分支昂验,但是停留在當(dāng)前分支
git branch [branch-name]
新建一個分支孽椰,與指定的遠(yuǎn)程分支建立追蹤關(guān)系
git branch --track [branch] [remote-branch]
刪除本地分支
git branch -d [branch-name] // 刪除已經(jīng)合并的分支(刪除還未合并的分支,會報錯)
git branch -D [branch-name] // 刪除指定分支(強制刪除)
刪除遠(yuǎn)程分支
git branch -dr // 刪除與遠(yuǎn)程分支的聯(lián)系
git push origin --delete [branch-name] // 刪除遠(yuǎn)程分支
OR
git push origin :[branch-name]
切換到該分支
git checkout - // 切換到上一個分支
git checkout [branch] // 目標(biāo)分支存在凛篙,切換到指定分支
git checkout -b [branch] // 目標(biāo)分支不存在黍匾,新建分支并切換到指定分支
將現(xiàn)有本地分支和遠(yuǎn)程分支建立追蹤關(guān)系
git branch --set-upstream [branch] [remote-branch]
合并指定分支到當(dāng)前分支
git merge [branch]
git merge [remote-branch]
git cherry-pick [commit] // 選擇指定的commit合并到當(dāng)前分支
7. Tag管理
展示所有本地標(biāo)簽
git tag
git tag -n // 展示tag列表和對應(yīng)的message信息
創(chuàng)建Tag
git tag [tagname]
git tag [tagname] -m "message" // 添加tag的同時添加comment注釋
git tag [tagname] [commitid] -m "message" // 對指定的commitID添加tag并添加comment注釋
刪除Tag
git tag -d [tagname]
展示Tag信息
git show [tagname]
提交Tag到遠(yuǎn)程
git push [remote] [tag]
git push [remote] --tags // 提交本地所有tag到遠(yuǎn)程
新建分支,并指向Tag
git checkout -b [branch] [tag]