git學習筆記
工作區--》暫存區--》本地版本庫--》遠程版本庫
git status //查看當前git狀態
git add a.txt
git add -A //添加所有文件,A大寫
git commit -m 'add a file'
git log
git reflog
git diff HEAD -- a.txt cat a.txt //查看文件內容
//版本回退
#回退所有內容到上一個版本
git reset HEAD^
#回退a.py這個文件的版本到上一個版本
git reset HEAD^ a.py
#向前回退到第3個版本
git reset --soft HEAD~3
#將本地的狀態回退到和遠程的一樣
git reset --hard origin/master
#回退到某個版本
git reset 057d
#回退到上一次提交的狀態,按照某一次的commit完全反向的進行一次commit
git reset HEAD
//遠程的回退
git push origin HEAD --force #遠程提交回退
下面的命令也可以實現遠程版本回退
git reset --hard HEAD~1
git push --force
//文件刪除
rm a.txt 與 git rm a.txt -f 等價 //工作區刪除文件 -f強制刪除
git rm a.txt --cached //從暫存區刪除文件
//如果刪錯了,使用checkout從版本庫還原
git checkout -- a.txt //download a.txt from origin//從本地版本庫恢復文件
//如果確要刪除,commit即可
git commit -m "del a.txt"
git commit -a //提交所有,包括刪除的~
使用普通用戶創建
$ git config --global user.name "lypeng"
$ git config --global user.email "893371810@qq.com"
git config core.ignorecase false //區分大小寫
//創建ssh key
$ ssh-keygen -t rsa -C "893371810@qq.com"
將id_rsa.pub復制到github中
//遠程操作
先創建ssh key之后再來遠程操作
git remote -v //查看遠程信息
//不用每次都輸入密碼,采用ssh方式克隆,把rsa_pub文件拷貝到github
git clone git@github.com:lypeng29/baike_spider
git push
git remote rm origin //刪除遠程主機名
git remote add origin git@github.com:ypengshop/tpfcms.git //添加遠程主機名為origin,也可以為其他
git push <遠程主機名> <本地分支名>:<遠程分支名>
git push origin master:master //推送本地版本庫到遠程master分支,后面的:master可以不寫,
git push origin master //即遠程與本地分支名相同均為master
git push origin :master//推送空的本地分支到遠程master分支,即刪除遠程master分支
git push origin --delete master//刪除遠程master分支 -u
//-u參數指將origin設置為默認遠程主機,下次推送可直接使用git push,例如下面兩條
git push -u origin master //第一次推送
git push //第二次推送
//pull
git pull origin master //從遠程拉取文件
git branch --set-upstream-to=origin/master master //綁定分支進行追蹤
git pull //簡寫
強制覆蓋本地文件
git fetch --all
git reset --hard origin/master
//關于創建tag,相當于版本記錄
git tag v1.0
git tag -a v1.0 -m "first version" //普通帶注釋的tag
git tag -s v1.0 -m "first version" //有簽名的tag,前提是你有GPG私鑰!GPG類似ssh,有公鑰和私鑰,公鑰加密,私鑰解密。
git tag -d v1.0 //刪除
//實際應用
git add test.txt
git commit -m 'upd test file'
git push origin master
git tag -a v1.0 -m "first version"
git push origin --tag //tag信息,需單獨推送
//關于分支
git branch//查看分支列表
git checkout -b dev master //創建dev分支
git push origin local_branch:remote_branch
//推送,如果remote_branch不存在則會自動創建分支。
類似,git push origin :remote_branch,local_branch留空的話則是刪除遠程remote_branch分支。
git checkout master //切換到master分支
git merge --no-ff dev
//對Dev分支進行合并//默認情況下,Git執行"快進式合并"(fast-farward merge),會直接將Master分支指向Develop分支。使用--no-ff參數后,會執行正常合并,在Master分支上生成一個新節點。為了保證版本演進的清晰,我們希望采用這種做法。關于合并的更多解釋,請參考Benjamin Sandofsky的《Understanding the Git Workflow》http://sandofsky.com/blog/git-workflow.html。
四、 功能分支
接下來,一個個來看這三種"臨時性分支"。
第一種是功能分支,它是為了開發某種特定功能,從Develop分支上面分出來的。開發完成后,要再并入Develop。
功能分支的名字,可以采用feature-*的形式命名。
創建一個功能分支:
git checkout -b feature-x develop
開發完成后,將功能分支合并到develop分支:
git checkout develop
git merge --no-ff feature-x
刪除feature分支:
git branch -d feature-x
五、預發布分支release
第二種是預發布分支,它是指發布正式版本之前(即合并到Master分支之前),我們可能需要有一個預發布的版本進行測試。
預發布分支是從Develop分支上面分出來的,預發布結束以后,必須合并進Develop和Master分支。它的命名,可以采用release-*的形式。
創建一個預發布分支:
git checkout -b release-1.2 develop
確認沒有問題后,合并到master分支:
git checkout master
git merge --no-ff release-1.2
# 對合并生成的新節點,做一個標簽
git tag -a 1.2
再合并到develop分支:
git checkout develop
git merge --no-ff release-1.2
最后,刪除預發布分支:
git branch -d release-1.2
六、關于bug分支
創建一個修補bug分支:
git checkout -b fixbug-0.1 master
修補結束后,合并到master分支:
git checkout master
git merge --no-ff fixbug-0.1
git tag -a 0.1.1
再合并到develop分支:
git checkout develop
git merge --no-ff fixbug-0.1
最后,刪除"修補bug分支":
git branch -d fixbug-0.1
- 前言
- Interview
- 01-cookie與session
- 04-mysql索引
- 05-memcache與redis
- 06-高并發
- 07-主從同步
- 08-myisam與inondb
- 09-框架區別
- 10-php7新特性
- 11-設計模式
- 12-MySQL優化
- 13-php自動加載機制
- 14-MongoDB命令
- 15-Python爬蟲之scrapy框架
- 16-php運行原理
- 17-單點登錄
- Linux
- linux常見命令
- awk
- sed
- bash-shell
- vim學習教程
- PHP
- php運行機制
- php執行效率
- word2pdf
- php預覽Word
- wechat_wafter2
- Python
- python
- win-bat
- svn操作命令
- git常用操作命令
- git_install
- gitlab安裝
- nextcloud
- docker