理解幾個概念:
工作區: 就是你在電腦上看到的目錄(裏面會有.git隱藏目錄);
版本庫: 就是.git隱藏目錄。這裏git commit -m "註釋"命令就會把暫存區的所有內容提交到當前分支。
暫存區: 在.git中的一個stage,爲暫存區,這裏git add xxx.md命令就是把xxx.md文件添加到暫存區。
配置全局用戶名、郵箱
git config –global user.name “taopingping”
git config –global user.email “[email protected]”
創建版本庫:
git init
提交更改文件
git add xxx.md 添加到暫存區
git status 查看文件是否有未提交的
git diff xxx.md 比較
git commit -m '提交註釋'
查看歷史
git log
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit
git reflog 查版本號
版本回退
git reset --hard HEAD^ 一個^表示回退上一個版本。HEAD~n:表示回退到上n版本
git撤銷修改和刪除文件
情況1:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的文件,然後add添加到暫存區,最後commit掉。
我可以按以前的方法直接恢復到上一個版本。使用 git reset --hard HEAD^
git checkout --fileName 可以丟棄工作區的修改
未放到暫存區:
直接用git checkout --fileName,直接回到和版本庫一樣的狀態。
放到暫存區
直接用git checkout --fileName,撤銷修改就回到添加暫存區後的狀態。
rm xx.md –> git add xx.md –> git commit -m "註釋"
遠程倉庫
創建SSH Key:在用戶主目錄下,看看有沒有.ssh目錄有沒有這兩個文件
id_rsa –私鑰
id_rsa.pub –公鑰
沒有上面兩個文件就創建:
ssh-keygen -t rsa -C “[email protected]”
登陸github
賬號、密碼
添加SSH Key
創建遠程庫(此時是空的,可以把本地倉庫推送到該空庫)
git remote add origin master https://github.com/taopingping1989/test.git
git push -u origin master
克隆一個本地庫
git clone https://github.com/taopingping1989/test2
創建與合併
git checkout -b dev,創建並切換分支。等於
git branch dev
git checkout dev
查看當前分支:git branch
把分支dev的內容用快進模式合併到當前分支: git merge dev
刪除分支: git branch -d dev
解決衝突
在分支dev上改了a文件,添加到暫存區且提交到庫。這是發現master主分支上竟然a文件已經被更改,
此時需要到master分支上來合併dev分支。git merge dev
分支管理策略
可以禁用fast-forward模式,因爲這個模式刪除分支後,會丟分支信息,
git merge -no-ff -m "註釋" dev
分支策略:
保證master主分支非常穩定,用於發佈新版本。
在新建分支dev上開發,後期合併到master主分支。
bug分支,臨時新建一個分支用於修復bug,合併到主分支後,刪掉該臨時分支。
git stash:可以把當前工作現場隱藏起來,不會被git status發現。這要在開新的臨時bug分支時,就不會干擾當前的開發分支dev。
git stash list
git stash apply 恢復,stash內容不會被刪除,所以得刪除
git stash drop
git stash pop,恢復的同時,也刪除內容。
多人協作
git remote
git remote -v
推送分支:git push origin master
master分支是主分支,時刻需要與遠程同步。
一些修復bug分支不需要推送遠程,可以先合併到主分支上,通過推送主分支到遠程。
抓取分支:
使用命令創建本地dev分支:git checkout -b dev origin/dev
開發完成把dev分支推送到遠程去: git push origin dev
推送失敗:
先用git pull把最新的提交從origin/dev抓取下來,在本地合併,解決衝突,在合併,同svn。
git pull發現也推送失敗:
沒有指定本地dev分支與遠程origin/dev分支鏈接。git branch --set-upstream dev origin/dev
git pull成功,手動合併
推送git push origin dev成功。
Git基本常用命令
mkdir: XX (創建一個空目錄 XX指目錄名)
pwd: 顯示當前目錄的路徑。
git init 把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件。
git add XX 把xx文件添加到暫存區去。
git commit –m “XX” 提交文件 –m 後面的是註釋。
git status 查看倉庫狀態
git diff XX 查看XX文件修改了那些內容
git log 查看歷史記錄
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一個版本(如果想回退到100個版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件內容
git reflog 查看歷史記錄的版本號id
git checkout — XX 把XX文件在工作區的修改全部撤銷。
git rm XX 刪除XX文件
git remote add origin https://github.com/taopingping1989/test.git 關聯一個遠程庫
git push –u(第一次要用-u 以後不需要) origin master 把當前master分支推送到遠程庫
git clone https://github.com/taopingping1989/test.git 從遠程庫中克隆
git checkout –b dev 創建dev分支 並切換到dev分支上
git branch 查看當前所有的分支
git checkout master 切換回master分支
git merge dev 在當前的分支上合併dev分支
git branch –d dev 刪除dev分支
git branch name 創建分支
git stash 把當前的工作隱藏起來 等以後恢復現場後繼續工作
git stash list 查看所有被隱藏的文件列表
git stash apply 恢復被隱藏的文件,但是內容不刪除
git stash drop 刪除文件
git stash pop 恢復文件的同時 也刪除文件
git remote 查看遠程庫的信息
git remote –v 查看遠程庫的詳細信息
git push origin master Git會把master分支推送到遠程庫對應的遠程分支上