作者: 3ldk 時間: 2019-5-8 23:54 標題: git係特定操作下會唔見左某d commit
做法係: 首先要有一個以上的commit
[attach]2125213[/attach]
跟住checkout以前某一個commit, 再改野
[attach]2125214[/attach]
改完之後就commit, 跟住就會見到咁樣, 依個時候就算關左program再開, 都仲可以見到所有commit
[attach]2125215[/attach]
但係如果你再checkout其他commit, 無論checkout邊個, 最後既commit都會唔見, 而且係永遠搵唔返
[attach]2125216[/attach][attach]2125217[/attach]
點解會咁? 唔見左果個commit有無真正落左.git入面? 點解可以容許佔左位置, 但搵唔到記錄?
有無方法可以睇到自己個repo入面有幾多依類失左蹤而又佔左容量既commit?
作者: headuck 時間: 2019-5-9 08:32
因為無 branch 或其他 reference 指向該commit。 見https://stackoverflow.com/questions/3765234/listing-and-deleting-git-commits-that-are-under-no-branch-dangling。
作者: joshcheng 時間: 2019-5-9 10:22
你返去以前個commit再改嘢前,應該要開個新branch
作者: hihihi123hk 時間: 2019-5-9 12:06
CLI 行 git reflog 會見得番個 Hash,可以 Checkout 番過去
應該只係你個 GUI Show 唔到
via HKEPC IR Pro 3.5.1 - iOS(2.4.1)
作者: Sora 時間: 2019-5-9 23:39
你唔咁show 出黎我都唔知會有咁ge 事,
平常用都有有remote origin,下下都push,所以local checkout左舊commit都可以去remote pull / reset
作者: s.friday1004 時間: 2019-5-10 11:02
呢個係git 既common mistake
因為你checkout 左一個hash commit, git 會當係head
呢個head 係無任何branch 指住
所以除非你開一條new branch 裝住head 既changes
否則一切轉branch (即係轉head),就會無晒d野。
作者: hihihi123hk 時間: 2019-5-10 19:07
本帖最後由 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 過去
[attach]2125584[/attach]
[attach]2125585[/attach]
作者: s.friday1004 時間: 2019-5-11 15:28
回覆 7# hihihi123hk
以前用 GUI (sourcetree), 唔小心 head checkout 其他 branch 無晒野,要ot 番成晚重做。
後尾學用 cli ,又奶多次野,好彩醒目用 git reflog 完美還原

作者: 3ldk 時間: 2019-5-11 17:27
有人用純cli嗎?
例如想睇下history入面每個commit有乜野改左, 依樣都算幾常用
用純cli的話又慢又難睇, 難道唔會好無效率嗎?
作者: hihihi123hk 時間: 2019-5-12 21:42
本帖最後由 hihihi123hk 於 2019-5-12 21:50 編輯
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)
作者: masseffect 時間: 2019-5-13 13:05
sourcetree 功能本身係比較少...
但最基本嘅都有
其實個問題係你唔太識GIT 點玩
你要嘅CODE 根本就唔應該無嘢REFERENCE 住
你要睇啲COMMIT 改過乜,CLICK 一下就睇到DIFF
如果想睇任意兩個COMMIT 之間嘅分別,SHIFT CLICK兩個又有DIFF到...
根本唔需要CHECKOUT,要CHECKOUT,除非係想COMPILE /BUILD 啫
但CHECKOUT 完如果要改,你點解又唔俾返個BRANCH/ TAG佢?
就算你真係一定唔知點解要CHECKOUT,你自己開個TEMP 嘅BRANCH 做呢樣嘢已經得
點解非要用DETACHED HEAD不可?
作者: masseffect 時間: 2019-5-13 13:07
可能係用 GUI 先會犯嘅錯, 用 CLI 出哂 Warning
同埋唔會無哂啲野,啲野仲係 local .git 入面,只係 git ...
hihihi123hk 發表於 2019-5-10 19:07
其實用GUI 一樣出晒WARNING
作者: chkichung 時間: 2019-5-17 23:12
Git checkout stashid會直接洗走commit內概同檔案
你只係理錯個用法
你要開新commit 就先git add file
然後git commit -m comments
除左git reset,正常checkout係唔會洗走你個新commit
via HKEPC IR Pro 3.5.1 - iOS(2.4.1)
作者: Jaba 時間: 2019-5-24 21:06
睇git log用GUI最好係gitkraken, GUI容易做line commit

