版本控制系統
初次使用前的配置
git config --global user.name "用戶名"
git config --global user.email "郵箱"
查看配置
git config --list
基礎知識
git每個版本都是獨立保存。
working directory | stage(index) | repository(HEAD) | ||
---|---|---|---|---|
工作區 | add checkout | 暫存區 | commit reset | 倉庫 |
工作流程:
- 在工作區添加、修改文件
- 將需要進行版本管理的文件放入暫存區
- 將暫存區的文件提交到倉庫
三種狀態:
- 已修改 modified
- 已暫存 staged
- 已提交 committed
本地管理
- 新建文件夾並進入
git init
初始化,將建立.git
隱藏文件夾- 新建並編輯文本文件,
git add 文件名
放入暫存區 git commit -m "更改信息"
提交到倉庫--amend
更正最後一次提交
查看工作狀態和歷史提交
查看狀態
git status
- 新建文件,在工作區,untracked
- add之後,進入暫存區,to be commited;
git reset HEAD [文件]
取消暫存(to unstage) - commit之後,進入倉庫,nothing to commit, working directory clean
- 修改倉庫文件(modified),回到工作區,未暫存,繼續add和commit;
git checkout -- 文件
放棄修改 - 修改暫存區文件(modified),修改前文件依然在暫存區,待提交;修改後文件回到工作區,繼續add和commit
查看歷史提交
git log
--oneline
--graph
--all
git reflog
回到過去
git reset HEAD~
回到上一個版本
git reset HEAD~數字
回到多個版本以前
git reset HEAD~版本號
回到指定版本
--soft
移動HEAD指針,但不回滾到暫存區,相當於撤銷上一次commit
[--mixed]
默認,移動HEAD指針,並回滾到暫存區
--hard
移動HEAD指針,並回滾到暫存區,同時將暫存區還原到工作區
git reset 版本號 文件/目錄
回滾個別文件,但不會移動指針
git reset 版本號
回滾到之後
版本對比
git diff
當前工作區和暫存區
git diff 版本號
當前工作區和倉庫版本
git diff HEAD
當前工作區和倉庫最新版
git diff --cached [版本號]
暫存區和倉庫版本
git diff 版本號1 版本號2
兩個倉庫版本
刪除文件
git rm 文件
刪除文件,只刪除工作區和暫存區,也就是取消跟蹤
git rm --cached 文件
只刪除暫存區
git checkout -- 文件
撤銷刪除
重命名
git mv 舊文件名 新文件名
分支
git branch 分支名
創建分支
git checkout 分支名
切換分支,本質是指針指向新分支
git checkout -b 分支名
創建並切換分支
git merge 分支名
合併分支到當前分支。如果不同分支都有改動,要先解決衝突。
git branch -d 分支名
刪除分支
git checkout 版本
匿名分支
checkout 和 reset
checkout:從歷史版本或者暫存區拷貝到工作區;切換分支
reset:恢復文件時,沒有soft或者hard。
reset將文件恢復到暫存區,而checkout同時覆蓋暫存區和工作區。
checkout在切換分支前會檢查是否clean,reset --hard直接覆蓋。
reset移動HEAD所在分支的指向,checkout只移動HEAD自身。