我已經刪除了多個提交前的文件,現在我需要它的一部分。
如何顯示它,以便我可以複製粘貼?如何顯示之前刪除多個提交的git文件
我已經試過這樣:
git show HEAD~2 -- path/to/file
但我得到任何輸出。 自動完成不適用於刪除的文件,所以我不是100%確定文件名,但我99%確定。
我已經刪除了多個提交前的文件,現在我需要它的一部分。
如何顯示它,以便我可以複製粘貼?如何顯示之前刪除多個提交的git文件
我已經試過這樣:
git show HEAD~2 -- path/to/file
但我得到任何輸出。 自動完成不適用於刪除的文件,所以我不是100%確定文件名,但我99%確定。
git cat-file -p HEAD~2:path/to/file
您可以檢出您刪除它的提交(git checkout "old-commit-hash"
),複製您需要的文件並再次檢出當前數據(git commit "current-commit-hash"
)。
的哈希可以擡起頭來:git log
然後我需要儲藏我先做的變化?你可以做完整的命令列表嗎? –
你可以用'git stash'存儲它們,或者已經提交它們(不推送)。 提交更改後,可以使用'git commit --amend'來修改提交的新更改。 – DanielM
完整的更改將是: 1)'git add「更改文件」' 2)'git commit' 3)'git log' - >找出文件被刪除的提交和您當前的提交 4)'git checkout「old-commit-hash」' 5)複製你需要的fies 6)'git checkout'current-commit-hash'' 7)修改並修改它們到你當前提交的'git添加文件','git commit --amend' – DanielM
列出所有修改過的文件進行兩次提交之間。
git diff --name-only START_COMMIT..END_COMMIT
使用--name狀態也會顯示像添加,刪除,用文件
git diff --name-status START_COMMIT..END_COMMIT
用gitk來一起修改了變化。
一個簡單的方法,如果你碰巧使用gitk gui,只需簡單地在你的終端中運行gitk
並通過git樹列表你可以刪除被刪除的文件。
使用CLI方式:
git log --your_file_path
或
git log --full-history -- your_file_path
如果你只是想看到從樹,Check this answer被刪除的文件。
您可以使用命令git whatchanged
找到已刪除文件的名稱。它顯示了以前提交修改的文件列表。刪除的文件用字母D標記。在識別文件名後,要恢復它,請鍵入git checkout <hash_id>~ -- <filename>
,其中<hash_id>
表示提交的哈希,其中您刪除了指定的文件<filename>
。
如果您只想查看文件,請鍵入git show <hash_id> -- <filename>
。該命令打印指定提交所做文件的更改(包括刪除)。
謝謝,不知道'git whatchanged'。 '〜'是'git checkout
需要使用代字號來恢復文件。提交哈希之後的波浪號表示該文件仍然存在的上一次提交。但是如果你的目標只是看文件,當然''show'命令就足夠了。我補充了答案,謝謝。 – mymedia
這將顯示您在特定文件最後一次變更:
git log -1 -p -- <file_path>
然而,這有時也不是很方便的,因爲你將看到的變化,但複製粘貼過程可能會非常棘手,由於領先-
每個改變線的前面。
如果要恢復的文件,這樣就可以很容易地從它複製粘貼:
獲得的提交SHA在那裏你已刪除的文件:
git rev-list -n 1 HEAD -- <file_path>
結帳使用脫字符號(^
)符號:
git checkout <SHA>^ -- <file_path>
我覺得你的問題是:
如果是這樣的話,你所做的是正確的。但更多的是實現它。
git log --pretty=format:"%h - %an, %ad --> %s" --date=iso
這會給你日期可讀的格式提交。 讓有100次的提交,你的提交日期是圍繞從頭部30日(再採取一些「最後40」提交)
git log --pretty=format:"%h - %an, %ad --> %s" --date=iso | head -40 | awk '{print $1}'
如果給40個提交作爲輸出,做到以下幾點。
while read commit ; do echo -e "\n\nFile committed in $commit are : " ; git show --pretty="format:" --name-only $commit ; done< <(git log --pretty=format:"%h - %an, %ad --> %s" --date=iso | head -40 | awk '{print $1}')
然後乘坐提交ID與你的文件。
然後你可以去你的命令。
您正在使用Linux或Windows?如果Windows如何訪問Git(通過UI或命令)?如果命令 - 請參閱我的答案 – smilyface
請選擇正確的答案。這對其他人會有幫助。 – smilyface