Checkout latest git commit automatically
如果要自動化拿到最後 commit 的 branch (大概只有再 staging/testing server 上有這樣的需求),可以用 git command 加上 shell (sed, grep) crontab 來完成。當然,如果是 gitlab 的話還有 gitlab-runner 可以幫忙,但好像用 shell script 比較直覺一點(?)
如果要自動化拿到最後 commit 的 branch (大概只有再 staging/testing server 上有這樣的需求),可以用 git command 加上 shell (sed, grep) crontab 來完成。當然,如果是 gitlab 的話還有 gitlab-runner 可以幫忙,但好像用 shell script 比較直覺一點(?)
如果是有部分的更改或新增功能,用 git merge 有時候不見得是好主意
go lang 的 go tools 做 go get 時,預設都會用 https 去存取 git repository,可是當 https 不能使用,只能跑 http 的時候,要做一些改變。
對 remote git repository 存取,可以透過 ssh 或 https,有時候用 https 的時候會遇到 Error
建議 git 版本 2.9 以上,原因是 2.9 的版本以上,在 git merge 時可以下參數 ––allow-unrelated-histories
做 merge 的時候難免手殘… <!–more–> 如果還沒 push 到 server 上,那可以用 git reset –hard HEAD~1 來復原。如果是用 –soft 的話該 merge commit 依然會存在 local repository中,不像用 –hard 會刪除。 $ git log commit f92ab34564f48ad6ee9f6bdb13c352e63669dccd Merge: 62f6af0 4f641f3 Author: admin <admin@test.com> Date: Fri Jun 23 11:07:53 2017 +0800 before merge 3d_checkpoint commit 62f6af03b7dc1f0539836b13910850189a0fcd2a Author: admin <admin@test.com> Date: Thu Apr 20 11:54:58 2017 […]
今天遇到的狀況是,不小心把 local branch detach, 而且原本的 local branch 整個被改爛,然後要把修改過的東西(detached HEAD) push 回 remote branch,並把爛掉的 local branch track 上正確的 remote branch
其實就是同事弄錯的事情經過 起因是同事想把Branch A倒退回前先前的 commit (rollback),下命令要直接對remote上的 branch 改指到某個 commit 上,但是因為工時太長(x)恍神(o)下錯命令… #當下在3d_new這個branch上,要rollback一個commit,所以理論上要這樣 ~/testGit/gittest$ git push –force origin HEAD^:3d_new #但是下錯命令變成改到3d_test去 ~/testGit/gittest$ git push –force origin HEAD^:3d_test Total 0 (delta 0), reused 0 (delta 0) To git@git_url:group_name/gittest.git + 62f6af0…36b6b05 HEAD^ -> 3d_test (forced update) 這樣的結果變成 3d_test 的 HEAD 被定到 3d_new 的 HEAD^ 去,如果這時候比較 local 與 remote repository 會發現,local上3d_test的commit從與 3d_new […]
因為有同事幹了蠢事,所以紀錄一下順便寫一下差異