[英]Why is git renaming these files on add?
我有一個包含一堆PDF文件的git存儲庫。 在其中一些上運行OCR之后,我運行了git add .
領取更改並將其上演。 之后, git status
如下所示:
# modified: Ackerman, Daniel J., 1971 ST.pdf
# modified: Ackerman, Laura C., 2006 SD.pdf
# modified: Adolphson, Donald G., 1956 ST.pdf
# renamed: Baugh, Gerald R., 1956 ST.pdf -> Alkofer, Anton R., 1958 ST.pdf
# modified: Amundsen, Julie, 2012 ST.pdf
# modified: Babiracki, Dylan, 2015.pdf
# renamed: Wangerud, Kenneth W., 1973 ST.pdf -> Bailey, Palmer K., 1970 ST.pdf
# modified: Bakken, Wallace E., 1958 ST.pdf
# modified: Baugh, Gerald R., 1956 ST.pdf
# modified: Bednar, Jesse E., 1959 ST.pdf
# modified: Belanus, Luke 2016.pdf
# modified: Berg, Larry D., 1960 ST.pdf
# modified: Blanksma, Derrick J., 2011 SD.pdf
# modified: Blum, Raymond L., 1957 ST.pdf
# renamed: Overmoe, Terry H., 1956 ST.pdf -> Bonneville, John W., 1956 ST.pdf
# modified: Bonneville, John W., 1961.pdf
# modified: Brouillard, Lee A., 1977 ST.pdf
# modified: Brown, Ronald G., 1968 ST.pdf
# modified: Burrows, Robert A., 1995 ST.pdf
# modified: Bushaw, Dewey J., 1957 ST.pdf
# modified: Carns, Matthew, 2010 SD.pdf
# modified: Christensen, Robert E., 1958 ST.pdf
# modified: Christenson, Chase J., 2008.pdf
# renamed: Traynor, Terrance O. 1977 ST.pdf -> Clayton, Lee, 1960.pdf
# modified: Cook, Charles W., 1968 ST.pdf
# modified: Crowell, Anna M., 2011 ST.pdf
# modified: Davidson, Jerry, NA, ST.pdf
# modified: DeYaegher, Wilfred M., 1955 ST.pdf
# modified: Decker, Amy, 2005 SD.pdf
# modified: Degenstein, Joel A., 1975 ST.pdf
# modified: Dove. Andrea, 2014 ST.pdf
# modified: Elofson, Richard R., NA, ST.pdf
# renamed: Hoeft, Erin, 2014 ST.pdf -> Englerth, E. J., 1958 ST.pdf
# modified: Erickson, Kirth A., 1967 ST.pdf
# modified: Facca, Fosco V., 1970 ST.pdf
# renamed: Thomte, Dennis, NA, ST.pdf -> Flewitt, William E., 1957 ST.pdf
# renamed: Saunders, Gary, 1960 ST.pdf -> Forsgren, Frank M., 1980 ST.pdf
# renamed: Clayton, Lee, 1960.pdf -> Friestad, Harlan K., 1966 ST.pdf
# modified: Friestad, Mark B., 1970 ST.pdf
# modified: Friesz, Jacob; Bryantt, Tanner; Hanson, Luke; Delaney, Emily , 2014 SD.pdf
# renamed: Koons, Robert R., 1957.pdf -> Froelich, Larry L.,1964.pdf
# renamed: Halle, Richard, 1972 ST.pdf -> Galambos, William E., 1958 ST.pdf
# renamed: Huot, Ray E., NA ST.pdf -> Garske, Jay, 1957 ST.pdf
# renamed: Walsh, Michael W., 1956 ST.pdf -> Gillin, Donald S., 1958 ST.pdf
# modified: Gorecki, Charles 2007 SD.pdf
# modified: Gray, Lockhart R., 1958 ST.pdf
# renamed: Berg, Larry D., 1960 ST.pdf -> Groenewold, Joanne R., 1971 ST.pdf
# modified: Gunderson, Lori, 1998 SD.pdf
# modified: Halle, Richard, 1972 ST.pdf
# modified: Hannesson, James H., 1957 ST.pdf
# modified: Hartig, Caitlyn M., 2015 ST.pdf
# modified: Harvey, Erik W., 1991 ST.pdf
# modified: Hegle, Lloyd 2005.pdf
# modified: Hendrickson, Richard D., 1956 ST.pdf
# modified: Hesse, Damien; Krieger, Amanda; Padgett, Alex; Zander, Derek, 2012 SD.pdf
# modified: Hoeft, Erin, 2014 ST.pdf
# modified: Holweger, Todd L., 1995 ST.pdf
# modified: Hrabik, Jon, 2008 SD.pdf
# modified: Huot, Ray E., NA ST.pdf
# modified: Ignatius, Ashley, 2008 ST.pdf
# modified: Jahraus, Tim, NA, ST.pdf
# modified: Jeannotte, Tyson, 2015 ST.pdf
# renamed: Redmond, John C., 1955.pdf -> Jergens, Matthew, 2005 SD.pdf
# modified: Johnson, Corey 2009 SD.pdf
# modified: Johnson, Irwin S., 1957 ST.pdf
# modified: Jurgens, Matthew, 2005 SD.pdf
# modified: Klapperich, Ryan, 2004 ST.pdf
# modified: Klaudt, Elmer J.,1956 ST.pdf
# modified: Klosterman, Mary J., 1978.pdf
# modified: Knutson, Sean, 2007 SD.pdf
# modified: Koons, Robert R., 1957.pdf
# modified: Kringstad, Justin J., 2007 SD.pdf
# modified: Kume, Jack, 1958 ST.pdf
# modified: Lammers, Heather N., 2007 SD.pdf
# renamed: Ackerman, Daniel J., 1971 ST.pdf -> Lassila, Pentti, 1968 ST.pdf
# modified: Lindberg, Connor; Putkonen, Jaakko, 2015.pdf
# renamed: Brouillard, Lee A., 1977 ST.pdf -> Listoe, Bruce K., 1955 ST.pdf
# renamed: Blum, Raymond L., 1957 ST.pdf -> Lockrem, Timothy M., 1980 ST.pdf
# renamed: Cook, Charles W., 1968 ST.pdf -> Mathison, David J., 1964 ST.pdf
# modified: Meldahl, Charles, 1962.pdf
# modified: Mikkelson, D.H., 1956 ST.pdf
# renamed: Johnson, Irwin S., 1957 ST.pdf -> Moe, Richard B., 1958 ST.pdf
# renamed: Olien, Benjamin, 1957 ST.pdf -> Monsebroten, Dale R. 1966.pdf
# modified: Murphy, Edward C., 1979 ST.pdf
# modified: Myerchin, Paul H., 1994.pdf
# modified: Nelson, Kelly, NA, SD.pdf
# modified: Nestaval, Jerry E., 1958 ST.pdf
# renamed: Englerth, E. J., 1958 ST.pdf -> Norby, Rodney D., 1967 ST.pdf
# modified: Olien, Benjamin, 1957 ST.pdf
# renamed: Smith, Louis D., 1968.pdf -> Olson, Bruce A., 1974 ST.pdf
# modified: Opitz, Emil, 2007 ST.pdf
# modified: Overmoe, Terry H., 1956 ST.pdf
# modified: Peterson, Robert T., 1958 ST.pdf
# renamed: Solheim, Dale, 1957 ST.pdf -> Pilatzke, Richard H., 1976 ST.pdf
# modified: Quigley, Micheal L., 1958 ST.pdf
# modified: Ramsey, Bruce, 1972 ST.pdf
# renamed: DeYaegher, Wilfred M., 1955 ST.pdf -> Randich, Philip G., 1958 ST.pdf
# renamed: Lockrem, Timothy M., 1980 ST.pdf -> Rasanen, Ryan; Smrekar, Allison; Jahraus, Paul 2014 SD.pdf
# modified: Redmond, John C., 1955.pdf
# modified: Reishus, Mark, 1958 ST.pdf
# modified: Remple, Gary A., 1987 ST.pdf
# modified: Ries, Adam J., 2010 SD.pdf
# modified: Roehrich, Robert D., 1957.pdf
# renamed: Peterson, Robert T., 1958 ST.pdf -> Ross, James D., NA.pdf
# modified: Russell, Ashley, NA, ST.pdf
# renamed: Garske, Jay, 1957 ST.pdf -> Salomon, Nena 1974 ST.pdf
# modified: Samson, Sherry D., 1995.pdf
# modified: Sandven, John E., 2016 ST.pdf
# modified: Saunders, Gary, 1960 ST.pdf
# modified: Schmit, Craig R., 1970 ST.pdf
# renamed: Quigley, Micheal L., 1958 ST.pdf -> Schofeild, R.G., 1957.pdf
# modified: Smith, Daniel, 2009 SD.pdf
# modified: Smith, Louis D., 1968.pdf
# modified: Smith, Louis D., 1970 ST.pdf
# modified: Snyder, Jeffrey K., 1992 ST.pdf
# renamed: Davidson, Jerry, NA, ST.pdf -> Solheim, Dale, 1957 ST.pdf
# modified: Solie, Kevin L., 2008 SD.pdf
# modified: Stancel, Steve G., NA.pdf
# modified: Thompson, Gary G., 1962 ST.pdf
# modified: Thomte, Dennis, NA, ST.pdf
# modified: Traynor, Terrance O. 1977 ST.pdf
# modified: Trobec, Seth W., 2009 SD.pdf
# modified: Walker, Daniel M., 1979 ST.pdf
# modified: Walsh, Michael W., 1956 ST.pdf
# modified: Wangerud, Kenneth W., 1973 ST.pdf
# renamed: Degenstein, Joel A., 1975 ST.pdf -> Waxvik, John N., 1964 ST.pdf
# modified: Worden, Anna K., 2007 ST.pdf
# modified: Zejdlik, Roger C., 1956 ST.pdf
為什么決定將其中一些文件“重命名”為完全不同的文件名? 任何給定的重命名行中的兩個文件都存在-例如,存在一個名為Degenstein, Joel A., 1975 ST.pdf
文件和另一個完全不同的名為Waxvik, John N., 1964 ST.pdf
。 但是出於某種原因,決定將一個重命名為另一個。
一次添加一個文件還是一起添加文件都沒有關系。 這是怎么回事?
我已經使用git reset
取消了這些更改。
不要對git讀太多東西說文件已重命名。 git中沒有“重命名”操作。 實際上,它只是試圖確定從先前提交的樹到當前索引樹的轉換(在git status
的情況下)是否可能涉及要移動/重命名的文件; 如果是這樣,則說“重命名”。
請記住,顯示PDF時看到的內容與git處理PDF時看到的內容非常不同 。 PDF中的數據通常會被壓縮,因此其中的文本並不是很明顯。 從二進制的角度來看,很多“內容”都建立了文檔的結構,並且對於每個文件來說都是相同的。
因此,git的啟發式方法很混亂。 但這就是問題:沒關系。 如果查看實際文件,則每個文件中都應包含正確的數據。 不過,如果您認為虛假輸出會分散您的注意力,我也不能怪您。 對於許多命令,您可以斷言對重命名檢測行為的某些控制;例如: 不幸的是,我不知道一種“內置”方式來抑制它的status
。 但是有一個主意...
對於git可能遇到的文件類型,重命名檢測效果很好。 當您存儲二進制文件(如PDF的文件)時,您會破壞git的許多功能,因為這不是針對其進行優化的。 您可以使用git lfs
使其表現更好。
這樣做的主要目的是通過將大型二進制文件(git無法很好地壓縮/比較)移動到單獨的“大型文件存儲”中,從而限制了核心倉庫的大小,只有在需要特定版本時才從該版本中下載版本版。 (相比之下,無論您要檢出什么內容,“常規”存儲庫的克隆都必須復制每個文件的每個版本。)
但這是一件很酷的事情:使用lfs時,核心git會“思考”,只是存儲這些小小的“ lfs指針”-lfs在必要時用來查找實際內容的占位符。 在我的測試中,這些指針總是足夠不同,以至於除非將文件逐字逐個復制,否則不會將它們檢測為“重命名”。
Git是內容跟蹤器,而不是文件跟蹤器。 Git沒有重命名文件,這是因為您的文件內容如此相似,因此您重命名了文件。
Git並不是為了跟蹤二進制數據的變化而設計的,例如pdf編碼的數據,因此您不能真正怪罪它。 當跟蹤二進制數據的變化時,所有的賭注都是關閉的,因為這不是git設計的目的。 它旨在跟蹤(純文本)源代碼文件,以進行版本控制。
正如其他兩個答案所指出的那樣,問題在於Git正在進行相似性分析,並猜測文件可能已被修改和重命名。 這種錯誤的匹配是無害的,盡管起初有些令人震驚。
完整的細節非常復雜(請參閱我對git log --follow <filename>的工作方式的 回答 ? ),但是簡短的版本是git status
從提交(HEAD)到索引運行git diff
,並啟用了重命名檢測(將內部默認設置為“ 50%相似”)。 由於PDF文件傾向於具有大的重復二進制塊,其64字節的塊將散列到同一插槽,因此,任何兩個PDF文件被視為“至少相似度為50%”的可能性是……“高”太強了:“不低”會更准確。 您在上述示例中的128個中有30個命中,或者5個文件中有1個以上的錯誤匹配率達到50%以上。
如果這些不是PDF文件, 則相似度評分可能會很有用。 但是您不能在git status
關閉重命名檢測:它始終處於打開git status
,最大限制為200個未配對的文件。
(后git status
運行HEAD
-vs指數差異,它運行第二,指數-VS-文件,DIFF。一個不啟用重命名檢測,因為在這里沒有任何意義。我只提它,因為它不是很明顯,首先, git status
要做的是運行兩個git diff
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.