Ý nghĩa của thông báo GitHub: bị từ chối do hạn chế quyền riêng tư của email


202

Tôi đã chấp nhận và hợp nhất một Yêu cầu kéo trên github và bây giờ tôi không thể thực hiện các cam kết của mình nữa.

Tin nhắn là:

! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'git@github.com:FranckFreiburger/vue-resize-sensor.git'


git did not exit cleanly (exit code 1) (3838 ms @ 12/04/2017 21:23:11)

Tôi nên làm gì bây giờ ?


1
Tôi tìm thấy trang tài liệu: help.github.com/en/github/ từ
Sebastian Norr

Câu trả lời:


399

Kho lưu trữ từ xa đã được cấu hình để không cho phép bạn đẩy một cam kết sẽ tiết lộ địa chỉ email cá nhân của bạn. Ví dụ: trong GitHub, bạn đã kiểm tra các lần đẩy dòng lệnh Chặn lộ hộp kiểm email của tôi để kích hoạt tính năng này .

Chặn dòng lệnh đẩy lộ email của tôi

Mặc dù bạn có thể bỏ chọn cài đặt đó, nhưng nó sẽ hiển thị địa chỉ e-mail riêng của bạn cho mọi người trên thế giới, vì bất kỳ ai có quyền truy cập vào kho lưu trữ của bạn đều có thể đọc được.

Thay vào đó, hãy làm điều này:

  1. Bạn có thể thấy địa chỉ email cá nhân của mình, được sử dụng theo mặc định cho các cam kết của bạn trong Git:

    git config --global user.email
  2. Tìm địa chỉ noreply GitHub của bạn trong Cài đặt cá nhân GitHub của bạn → Email . Nó được đề cập trong phần mô tả hộp kiểm Giữ địa chỉ email riêng tư của tôi . Thông thường, nó bắt đầu bằng một mã định danh duy nhất, cộng với tên người dùng của bạn:

    {ID}+{username}@users.noreply.github.com

    Hãy để địa chỉ thư điện tử của tôi ở chế độ riêng tư

  3. Thay đổi cài đặt địa chỉ email người dùng toàn cầu thành địa chỉ noreply GitHub của bạn:

    git config --global user.email {ID}+{username}@users.noreply.github.com
  4. Đặt lại thông tin tác giả về cam kết cuối cùng của bạn:

    git commit --amend --reset-author

    Nếu bạn có nhiều cam kết với địa chỉ email riêng của mình, hãy xem câu trả lời này .

  5. Bây giờ bạn có thể đẩy cam kết bằng địa chỉ e-mail noreply và các cam kết trong tương lai cũng sẽ có địa chỉ e-mail noreply.

    git push

4
Không, nó hoạt động như một bùa mê về phía tôi, có lẽ bạn đã quên một bước, @adamczi. Đây phải là câu trả lời được chấp nhận, vì nó nêu cả hai giải pháp có thể.
Ioanna

4
Cảm ơn, đoán tôi có thể đã mắc lỗi ở bước 2. Điều đáng chú ý là bạn nên làm theo một cách rõ ràng các hướng dẫn của @ Virtlink ở đó, bởi vì đặt e-mail thành khác hơn <your_uname>@users.noreply.github.com(như tôi đặt thành None) sẽ dẫn đến việc không hiển thị các cam kết của bạn trong biểu đồ trên trang hồ sơ của bạn.
adamczi

3
Tôi đã có một vấn đề bí ẩn tương tự. Sai lầm của tôi là git commit --amend --author "first last me@users.noreply.github.com"và nó dường như không thích điều đó. Bạn thực sự cần phải thiết lập lại user.emailtham số cấu hình chính xác như trên. Chúc mừng!
msanford

6
Bước 4 mà Virtlink cung cấp ở trên là rất quan trọng để tôi vượt qua lỗi này. Tôi đã đặt user.email trong cấu hình để sử dụng địa chỉ email không trả lời của mình, nhưng lệnh Push vẫn trả về lỗi bực bội về việc xuất bản một email riêng tư. Khi tôi sửa đổi cam kết tôi đang cố gắng đẩy, nó sẽ cho phép đẩy.
teaman

3
Bạn chỉ có thể muốn thay đổi địa chỉ email cho một kho lưu trữ duy nhất. Câu trả lời này rất hữu ích, nhưng tôi cũng phải tham khảo bài viết trợ giúp của github: Đặt địa chỉ email của bạn cho một kho lưu trữ duy nhất
gfullam

146

Điều này có thể xảy ra do cài đặt GitHub mới chặn các dòng lệnh đẩy để lộ địa chỉ email của bạn.

Hãy thử bỏ chọn hộp "Chặn dòng lệnh để lộ email của tôi" trong cài đặt email của bạn và sau đó đẩy lại.


20
bỏ chọn tùy chọn này sẽ làm lộ địa chỉ email riêng tư của tôi?
Franck Freiburger

14
Vâng, đó là những gì nó sẽ làm nhưng bạn đã tiếp xúc với địa chỉ email của mình nếu bạn đã cam kết với kho lưu trữ của mình. Mặc dù Github sẽ không hiển thị địa chỉ email của bạn, nhưng nếu tôi sao chép kho lưu trữ của bạn, tôi có thể thấy chúng giống nhau và đó là điều mà công cụ ngăn chặn mới này sẽ ngăn chặn.
Lasse V. Karlsen

10
Đây là một giải pháp nghi vấn. Ít nhất đề cập rằng điều này sẽ làm lộ địa chỉ email của bạn ra toàn thế giới.
kovac

Daniel AA PelsmaekerWinfried là những câu trả lời tốt hơn.
Peter Mortensen

1

Tôi đã giải quyết các lỗi bằng cách:

git config --global user.email ""

Điều này chỉ đặt email của tôi thành trống (một chuỗi trống). Bây giờ tôi đặt email của mình trong các dự án cá nhân với:

git config user.email "myemail@domain.com"


0
  1. chỉ cần truy cập github.com và nhấp vào hồ sơ của bạn
  2. cài đặt goto
  3. bây giờ bấm vào 'Email' trên bảng điều hướng bên trái
  4. và tìm kiếm trường 'Giữ địa chỉ email của tôi ở chế độ riêng tư'
  5. vui lòng bỏ chọn tùy chọn này
  6. Bây giờ xin vui lòng kiểm tra lại và tôi nghĩ rằng vấn đề của bạn đã được giải quyết ngay bây giờ.

2
Điều này sẽ làm việc nhưng nó sẽ tiết lộ địa chỉ email riêng tư của bạn. nếu bạn quan tâm đến quyền riêng tư, hãy xem các giải pháp khác.
kaznovac

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.