git đẩy nhầm người dùng từ thiết bị đầu cuối


112

Tôi gặp sự cố với git và thiết bị đầu cuối của mình.

Đây là thư viện để hiển thị cho bạn vấn đề của tôi: http://imgur.com/a/6RrEY

Khi tôi đẩy các cam kết từ thiết bị đầu cuối của mình, git nói rằng tôi đẩy chúng bằng một tên người dùng khác, đó là người dùng từ tổ chức của tôi (công ty của tôi) mà không có cam kết nào cả và có vẻ như nó không thuộc về ai: (kiểm tra ảnh đầu tiên của thư viện)

Nhưng điều này không xảy ra khi tôi sử dụng Github cho mac, trong nguồn cấp dữ liệu, tôi thấy các cam kết do chính tôi đẩy.

Vấn đề cũng ảnh hưởng đến kho lưu trữ cá nhân của tôi, thiết bị đầu cuối của tôi nói rằng tôi không có quyền đẩy các cam kết trên các kho lưu trữ đó (rõ ràng là sai) vì nó cố gắng đẩy nó với người dùng này: (kiểm tra bức ảnh thứ hai của thư viện)

Đoán xem nào? Điều này cũng không xảy ra với Github cho mac.

Tôi đã thay đổi máy tính của mình thành một thương hiệu mới một vài ngày trước, vì vậy tôi đã đặt lại tất cả khóa ssh của github và chỉ để lại một khóa mới do Github dành cho Mac tạo nên tôi không nghĩ rằng có một số người dùng ma / khóa ssh bị ẩn. ở đâu đó, hdd này là thương hiệu mới: (kiểm tra bức ảnh thứ ba của thư viện)

Tệp .gitconfig của tôi đã rõ ràng, chỉ có thông tin đăng nhập của tôi: (kiểm tra hình thứ tư của thư viện)

Tôi thực sự không hiểu, giúp đỡ, StackOverflow, bạn là hy vọng duy nhất của tôi.

(Tôi xin lỗi vì kỹ năng Gimp kém của tôi và tài liệu tham khảo Chiến tranh giữa các vì sao)

BIÊN TẬP : ssh-add -l chỉ hiển thị khóa ssh tốt do github tạo cho mac và tôi chỉ có một tài khoản github

EDIT2: ssh -T git@github.com công nhận tôi là người dùng tốt.

CHỈNH SỬA3: Sau một vài thử nghiệm, có vẻ như thiết bị đầu cuối của tôi thực hiện cam kết với tên người dùng của tôi, nhưng đẩy chúng bằng tên người dùng khác, Github dành cho mac cam kết và đẩy với tên người dùng tốt. Tình huống này xảy ra với mọi repo tôi có / tạo những cái).

EDIT4: Trong kho lưu trữ cá nhân git log --pretty="%h %an %ae"hiển thị tên người dùng tốt của tôi

EDIT5: Không có dấu hiệu của các biến môi trường sẽ ghi đè thông tin đăng nhập của tôi trong của tôi env. Ngay cả khi tôi cố gắng đặt các biến đó với vấn đề thông tin xác thực tốt vẫn tồn tại.

EDIT6: Mọi thứ hoạt động trở lại bình thường nếu tôi buộc người dùng vào đường dẫn của /.git/configkho lưu trữ nhưng tôi không nghĩ đó là lựa chọn tốt:http://USER@github.com/USER/REPO.git

EDIT7: Chúng tôi đã xóa người dùng git đã đẩy các cam kết cho tôi và điều này gây ra một lỗi khác:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

CHỈNH SỬA CUỐI CÙNG: Tôi đã cài đặt git với homebrew, đã nhập git config --global push.default simple và bây giờ nó lấy thông tin đăng nhập của tôi ngay cả khi không bắt buộc người dùng. Thật là lạ. Cảm ơn mọi người đã giúp đỡ, các bạn là những chàng trai tuyệt vời!


2
kiểm tra ~/.gitconfig$project_root/.git/configtập tin. Một trong hai cái đó chắc chắn bị định cấu hình sai cho tên người dùng.
mu 無

1
Cảm ơn câu trả lời của bạn ansh0l. ~/.gitconfiglà rõ ràng và như vậy là $project_root/.git/config. Trên thực tế, tôi gặp vấn đề này với mọi dự án cá nhân, các dự án công việc có thể được đẩy vì người dùng khác này thuộc tổ chức của tôi sở hữu các kho lưu trữ đó.
Yinfei

Bạn có nhiều tài khoản github không? Một cho công ty, còn lại cho mục đích cá nhân?
mu 無

Không, chỉ một cho mọi thứ.
Yinfei

1
Một giải pháp khó chịu là chỉ tạo lại một khóa SSH khác. Nếu bạn đang sử dụng khóa SSH hiện tại của mình với một dịch vụ khác thì điều đó sẽ vô nghĩa.
Eduardo Bautista

Câu trả lời:


167

Tôi vừa gặp vấn đề này tại nơi làm việc. Git nội trang đi kèm với mac hoặc đi kèm khi bạn cài đặt xcode lưu trữ thông tin xác thực git trong chuỗi khóa. Cách khắc phục đối với tôi là:

bắt đầu truy cập chuỗi khóa (bắt đầu tiêu điểm thông qua cmd + dấu cách, nhập chuỗi khóa, nhấn enter)

Dưới móc khóa ở phía trên bên trái, chọn "đăng nhập" Trong danh mục ở bên trái, chọn "mật khẩu"

tìm tên "github" và xóa nó.


2
Hãy chắc chắn rằng bạn xóa tất cả entry github đây & thiết lập các cấu hình đăng nhập * git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer

Trong trường hợp của tôi, SourceTree đang gặp sự cố này. Xóa mục trong chuỗi khóa đã sửa nó!
Shoerob

1
@Shank_Transformer giải pháp của bạn phù hợp với tôi! Cảm ơn bạn!
Nazariy

Bạn có thể phải tìm kiếm (hoặc khởi chạy trực tiếp) seahorsetrên Ubuntu.
caw

3
Tôi nợ bạn thưa ngài
Baconbeastnz

46

github xác định bạn bằng khóa ssh mà nó thấy, không phải bằng bất kỳ cài đặt nào từ git.

Do đó, bạn cần đảm bảo rằng khóa ssh của tài khoản công việc không nằm trong khóa của bạn khi bạn cố gắng đẩy từ tài khoản cá nhân của mình và ngược lại.

Sử dụng ssh-add -lđể xác định khóa nào có trong khóa của bạn và ssh-add -d <keyfile>để xóa khóa khỏi khóa của bạn, nếu nó hoạt động hiệu quả, hãy xóa khóa ssh 'không mong muốn' khỏi đó ~/.ssh/config.

nguồn

NB: Github sẽ vẫn xác định cam kết của bạn chỉ dựa trên email.


5
Đây là câu trả lời duy nhất giải thích tại sao nó liên tục sử dụng sai tài khoản github mặc dù tôi user.emailđã đặt đúng. Ước gì tôi có thể ủng hộ năm lần.
Chris

1
trong trường hợp của tôi loại bỏ khoá ssh làm việc như một nét duyên dángssh-add -D
rPawel

Đây là câu trả lời duy nhất phù hợp với tôi. Cảm ơn!!
Edward Hartnett

Tùy chọn duy nhất đã hoạt động. Không hiểu tại sao git không chọn đúng phím. Vì chúng ta đang đề cập đến tệp ssh nên nó phải sử dụng trong cấu hình.
Revanth Kumar

Khi tôi làm, ssh-add -ltôi nhận được một câu trả lời không hữu ích. Nó loại ra 4096 SHA256:lotsOfGibberish,about40chars (RSA)tôi không biết làm thế nào để chúng tôi thông tin này.
MiguelMunoz

20

Bất chấp tất cả các tùy chọn tuyệt vời được đưa ra bởi những người dùng khác, cách duy nhất để khắc phục điều này là cài đặt lại hoàn toàn git và nhập git config --global push.default simpleđể viết lại thông tin đăng nhập tốt.


@VonC, mặc dù câu trả lời của bạn rất tuyệt, nhưng nó không hoạt động chút nào. Đây là giải pháp duy nhất làm việc cho tôi. Tôi tự hỏi nếu nó vấn đề git hoặc OSX ...
swilgosz

40
git config --system --unset credential.helperđã làm việc cho tôi, tôi hiện được yêu cầu cung cấp thông tin đăng nhập GitHub của mình khi đẩy lại và có thể cung cấp đúng ID người dùng và mật khẩu.
CodeManX

@CoDEmanX của bạn là câu trả lời duy nhất phù hợp với tôi. Đối với bất kỳ ai khác gặp phải điều này, đó là vì chúng tôi sử dụng 2FA khi làm việc với github và tôi cần tạo mã thông báo từ github gui trước và sử dụng mã đó làm mật khẩu của tôi từ dòng lệnh sau khi tôi đã đặt lại thông tin đăng nhập cục bộ của mình! kiểm tra https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ để biết chi tiết
van Vancouver sẽ

Nó chỉ là tệp .gitconfig. Xóa hoặc đặt lại nó ... Tôi đã gặp phải vấn đề này khi gửi một dự án thử nghiệm để phỏng vấn. Chết tiệt, nó rất đau. Của nó với các tập tin cấu hình
Girish

git config --system --unset credential.helperkhông hoạt động trên Windows 10 git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex

17

Tôi đang sử dụng Windows 10 và hôm nay tôi gặp phải vấn đề tương tự. Trong trường hợp của tôi, thông tin đăng nhập của tôi cho người dùng khác đã được trình quản lý Windows Credential lưu. Do đó, xóa / hủy đặt thông tin đăng nhập git bằng lệnh dưới đây, git config --global --unset credential.helper

không giúp được gì. Tôi đã phải xóa mục nhập trong Windows theo cách thủ công bằng cách làm theo cách dưới đây,

Bắt đầu -> Bảng điều khiển ---> Tài khoản người dùng ---> Quản lý thông tin đăng nhập của bạn ---> Thông tin đăng nhập Windows

Sau đó, tìm kiếm một mục như, git: https://github.com và xóa nó. Nó hoạt động tốt sau đó.


Cảm ơn bạn Gowtham
Balint

Cảm ơn bạn, tôi chưa từng gặp sự cố này trước đây trên Windows nhưng hôm nay tôi gặp sự cố này và tôi rất vui khi thấy nhận xét của bạn ở đây.
RaKoDev

Bạn nói rằng nó "không giúp được gì" nhưng nếu nó đưa cho bạn thông báo rằng nó không thể khóa tệp cấu hình thì vấn đề chỉ đơn giản là bạn cần chạy nó từ Dấu nhắc lệnh nâng cao, như đã được chỉ ra trong một nhận xét ở trên .
Stefan

15

có vẻ như thiết bị đầu cuối của tôi thực hiện cam kết với tên người dùng của tôi, nhưng đẩy chúng bằng tên người dùng khác

Tên tác giả và người cam kết và email (quan trọng đối với GitHub) được lấy từ:

git config user.name
git config user.email

Tuy nhiên, như đã đề cập trong git configgit commit-tree, những giá trị đó có thể bị ghi đè bởi các biến môi trường:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Vì vậy, hãy kiểm tra kỹ các biến đó.

Mọi thứ hoạt động trở lại bình thường nếu tôi buộc người dùng vào .git/configkho lưu trữ nhưng tôi không nghĩ đó là lựa chọn tốt.

Nhưng nó phải là một giải pháp tốt.
Khi sử dụng url https, tôi luôn chỉ định người dùng trong đó để đảm bảo việc xác thực được thực hiện với đúng người dùng.

http://USER@github.com/USER/REPO.git

Cảm ơn bạn đã trả lời VonC! Thật không may, git configthông tin đăng nhập của tôi là đúng và không có biến môi trường nào được đặt trong /username/.bashrctệp của tôi ...
Yinfei

Tuy nhiên, @ Yinfei84, hãy kiểm tra envđầu ra ' ' của bạn .
VonC

@ Yinfei84 điều gì sẽ xảy ra nếu (để kiểm tra) bạn đặt các biến đó một cách rõ ràng, đồng thời thử cam kết và đẩy. Điều đó sẽ hoạt động tốt hơn sau đó?
VonC

Tôi chỉ làm điều đó và vấn đề vẫn tiếp diễn.
Yinfei

2
Xin lỗi nếu tôi wast rõ ràng, tôi có nghĩa là nó làm việc nếu tôi buộc người dùng trên con đường như:http://USER@github.com/USER/REPO.git
Yinfei

9

Giải pháp tạm thời được chạy trước tiên, killall ssh-agentsau đó thêm các khóa ssh được tạo cho tài khoản bạn cần sử dụngssh-add ~/.ssh/id_4shameer

Nó sẽ giúp chúng tôi làm việc trên nhiều tài khoản github khi chúng tôi gặp lỗi loại ERROR: Permission to user/repo-git.git denied to username.


1
Tôi đã làm điều đó sau khi xóa mọi mục nhập Github khỏi chuỗi khóa MacOS và nó hoạt động hoàn hảo. Hai điểm, sau khi killall, ssh-agent phải được khởi động lại với eval "$(ssh-agent -s)"ssh-addlệnh phải được thực thi với sudo.
arvymetal

7

Nếu bạn đang sử dụng MAC, hãy truy cập Keychain Access và xóa mục nhập của người dùng mà bạn không muốn truy cập git.


4

Giải pháp cho tôi là thêm một mục nhập trong tệp ~ / .ssh / config của tôi cho github. Tôi phải làm điều này bởi vì:

  1. Tôi có nhiều tài khoản github với cùng một khóa (đừng làm điều này!)
  2. khi bạn 'git push' bằng ssh, máy tính của bạn lấy id_rsa theo mặc định và sử dụng nó làm danh tính ssh.
  3. github không thể (không có gì đáng ngạc nhiên) hủy kết nối tài khoản mà bạn muốn nói đến, vì nó đặt tài khoản dựa trên khóa mà nó được trình bày, điều này nếu bị ràng buộc với nhiều tài khoản, sẽ dẫn đến sự cố như thế này. Kẻ giết người là, trong một thời gian dài, tôi đã tránh xa điều này và mọi thứ đã ổn thỏa.

Mục nhập tôi đã thêm là:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

Tôi đã tạo một khóa mới , duy nhất cho tài khoản của mình, với tên id_rsa_waterproofpatch. Mục nhập này trong cấu hình ssh của tôi chỉ định rằng đối với các kết nối đến github.com, tôi muốn trình bày khóa này.

Một giải pháp khác có thể dành cho tôi là đăng nhập vào tài khoản khác, xóa khóa ssh trùng lặp.


2

Tôi đã gặp vấn đề tương tự và hóa ra vấn đề là do tệp khóa công khai chứa địa chỉ email của tôi ở dòng cuối cùng. Điều đó dường như ghi đè cài đặt Người dùng trong cấu hình của tôi. Ngay sau khi tôi xóa email của mình khỏi tệp .pub (và tải lại lên repo của tôi), Git đã kết nối bằng cách sử dụng đúng người dùng.


Điều này đã làm việc cho tôi. Không chắc tại sao số nhận dạng trên tệp khóa công khai ban đầu ở định dạng 'tên @ miền' nhưng nó lại như vậy.
Brian Wagner

1

Điều phù hợp với tôi là sử dụng URL https của đại diện Github thay vì URL ssh . Tôi đã truy cập trang dự án Github và sao chép URL https vào khay nhớ tạm của mình, sau đó dán nó vào lệnh thứ hai bên dưới:

git remote rm origin
git remote add origin https://[...]

1

Đau mông làm sao!

vấn đề:

  1. tạo một repo trên git hub
  2. sao chép vào máy cục bộ
  3. không đẩy được 403.

lần lượt vì lý do không xác định git push đã sử dụng sai người dùng. Tôi có một vài id người dùng git hub khác nhau. Tôi làm việc cho 2 công ty khác nhau và cũng có mã số sinh viên

Tôi đang làm việc trên một chiếc mac. đây là những gì cuối cùng tôi đã làm

1) xóa thông tin đăng nhập.helper

  • một số cách trình trợ giúp thông tin xác thực được đặt thành osxkeychain
  • khi tôi bắt đầu chuỗi khóa, nhấp vào đăng nhập, mật khẩu và tìm kiếm github, tôi tìm thấy 3 mục nhập. Tôi không biết làm thế nào mà keychain có thể biết cái nào để sử dụng

a. bạn cần phải tìm ra nơi mà thông tin đăng nhập.helper được định cấu hình

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

b. khi tìm thấy đúng tập tin, hãy xóa nó như sau

git config --global --unset credential.helper

Bây giờ trong kho lưu trữ cục bộ của tôi, tôi đã tấn công tệp .git / config

tôi đã thay đổi

    url = https://github.com/aedavids/lab3RotationProject.git

đến

    url = https://myGitHubUserId@github.com/aedavids/lab3RotationProject.git

1

Trong trường hợp cụ thể của tôi, vấn đề là tôi đang sử dụng một .netrcđể truy cập github.comvà nó đã được định cấu hình bằng mã thông báo từ một người dùng khác:

machine github.com login <another-user-token>

0

xóa chuỗi khóa không giúp được gì ... Tôi phải ssh-add -Dthêm lại khóa bằngssh-add <keyfile>


0

Tôi đã giải quyết vấn đề này khi xóa (hoặc đổi tên thành * .bak) tệp id_rsa và id_rsa.pub trên MacOS High Sierra. Ý tưởng từ đây .

Tôi có chuyển hướng máy chủ tùy chỉnh trong ~ / .ssh / config nên được áp dụng nhưng đã sử dụng sai người dùng trước khi tôi đổi tên hai tệp ...


0

Đó là những gì đã làm việc cho tôi:

  1. Thay đổi thông tin đăng nhập bên trong .git-thông tin đăng nhập
  2. Thay đổi user.name toàn cục và user.email bên trong .gitconfig

0

Điều gì đã làm cho tôi xóa repo và thêm lại nó:

git remote rm origin
git remote add origin git@github.com:fguillen/MyApp.git

0

Tôi gặp vấn đề tương tự trong windows10 ngay cả sau khi gỡ cài đặt git của mình, vì @ user542833 nói rằng đó là do bộ nhớ cache của windows và bạn nên xóa thông tin đăng nhập Github trong cửa sổ của mình Credential Managervà khi bạn cố gắng đẩy lại, windows sẽ hỏi thông tin đăng nhập của bạn và đặt lại


điều này đôi khi hiệu quả với tôi, nhưng đôi khi nó không hiệu quả.
bvdb

0

Chỉ dành 6 giờ để tìm ra điều này khi cố gắng chuyển sang repo trang GitHub mới trên tài khoản mới.

Ngay cả sau khi đặt cấu hình user.name và user.email, nó sẽ được đặt mặc định cho tài khoản chính của tôi.

Điều này là do khóa ssh sẽ mặc định thành id_rsa (tài khoản chính của tôi).

Để sử dụng tài khoản mới, tôi phải chạy:

ssh-add ~/.ssh/my_new_key

sau đó sẽ làm cho git sử dụng phím mới khi đẩy.

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.