2011-12-14 19 views
14

Chciałbym przechowywać wszystkie moje pliki dotfile na GitHub, w tym .gitconfig, co wymaga ode mnie ukrycia tokena GitHub w .gitconfig.Ukrywanie tokena GitHub w .gitconfig

Aby to zrobić Mam „.gitconfig ukryte-żeton” plik, który jest plik zamierzam zmieniać i umieścić pod git że ukrywa Token:

... 
[github] 
user = giuliop 
token = --hidden-- 
... 

I skrypt powłoki, które muszę uruchomienie jeśli zmodyfikować „.gitconfig ukryte-żeton” plik, aby utworzyć „.gitconfig” file:

cp .gitconfig .gitconfig.backup 
sed 's/--hidden--/123456789/' .gitconfig-hidden-token > .gitconfig 

wadą jest konieczność ręcznego uruchomienia skryptu spędzaj modidy plik. Czy istnieje lepszy, w pełni zautomatyzowany sposób na zrobienie tego?

Odpowiedz

10

Dodaj swoją .gitconfig z git add -N.

Następnie git add -p edytuj przystawkę, zamień żeton na dowolny i popchnij to. W ten sposób nie potrzebujesz dodatkowego pliku.

Dodatek: po dodatkowych modyfikacjach pliku ponownie użyj git add -p i edytuj przystawkę, aby początkowa manipulacja nie została nadpisana.

+2

co się stanie, jeśli później edytuję plik i 'git add' to zapomnienie' -p'? Przypuszczam, że token zostanie opublikowany, a następnie – gws

+0

@ gws: rzeczywiście, ale możesz (i powinieneś) użyć 'git diff --cached' przed zatwierdzeniem, aw przypadku błędu, po prostu' git zresetować' plik również. – fge

+2

Myślę, że poprawnym podejściem jest użycie 'include' dla odpowiedzi @ddopson – Hedgehog

1

Zrobiłem skrypt, aby zaktualizować moje repozytorium dotfile, a także zmieniło wrażliwe informacje, takie jak mój token github. Nie sądzę, aby token Github był już używany przez GitHub, ale popraw mnie, jeśli się mylę.

Możesz wyświetlić mój skrypt here.

34

Po prostu naprawiłem to dla siebie. "Właściwym" sposobem rozwiązania problemu jest podzielenie twojego gitconfig na dwa pliki, publiczny z aliasem/config/etc, oraz prywatny plik, który przechowuje twoją nazwę użytkownika i tajemnice. Podobnie jak ...


Od https://github.com/ddopson/dotfiles ...

.gitconfig:
[include] 
    # For username/creds/etc 
    path = ~/.gitconfig.local 

[alias] 
    ... 
.gitconfig.local:
[user] 
    user = ddopson 
    name = Dave Dopson 
    email = [email protected] 
    token = a123uber456secret789ceprivate000key78 

[credential] 
    helper = osxkeychain 
.gitignore:
/.gitconfig.local 
+1

Jeśli zachowasz swój plik' .gitconfig.local' w tym samym katalogu deweloperskim, co repozytorium gif, nie zapomnij dodać '.gitconfig .local' do twojego projektu '.gitignore'. –