2017-05-16 76 views
1

我有一個包含一堆PDF文件的git存儲庫。在運行一些OCR之後,我運行git add .來應對變化並將它們分級。在此之後,git status看起來是這樣的:爲什麼git將這些文件重命名爲add?

#  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來取消此時的更改。

+0

@DanLowe'git status'不尊重那個設置,但是,它是這樣嗎? –

+0

@DanLowe - 文檔所說的是*它只被瓷器命令所尊敬 - 並不是它被所有的瓷器所尊敬。在我的測試中,「status」並不尊重它。 –

+0

@MarkAdelsberger好的,刪除了我的評論,以避免傳播錯誤信息 –

回答

4

不要在git中讀太多,說一個文件被重命名。在git中沒有這樣的「重命名」操作;它只是試圖在事實之後確定從先前提交的樹到當前索引樹的轉換(在git status的情況下)是否可能涉及文件被移動/重命名;如果它這樣認爲,它說「重命名」。

請記住,顯示PDF時顯示的內容與內容很不同,因爲git在處理PDF時會看到它。 PDF中的數據通常是壓縮的,所以文本不是那麼明顯。從二進制角度來看,很多「內容」都建立了文檔的結構,而這對於每一個文件來說都是一樣的。

所以git的啓發式是困惑的。但是事情就是這樣:沒關係。如果你看看實際的文件,他們應該都有正確的數據。不過,如果你認爲虛假的輸出令人分心,我不能責怪你。對於許多命令,您可以對重命名檢測行爲進行一些控制;不幸的是,我不知道「內置」方式來抑制status。但有一個想法...

對於git類型的文件預計遇到,重命名檢測工作得很好。當你存儲二進制文件(如PDF文件)時,你擊敗了許多git的功能,因爲這不是它優化的功能。您可以使用git lfs使其表現更好。

https://git-lfs.github.com/

這樣做的主要目的是通過移動大的二進制文件(其GIT中無法壓縮/ DIFF孔)到一個單獨的「大文件存儲」以限制芯回購的大小,從中只有在需要特定版本時才下載版本。 (相比之下,「常規」回購的克隆必須複製每個文件的每個版本,而不管您檢出的是什麼。)

但是這裏很酷:當你使用lfs時,core git「認爲」它只是存儲這些小的「lfs指針」 - 當需要時lfs用來查找真實內容的佔位符。在我的測試中,這些指針是總是不同,它們不會被檢測爲「重命名」,除非文件字面複製字節的字節。

1

Git是一個內容跟蹤器,而不是文件跟蹤器。 Git沒有重命名這些文件,而是說重命名了這些文件,因爲它們的內容非常相似。

Git沒有被設計用於跟蹤二進制數據的變化,比如pdf被編碼的數據,所以你不能指責它。當跟蹤二進制數據的變化時,所有投注都關閉,因爲這不是git設計的目的。它旨在跟蹤(明文)源代碼文件的版本控制目的。

+0

但是有問題的文件的內容完全不同,100%不同。例如,「Baugh,Gerald」文件被列爲重命名爲「Alkofer,Anton」文件,但兩者都單獨存在,具有不同的文件名,並且其內容完全不同。這裏有一些md5校驗和。 (4d64c0f9402e36fd88d5ada5106a201b Baugh,Gerald R.,1956 ST.pdf; de1884ef318688b916a57c0b1d758449 Alkofer,Anton R.,1958 ST.pdf)。當它們以任何方式不相似時,如何將這兩個文件檢測爲相同? –

+0

當你用adobe閱讀器查看文件時,它們可能看起來不一樣,但它們的* binary *表示形式可能相似。嘗試在文件上執行'diff'(或'git diff')。在這種情況下,MD5校驗和幾乎沒有任何意義。你可能有99%的文件重疊,他們的MD5校驗和會完全不同。請注意,git可能並不是說這些文件*完全相同,但它認爲它們已經足夠接近以至於已經將它們重命名爲 – mwm314

+1

這不是完全不同 - 事實上,您可以讓git告訴您它認爲它們有多不同(運行'git diff',它會顯示'相似性索引')。這可能是由於PDF中的二進制數據(例如,嵌入的字體)與您「看到」的內容非常相似。 –

1

由於兩個其他的答案中指出,問題是,Git是做一個類似的分析和猜測文件可能已被修改,並更名爲。這種錯誤的匹配是無害的,儘管起初有些令人擔憂。

全部細節相當複雜(參見my answerhow does git log --follow <filename> work?),但短期的版本是git status運行從提交(HEAD)到索引git diff,用重命名檢測開啓(給予50%相似的」內部默認「)。由於PDF文件往往有大量重複的二進制塊,其64字節的塊會散列到同一個槽中,因此任何兩個PDF文件被認爲「至少有50%相似」的可能性是......好,「高」太強:「不低」會更準確。在上面的示例中,您打到128箇中的30個,或者5個文件中僅有1個獲得錯誤的50%+匹配。

相似度得分可能有用如果這些不是PDF文件。但you can't turn off rename detection in git status: it's always on,最多200個未配對的文件。

git status運行的HEAD -Vs指數差異後,它運行第二,指數-VS-文件,DIFF,這一個不有重命名啓用檢測,因爲它使這裏沒有任何意義。我只提到它因爲它起初並不明顯,git status所做的就是運行兩個git diff s)。

相關問題