是否可以查看遠程的reflog?也就是說,我想知道git reflog
在另一臺遠程機器上的輸出是什麼。git我可以查看遠程的reflog嗎?
請注意,我不是要求遠程跟蹤分支(例如origin/master)的reflog,我要求reflog
表示在另一臺機器上。
是否可以查看遠程的reflog?也就是說,我想知道git reflog
在另一臺遠程機器上的輸出是什麼。git我可以查看遠程的reflog嗎?
請注意,我不是要求遠程跟蹤分支(例如origin/master)的reflog,我要求reflog
表示在另一臺機器上。
答案基本上是「否」(該機器除外),因爲reflog是一些本地製作的某些ref-name重新分配的日誌。從本質上講,每次運行git update-ref -m msg <name> <target>
更新記錄...本地:.git/logs/<name>
獲得附加的行:
$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600 foo
(該消息之前的事情,在這種情況下foo
,是不是空間,而是一個標籤,我爲了SO目的而擴展它)。從概念上講,其他所有移動分支提示的東西都會調用git update-ref
來完成它(有些是shell腳本,並且確實是這樣做的,其他的只是調用執行所有文件更新的C代碼)...並且在.git/logs
中的所有內容都構成了reflog。
如果在底層的git://和/或ssh://協議中有東西讓你得到reflog,那就做到了,但據我所知沒有。
上關的機會,遠程機器是GitHub的倉庫,
首先使用GitHub的事件API來檢索提交SHA。
curl https://api.github.com/repos/<user>/<repo>/events
確定孤立的SHA提交-ID,在任何一間分行不再存在。
接下來,使用Github的Refs API創建一個指向孤立提交的新分支。
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/D-commit", "sha":"<orphan-commit-id>"}' https://api.github.com/repos/<user>/<repo>/git/refs
在上面的命令,在步驟2中
最後git fetch
新創建的分支識別到你的本地庫的SHA替換<orphan-commit-id>
。
從那裏你可以選擇或合併提交到你的工作。
查看this article爲一個實際的例子。
非常感謝!對於那些不太傾向於使用命令行,也可以旁路步驟3通過剛剛打開https://github.com/
如果您收到「」消息「:」未找到「錯誤,則表示您需要驗證通過傳遞一個access_token查詢字符串。 – 2017-03-07 06:39:36
對於我來說,追蹤孤立提交id的* SHA最簡單的方法是查看CircleCI上的最後一個構建(或[在此處插入CI服務])。 – samjewell 2017-03-24 13:57:45
如果您有權訪問遠程系統的文件系統(通常是裸回購),那麼您始終可以選擇在那裏運行git reflog。但有這樣的訪問通常是不可能的。我有一個在git服務器(使用只讀文件共享)上做到這一點的習慣,只是爲了能夠在服務器端查看reflog。 – 2014-07-30 11:51:51