2017-08-03 58 views
0

我正在使用源代碼樹的git。Git - 阻止被推送的特定提交

我已經對分支的本地副本中的某些文件進行了3-4次更改。我將永遠需要在本地進行這些更改,但我希望永遠不會意外地將其推向遠程。我當然可以保留這些更改未承諾,但這種方式我冒着丟失意外丟棄或清潔等情況下的變化。

有沒有什麼辦法可以標記一些文件,永不被推送。

或者有什麼更好的方法來達到我的目的。

有些是文件更改&一些新的文件我已經加入到本地倉庫

+0

您可以爲此分支添加預推鉤以提醒您,如果適合您,您不應該推送任何提交嗎? – kuskmen

+0

@kuskmen - 我想在這個分支做其他提交。只是不是這幾個文件。 – user93353

+0

https://stackoverflow.com/questions/6644329/block-a-git-branch-from-being-Pushed中的一些有趣的想法,雖然它更多關於分支機構。 – Chris

回答

0

如果你想提交更改的話,建議在一個單獨的分支這樣做,你重訂到主後,每的承諾你在那裏做。然後,您可以在簽出本地唯一分支的同時進行工作,然後在提交之前簽出主設備,然後推送主設備,僅簽出本地分支並在主設備上進行重設。

如果您不需要提交更改: 您可以嘗試使用.git/info/exclude文件,該文件與.gitignore類似,但僅適用於本地計算機,並且未提交。

Gitdoc - Ignoring files

Explicit repository excludes 

If you don't want to create a .gitignore file to share with others, you can create rules that are not committed with the repository. You can use this technique for locally-generated files that you don't expect other users to generate, such as files created by your editor. 

Use your favorite text editor to open the file called .git/info/exclude within the root of your Git repository. Any rule you add here will not be checked in, and will only ignore files for your local repository. 

In Terminal, navigate to the location of your Git repository. 
Using your favorite text editor, open the file .git/info/exclude. 
+0

這不會阻止我在本地提交嗎?我想本地提交。 – user93353

+0

您無法推送某些提交,並在git中排除其他提交。由於每個提交包含所有以前的提交,並且分支僅僅是提交的指針。如果你有一個提交A包含你不想推送的文件,那麼從A創建一個提交B,如果你的分支在B,沒有辦法推動分支而不包括A和B – sp1nakr

+0

我添加了更新建議 – sp1nakr

-1

有新的文件比較簡單的答案,但你以某種方式修改過的文件都有點困難。

對於新文件,您應該只能使用.gitignore。如果您不想將.gitignore添加到項目的.gitignore,那麼您可以使用git向用戶添加配置並忽略特定文件。假設您要忽略foo/目錄中的所有文件。你可以做到這一點通過:

git config --global --add core.excludesfile $HOME/.gitignore 
echo "/foo" >> $HOME/.gitignore 

對於編輯的文件,你可能會創建一個新的文件,並修改您的初創公司尋找這些新文件正確。

+0

不會.gitignore也阻止我在本地提交?我想本地提交。 – user93353

+0

'.gitignore'防止添加但不推送。 – phd

2

我很抱歉,但有人要告訴你事實..你不能做你想做的。

你根本無法阻止提交被推送,除非它在另一個推送分支中。但在這種情況下,你不會同時擁有文件和你的開發分支。

答案你不想

對於新文件,有人說,你可以忽略它們。

對於已經跟蹤的文件,您可以告訴git忽略git update-index --assume-unchanged <file>的本地修改,但這不會阻止git使用結帳刪除更改,例如。

你能做些什麼

我認爲,唯一的選擇就是改變你的應用程序如何加載這些文件(我認爲他們是類似的配置文件)。

例如有一個可配置的本地文件夾,其中可以找到其他屬性文件。此文件夾可能位於存儲庫之外,可能位於另一個存儲庫或備份其他服務