git係特定操作下會唔見左某d commit

做法係: 首先要有一個以上的commit


跟住checkout以前某一個commit, 再改野


改完之後就commit, 跟住就會見到咁樣, 依個時候就算關左program再開, 都仲可以見到所有commit


但係如果你再checkout其他commit, 無論checkout邊個, 最後既commit都會唔見, 而且係永遠搵唔返


點解會咁? 唔見左果個commit有無真正落左.git入面? 點解可以容許佔左位置, 但搵唔到記錄?
有無方法可以睇到自己個repo入面有幾多依類失左蹤而又佔左容量既commit?
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

做法係: 首先要有一個以上的commit


跟住checkout以前某一個commit, 再改野


改完之後就commit, 跟住就會 ...
3ldk 發表於 2019-5-8 23:54


因為無 branch 或其他 reference 指向該commit。 見https://stackoverflow.com/questions/3765234/listing-and-deleting-git-commits-that-are-under-no-branch-dangling

TOP

你返去以前個commit再改嘢前,應該要開個新branch

TOP

做法係: 首先要有一個以上的commit


跟住checkout以前某一個commit, 再改野


改完之後就commit, 跟住就會 ...
3ldk 發表於 2019-5-8 23:54

CLI 行 git reflog 會見得番個 Hash,可以 Checkout 番過去

應該只係你個 GUI Show 唔到

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP

你唔咁show 出黎我都唔知會有咁ge 事,
平常用都有有remote origin,下下都push,所以local checkout左舊commit都可以去remote pull / reset

TOP

呢個係git 既common mistake
因為你checkout 左一個hash commit, git 會當係head
呢個head 係無任何branch 指住
所以除非你開一條new branch 裝住head 既changes
否則一切轉branch (即係轉head),就會無晒d野。

TOP

本帖最後由 hihihi123hk 於 2019-5-10 19:25 編輯
呢個係git 既common mistake
因為你checkout 左一個hash commit, git 會當係head
呢個head 係無任何branch  ...
s.friday1004 發表於 2019-5-10 11:02


可能係用 GUI 先會犯嘅錯, 用 CLI 出哂 Warning

同埋唔會無哂啲野,啲野仲係 local .git 入面,只係 git history 見唔到, git reflog 仲見到同埋可以 checkout 過去


附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

回覆 7# hihihi123hk


以前用 GUI (sourcetree), 唔小心 head checkout 其他 branch 無晒野,要ot 番成晚重做。
後尾學用 cli ,又奶多次野,好彩醒目用 git reflog 完美還原

TOP

有人用純cli嗎?
例如想睇下history入面每個commit有乜野改左, 依樣都算幾常用
用純cli的話又慢又難睇, 難道唔會好無效率嗎?

TOP

本帖最後由 hihihi123hk 於 2019-5-12 21:50 編輯
有人用純cli嗎?
例如想睇下history入面每個commit有乜野改左, 依樣都算幾常用
用純cli的話又慢又難睇, 難道 ...
3ldk 發表於 2019-5-11 17:27

CLI 都有 graph 出

自己所有 Write 嘅動作重來只用 CLI  處理,因為用 GUI 根本唔知佢底蘊幫你做咗咩;而 GUI 用黎做 Read Only 係不錯的,不過一般 GitHub GitLab Intellij 內置嘅已經夠

一去到用 git pull —rebase, git rebase, git worktree, git submodule, git-lfs 就會知 GUI 有幾難用

同埋只要加個 alias 就出得哂成個 Graph

git lg

https://gist.github.com/johanmeiring/3002458

仲有啲接近公認嘅 alias,例如

gst = git status
gco = git checkout

用 Oh my zsh 嘅 Shell 天生會包埋

via HKEPC IR Pro 3.5.1 - iOS(2.4.1)

TOP