小編都忘了去年在 Devopsdays Taipei 上分享的「如何與 Git 優雅地在樹上唱歌」已經釋出影片了,發現講的還是有點趕,但該提的都有提到囉。另外順便整理一下裡面總共提到的六個 tips:
* git cherry-pick
* git bisect
* git blame
* git reflog
* git archive
* git rebase -i
最後還是要再提一次,Git 工作流程沒有誰對誰錯,只有適不適合而已,也歡迎大家分享自己的工作流程喔!
---
* 當天會後的分享心得:https://www.facebook.com/kewang.information/posts/1957653244511040
#git #gitlab #gitforteams #redmine #devopsdays
「git reflog」的推薦目錄:
- 關於git reflog 在 Kewang 的資訊進化論 Facebook 的最讚貼文
- 關於git reflog 在 Kewang 的資訊進化論 Facebook 的最佳解答
- 關於git reflog 在 Kewang 的資訊進化論 Facebook 的精選貼文
- 關於git reflog 在 How to undo (almost) anything with Git | The GitHub Blog 的評價
- 關於git reflog 在 What's the difference between git reflog and log? - Stack ... 的評價
- 關於git reflog 在 29 Git Reflog 還原大招 的評價
- 關於git reflog 在 Stashing and the reflog | Git from the Bottom Up 的評價
- 關於git reflog 在 using the git reflog - gists · GitHub 的評價
git reflog 在 Kewang 的資訊進化論 Facebook 的最佳解答
小編上星期花了一點時間跟公司同事分享這幾年使用 Git 的經驗,其中也包含了 Git for Teams 的內容。如果你想要進一步改善 Git 工作流程的朋友,這本書真的是必備。
小編自己整理的內容還蠻多的,但有點可惜沒辦法包含所有常見的指令或情境,像是 rebase -i, stash, subtree, submodule 都沒提到,希望之後有機會再來重新整理一下。
## 簡易大綱
* 介紹四種權限模型
* rebase, merge, merge commit 的使用情境
* semver 的使用情境
* 與 redmine 的整合情境
* 外包使用情境
* 開所有權限的使用情境
* 合併時會發生衝突的原因
* reset, revert, checkout 等各種回復到特定點的使用情境
* cherry-pick 的使用情境
* gitignore 使用情境
* bisect, reflog 使用情境
* squash 使用情境
* ff 及 no-ff 的使用情境
* push -f 的使用情境
* 雲端 backend deployment 分享
#git #gitforteams #github #gitlab
git reflog 在 Kewang 的資訊進化論 Facebook 的精選貼文
小編最近工作上遇到了大 git repo 的問題,因為 repo 的 history 殘留了許多不必要的內容,像是 logback 的 log、可執行的 jar 檔、測試用的圖檔...等,所以現在的 repo 已經大到 630MB,小編就使用 bfg 將 repo 縮小到只剩 30 MB 左右。
會發現這件事是因為最近在 Jenkins 上面 build 的時候,clone 的時間都花超久,後來才發現原來 repo 太大了 Orz,大家記得不必要的檔案要刪除啊。
執行步驟如下:
1. 下載 bfg
2. 列出檔案最大的前 n 名:git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -50 | awk '{print$1}')"
3. 操作 bare repo:git clone --mirror git://example.com/some-big-repo.git,因為 bfg 會直接操作 bare repo
4. 刪除大檔:bfg --delete-files big-file-*.* some-big-repo.git
5. 壓縮 repo:git reflog expire --expire=now --all && git gc --prune=now --aggressive
6. 上傳回 remote repo:git push
7. 記得請其他開發者先備份 local repo,然後重新 clone 一次 repo。注意:千萬別直接 pull,然後又 push,因為這樣做的話就會把 local repo 的 history 又 push 一次了,這樣子前面的動作就完全沒有用。所以全部的開發者都要重新 clone
8. 快快樂樂使用 repo
BFG Repo-Cleaner:https://rtyley.github.io/bfg-repo-cleaner/
#git #bfg
git reflog 在 How to undo (almost) anything with Git | The GitHub Blog 的推薦與評價
What's happening: git reflog is an amazing resource for recovering project history. You can recover almost anything—anything you've committed— ... ... <看更多>