git 範例

git 分支, 合併, tag 之範例

# 建立 develop branch
git branch develop
git checkout develop
git branch

for t in {1..5};
do
  TAG=v0.${t}
  FEATURE=feature/${TAG}

  # 建立 feature branch
  git branch ${FEATURE}
  git checkout ${FEATURE}
  git branch

  # commit 5個版本
  for i in {1..5};
  do
    data=$(printf "${FEATURE}-%03d" $i)
    echo $data >> history.txt
    history=$(cat history.txt)
    printf "# Test\n## Version\n${data}\n## History\n\`\`\`\n${history}\n\`\`\`\n" > readme.md
    git add .
    git commit -m "version: ${data}"
    git push -u origin ${FEATURE}
  done
  git branch

  # 切換develop
  git checkout develop
  git branch

  # 合併
  git merge --no-ff -m "合併(from ${FEATURE} to develop)" ${FEATURE}
  git push -u origin develop

  # 刪除分支
  git branch -d ${FEATURE}
  git push -u origin :${FEATURE}
  git push -u origin develop

  # 切換到master
  git checkout master
  git branch

  # 合併
  git merge --no-ff -m "合併(from 合併 to master)" develop
  git push -u origin master

  # 建立release
  git tag ${TAG}
  git tag -l
  git push origin ${TAG}
done

git windows 換行問題

git在windows下對於pull下來檔案的換行有三種處理方式:

  1. true: check out時自動將\n轉換成\r\n,commit時將\r\n轉成\n.
  2. input: check out時不轉換\n,commit時將\r\n轉成\n.
  3. false: 不做任何轉換

若不清楚目前設定是哪一種,可以用下列指令查詢:

git config core.autocrlf

若要修改成input,則可用下列指令修改(請用超級管理者執行命令提示字元)

git config --system core.autocrlf input

或是(一般使用者)

git config --global core.autocrlf input

遷移gitlab

我自建的gitlab是跑在synology上,不過因為效能太差了
因此決定將gitlab移植到vm上.

之前測試了讓vm掛載synology網芳的gitlab data的資料夾,
但是都會發生權限的問題.

因此目前打算讓gitlab data的資料夾也放在vm的本機端.
再透過定期備份的方式,來保全資料.
以下是我移機的紀錄

備份
[code lang=”bash”]docker exec -it gitlab gitlab-rake gitlab:backup:create[/code]

還原-前置工作
建立資料夾
[code lang=”bash”]mkdir -p $PWD/files/data/backups
mkdir -p $PWD/files/conf
mkdir -p $PWD/files/log/[/code]

複製備份資料
[code lang=”bash”]cp $OLD_GITLAB_PATH/backups/1510018625_2017_11_07_10.1.0_gitlab_backup.tar $PWD/files/data/backups[/code]

執行新的gitlab
[code lang=”bash”]docker run -d \
–name=gitlab \
–publish 443:443 \
–publish 80:80 \
–restart always \
-v $PWD/files/conf:/etc/gitlab \
-v $PWD/files/log:/var/log/gitlab \
-v $PWD/files/data:/var/opt/gitlab \
gitlab/gitlab-ce:10.1.0-ce.0[/code]

等待兩三分鐘後,確定可以進入gitlab web ui介面後
開始進入還原工作

還原
進入container
[code lang=”bash”]docker exec -it gitlab bash[/code]

停止服務
[code lang=”bash”]gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq[/code]

設定權限
[code lang=”bash”]chmod 777 /var/opt/gitlab/backups/1510018625_2017_11_07_10.1.0_gitlab_backup.tar[/code]

還原
[code lang=”bash”]gitlab-rake gitlab:backup:restore BACKUP=1510018625_2017_11_07_10.1.0[/code]

重啟服務
[code lang=”bash”]gitlab-ctl restart[/code]

check
[code lang=”bash”]gitlab-rake gitlab:check SANITIZE=true[/code]