2017-10-20 65 views
-1

我GOOGLE了,但還是沒找到合適的和簡單的答案如何做到以下幾點: 我的工作我的分支,提交和推送FILE1.TXT許多承諾前。但我實際上並不想在開放式公關中使用這個文件。什麼是最簡單的方法來做到這一點? 我試圖git rmgit rm --cached但它刪除文件,但我只想要撤消無論是混帳撤消COMMITED文件在當前分支

回答

1

之前,如果你已經推它承諾你需要重寫的提交的全部歷史,然後做強制推送(通常不允許你改寫歷史)

此外,如果你這樣做,確保沒有一人有這個分支簽出,並有改變。如果他們這樣做,並且你摧毀了歷史,他們將會很難恢復。

如果你想繼續,github上有一個很大的指導或https://help.github.com/articles/removing-sensitive-data-from-a-repository/這個確切的使用情況了。

0

您可以籤一箇舊版本的文件:

git checkout <commit> -- <file> 

然後將其提交:

git commit 

完成

如果你想刪除的文件,刪除即可在文件系統之後:

git rm <file> 
git commit 

完成

1

正如@Andreas Wederbrand所建議的,如果您不關心重寫提交的整個歷史記錄,然後切換到創建請求的分支,請獲取commit-id,重置它並推送遠程,如下:

git reset --hard <commit-id> 
git add -m "Revert commit for file file1.txt" 
git push origin <branch-name> 

編輯:由於@Todd --hard提到將丟掉整個提交。

如果提交的是不同於file1.txt然後從分支簽出該文件的其他變化,從在其中創建拉請求,並推送到遠程如下:

git checkout <desired-branch> -- path/to/file1.txt 
git add -m "Revert commit for file file1.txt" 
git push origin <branch-name> 
+0

小心了'--hard'選項,假設你想扔掉整個提交。該提交可能還有其他更改要保留。 – Todd

+0

@Arpit如果我做'git reset --hard',它將刪除整個提交,但我不想要它。我還有其他文件 –

+0

請注意,這些建議都不會從較舊的提交中移除文件。如果文件包含敏感數據,則需要在引入後重寫每次提交。 –