2011-12-14 24 views
14

Tôi muốn lưu trữ tất cả các dấu chấm của tôi trên GitHub, bao gồm .gitconfig yêu cầu tôi ẩn mã thông báo GitHub trong .gitconfig.Ẩn mã GitHub trong .gitconfig

Để làm như vậy tôi có một tập tin ".gitconfig-ẩn-mã thông báo" mà là file tôi có ý định chỉnh sửa và đặt dưới git mà giấu đi những dấu hiệu:

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

Và một kịch bản shell mà tôi cần để khởi động nếu tôi thay đổi ".gitconfig-ẩn-mã thông báo" tập tin để tạo ra các ".gitconfig" file:

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

Hạn chế là cần phải tự khởi động kịch bản everytime tôi modidy tập tin. Có cách nào tốt hơn, hoàn toàn tự động để thực hiện việc này không?

Trả lời

10

Thêm .gitconfig của bạn với git add -N.

Sau đó, git add -p, chỉnh sửa đoạn văn bản, thay thế mã thông báo bằng bất kỳ thứ gì và đẩy mã đó. Không cần thêm một tập tin theo cách này.

Phụ lục: khi sửa đổi bổ sung tệp của bạn, hãy sử dụng lại git add -p và chỉnh sửa đoạn nội dung để thao tác ban đầu của bạn không bị ghi đè.

+2

điều gì xảy ra nếu tôi chỉnh sửa tập tin sau đó và 'git add' nó quên' -p'? Tôi giả sử mã thông báo sẽ được xuất bản sau đó – gws

+0

@gws: thực sự, nhưng sau đó bạn có thể (và có lẽ nên) sử dụng 'git diff --cached' trước khi cam kết, và trong trường hợp lỗi, chỉ cần' git reset' tệp. – fge

+2

Tôi nghĩ cách tiếp cận chính xác là sử dụng 'include' theo câu trả lời của @ddopson – Hedgehog

1

Tôi đã tạo một kịch bản để cập nhật repf dotfiles của mình, nó cũng tạo lại thông tin nhạy cảm như mã thông báo github của tôi. Tôi không nghĩ rằng Github token được sử dụng bởi GitHub nữa, nhưng sửa tôi nếu tôi sai.

Bạn có thể xem tập lệnh here của mình.

34

Tôi vừa sửa lỗi này cho chính mình. Cách "thích hợp" để giải quyết vấn đề là chia gitconfig thành hai tệp, một tệp công khai với bí danh/config/etc và tệp riêng tư giữ bí danh và tên người dùng của bạn. Giống như rất ...


Từ 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

Nếu bạn giữ tệp' .gitconfig.local' trong cùng thư mục phát triển như kho lưu trữ dotfiles git, đừng quên thêm '.gitconfig .local' vào dự án '.gitignore' của dự án của bạn. –

Các vấn đề liên quan