Board logo

標題: git係特定操作下會唔見左某d commit [打印本頁]

作者: 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

做法係: 首先要有一個以上的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
作者: joshcheng    時間: 2019-5-9 10:22

你返去以前個commit再改嘢前,應該要開個新branch
作者: hihihi123hk    時間: 2019-5-9 12:06

做法係: 首先要有一個以上的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)
作者: 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嗎?
例如想睇下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)
作者: masseffect    時間: 2019-5-13 13:05

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


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





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2