git 上上下下左左右右AABB

git 三兩式

同步發佈在 my githubgit

Table of Contents

  1. git 參考開發流程github

  2. git 經常使用命令shell

  3. 搭建 git 服務器vim

git 參考開發流程

  1. 從master分支建立develop分支;bash

  2. 每次開發時,從develop分支拉出feature分支,feature分支命名規則爲feature/*服務器

  3. 在feature分支上開發完成後,開發本身保證本身開發的功能完備、正確;app

  4. 將feature分支合併到develop分支,CI從develop分支上自動拉下代碼持續集成;運維

  5. 從develop分支拉出release分支,交付給測試,release分支命名規則爲release/sprint*ssh

  6. 測試在release分支上打tag並完成測試,tag命名規則如RTL-MOFA-0.14.0.8;編輯器

  7. 測試完成後,將release分支交付給運維;

  8. 運維在release分支上打tag,tag命名規則如RTM-MOFA-0.14.0.8,並通知項目負責人將release分支合併到master分支上。

  9. 當線上有bug須要修復時,從部署的tag上,拉出batch分支,命名規則爲patch/bug**,經測試後,合併到develop分支,若是遵循以上原則,patch會最終會和入master分支。

  10. 注意: 一些爲了特定目的,好比特定客戶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 經常使用命令

初始化

$ 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 # 清空

reset

# 重置暫存區與工做區,與上一次commit保持一致
$ git reset --hard

# 重置當前分支的HEAD爲指定commit,同時重置暫存區和工做區,與指定commit一致
$ git reset --hard [commit]

tag

# 打個 tag
$ git tag -a "tagName" -m "remark"

搭建 git 服務器

服務器

假設遠程服務器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 開發流程