同步發佈在 my githubgit
git 參考開發流程github
git 經常使用命令shell
搭建 git 服務器vim
從master分支建立develop分支;bash
每次開發時,從develop分支拉出feature分支,feature分支命名規則爲feature/*;服務器
在feature分支上開發完成後,開發本身保證本身開發的功能完備、正確;app
將feature分支合併到develop分支,CI從develop分支上自動拉下代碼持續集成;運維
從develop分支拉出release分支,交付給測試,release分支命名規則爲release/sprint*;ssh
測試在release分支上打tag並完成測試,tag命名規則如RTL-MOFA-0.14.0.8;編輯器
測試完成後,將release分支交付給運維;
運維在release分支上打tag,tag命名規則如RTM-MOFA-0.14.0.8,並通知項目負責人將release分支合併到master分支上。
當線上有bug須要修復時,從部署的tag上,拉出batch分支,命名規則爲patch/bug**,經測試後,合併到develop分支,若是遵循以上原則,patch會最終會和入master分支。
注意: 一些爲了特定目的,好比特定客戶poc而開發的版本,不要按以上流程。而是單獨拉出獨立分支,獨立分支的命名規則如branch/lewa_poc
這裏提一下第4步,有一個新手容易犯的錯誤。將feature代碼合併到develop前,須要將最新的develop的代碼合併過來。以下:
# 切換到develop git checkout develop # 拉取最新的develop代碼 git pull # 切回feature/test git checkout feature/test # 合併 git merge develop # 解決衝突(若是有的話), commit # 切換到develop git checkout develop # 合併 git merge release/test # 提交最新代碼 git push
$ git config --list # 顯示當前Git配置 # 設置提交代碼時的用戶信息 $ git config [--global] user.name"[name]" $ git config [--global] user.email"[email address]" $ git init # 在當前目錄新建一個Git代碼庫 # 下載一個項目和它的整個代碼版本(但不包含分支,需手動新建分支關聯) $ git clone[url] #與遠程倉庫關聯,也能夠直接clone後自動關聯 $ git remote add origin [url]
# 添加指定文件到倉庫暫存區,能夠指定多個文件用空格隔開 $ git add [file1] [file2] ... # 例子 $ git add name1.txt name2.txt name3.txt # 添加指定目錄到暫存區,包括子目錄 $ git add [dir] # 添加當前目錄的全部文件到暫存區 $ git add . # 刪除工做區文件,而且將此次刪除放入暫存區 $ git rm [file1] [file2] ... # 中止追蹤指定文件,但該文件會保留在工做區 $ git rm --cached [file] # 更名文件,而且將這個更名放入暫存區 $ git mv [file-original] [file-renamed]# 例子 $ git mv oldName.txt newName.txt
# 查看git本地倉庫當前狀態 $ git status # 查看暫存區文件與倉庫文件之間的不一樣修改 $ git diff # 查看git詳細日誌,包含不一樣版本提交、時間、做者(前面配置email和name這裏會有用) $ git log # 查看簡潔化日誌 只顯示commit信息 $ git log--pretty=oneline # 查看命令記錄,回退版本時可根據命令編號來 $ git reflog # 顯示暫存區和最新commit的差別 $ git diff --cached [file] # 顯示工做區與當前分支最新commit之間的差別 $ git diff HEAD # 顯示某次提交的元數據和內容變化 $ git show [commit]
# 提交暫存區到本地倉庫區 $ git commit -m [message] # 提交暫存區的指定文件到本地倉庫區 $ git commit [file1][file2] ... -m [message] # 提交工做區自上次commit以後的變化,直接提交到本地倉庫區,只針對修改後的文件 # 若出現新的文件,仍是須要使用add命令,而不是用這個合成後的命令 $ git commit -am [message] # 若是上一次的commit沒有push到遠程倉庫中,使用以下代碼能夠修改提交描述 # 前提是沒有修改文件,不然是一次新的添加效果 $ git commit --amend -m [message] #---------------------------------- #經過vim編輯器來修改提交描述,效果同樣 $ git commit --amend
# 查看全部分支 $ git branch -a # 查看本地分支 $ git branch # 列出全部遠程倉庫分支 $ git branch -r
# 新建一個分支,但依然停留在當前分支 $ git branch branchName # or 本地從當前所在分支上建立一個新分支 $ git checkout -b branchName # or 拉取遠程某個分支到本地 git checkout -b 本地分支名 origin/遠程分支名
$ git checkout branchName
$ git branch -d branchName # 刪除分支 $ git branch -D branchName # 強制刪除
$ git push origin --delete [branch-name] $ git branch -dr [remote/branch]
-a
$ git branch -a
# 切換到所須要的branch $ git checkout master # 合併分支 $ git merge branchName
$ git branch -m | -M oldbranch newbranch
$ git stash # 隱藏當前工做區,存入git棧 $ git stash list # stash 列表 $ git stash pop # apply last and remove it from the list $ git stash apply stash@{1} # 取出指定版本號 $ git show stash@{0} # see the last $ git stash clear # 清空
# 重置暫存區與工做區,與上一次commit保持一致 $ git reset --hard # 重置當前分支的HEAD爲指定commit,同時重置暫存區和工做區,與指定commit一致 $ git reset --hard [commit]
# 打個 tag $ git tag -a "tagName" -m "remark"
假設遠程服務器ip爲
109.202.107.52
, 端口號22
新增用戶
adduser git // adduser 會給新增用戶在home下自動建立目錄, useradd 則不會
設置密碼
passwd git
修改git
登錄方式
vi /etc/passwd git:x:1084:1084::/home/git:/bin/bash 改成 git:x:1084:1084::/home/git:/usr/bin/git-shell
建立authorized_keys
cd /home/git/ mkdir .ssh source authorized_keys
將客戶端的公鑰即id_rsa.pub
內容複製到authorized_keys
. 當有多個客戶端時,追加便可。
一個客戶端一行,追加時起一個新行,中間不要留空行!!!
所屬用戶與組
chown -R git:git /home/git/.ssh
權限
chmod 700 /home/git/.ssh chomd 600 /home/git/.ssh/authorized_keys
初始化git
倉庫
mkdir /opt/git # /opt/git 你隨意 cd /opt/git git init --bare test.git # test.git 你隨意
屬主與組
chown -R git:git test.git
對於本地已有庫
cd g:/xampp/htdocs/test git remote reset-url ssh://git@109.202.107.52:22/opt/git/test.git git add . git commit -m "解釋" git push -u origin master:master
沒有
cd g:/xampp/htdocs git clone ssh://git@109.202.107.52:22/opt/git/test.git
注意上邊的連接格式
ssh://git@109.202.107.52:22/opt/git/test.git
。ip地址換成綁定的域名天然也ok?。
公司 git 開發流程