Github chết người: nguồn gốc từ xa đã tồn tại


466

Tôi đang cố gắng làm theo hướng dẫn Rails của Michael Hartl nhưng tôi đã gặp phải một lỗi.

Tôi đã đăng ký trên Github và cấp một khóa SSH mới và tạo một kho lưu trữ mới. Nhưng khi tôi nhập dòng tiếp theo vào thiết bị đầu cuối, tôi gặp lỗi sau:

Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.

Chỉ tự hỏi nếu có ai khác đã chạy qua vấn đề này?


Nếu bạn chưa tạo kho git, hãy xem .git/configtệp để xem nguồn gốc chưa được khai báo.
Denys Séguret

3
Tôi đã phải đối mặt với cùng một vấn đề và sử dụng lệnh "git remote rm origin" sau đó sử dụng lệnh git remote add URL gốc.
Akhzar Nazir

@AkhzarNazir xin vui lòng thêm điều này như một câu trả lời. Nó làm việc cho tôi.
Pamela Sillah

Câu trả lời:


896

TL; DR bạn chỉ nên cập nhật từ xa hiện có:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

Phiên bản dài:

Như thông báo lỗi cho biết, đã có một điều khiển từ xa được cấu hình có cùng tên. Vì vậy, bạn có thể thêm điều khiển từ xa mới bằng một tên khác hoặc cập nhật tên hiện có nếu bạn không cần nó:

Để thêm một điều khiển từ xa mới, được gọi là ví dụ githubthay vì origin(rõ ràng đã tồn tại trong hệ thống của bạn), hãy làm như sau:

$ git remote add github git@github.com:ppreyer/first_app.git

Tuy nhiên, hãy nhớ rằng, ở mọi nơi trong hướng dẫn bạn thấy "nguồn gốc", bạn nên thay thế nó bằng "github" . Ví dụ $ git push origin masterbây giờ nên $ git push github master.

Tuy nhiên, nếu bạn muốn xem những gì originđã tồn tại, bạn có thể làm a $ git remote -v. Nếu bạn nghĩ rằng đây là do lỗi, bạn có thể cập nhật nó như vậy:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

5
Tại sao nguồn gốc tồn tại trong kho lưu trữ mới của mình? Anh ta nên khắc phục sự cố (đảm bảo nguồn gốc ví dụ là bí danh chính xác cho github) thay vì tạo bí danh mới mà anh ta sẽ phải nhắc.
Denys Séguret

1
Ok nó đã hoạt động nhưng sau đó khi tôi đi đến bước tiếp theo và nhập git push -u origin master vào terminal thì tôi gặp lỗi sau: ERROR: Không tìm thấy kho lưu trữ. gây tử vong: Kết thúc từ xa treo lên bất ngờ Điều đó có nghĩa là gì?
ppreyer

git remote -vĐầu ra không làm gì? Ngoài ra, bạn có thể thử git push origin master?
Agis

16
git remote rm originkhông hoàn toàn làm việc Nó tạo ra lỗi: Không thể xóa phần cấu hình 'remote.origin'
Andrew Savinykh

20
@zespri: sử dụnggit remote set-url --add origin git@github.com/username/repo.git
eduncan911

342

Nói ngắn gọn,

git remote rm origin
git remote add origin git@github.com:username/myapp.git

Đã làm việc !

Chúc mừng!


bất cứ ai có thể giải thích điều này? git remote rm origin
Kick Buttowski

1
@KickButtowski rm có liên quan đến lệnh remove được sử dụng trong * nix. Vì vậy, lệnh này yêu cầu git "xóa" các chi tiết máy chủ từ xa có tên "origin".
cướp

Không cần phải làm điều này trong 2 bước khi bạn có thể làm điều đó trong 1. Xem câu trả lời của tôi.
Agis

37

Đối với những người bạn gặp phải lỗi rất phổ biến "gây tử vong: nguồn gốc từ xa đã tồn tại." Hoặc khi cố gắng xóa nguồn gốc và bạn gặp "lỗi: không thể xóa phần cấu hình remote.origin", điều bạn cần làm là đặt nguồn gốc bằng tay.

POSH ~ Git cho Windows PowerShell (và ứng dụng GitHub cho Windows) có vấn đề với điều này.

Tôi gặp phải điều này, giống như tôi thường làm như vậy, một lần nữa khi thiết lập con bạch tuộc của mình. Vì vậy, đây là cách tôi làm cho nó hoạt động.

Đầu tiên, hãy kiểm tra điều khiển từ xa của bạn:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin

Trước tiên bạn sẽ lưu ý rằng nguồn gốc của tôi không có url. Bất kỳ nỗ lực để loại bỏ nó, đổi tên nó, vv đều thất bại.

Vì vậy, thay đổi url theo cách thủ công:

git remote set-url --add origin https://github.com/eduncan911/eduncan911.github.io.git

Sau đó, bạn có thể xác nhận nó hoạt động bằng cách chạy git remote -vlại:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin  https://github.com/eduncan911/eduncan911.github.io.git (fetch)
origin  https://github.com/eduncan911/eduncan911.github.io.git (push)

Điều này đã sửa hàng chục repo git mà tôi gặp vấn đề với, GitHub, BitBucket GitLab, v.v.


2
Điều này làm việc cho tôi. Cảm ơn @ eduncan911. Trạng thái hướng dẫn github thực hiện "git init" để tạo kho lưu trữ mới trên dòng lệnh. Điều này tạo ra một điều khiển từ xa không có URL bằng giao diện PS đó.
mikekidder

Ah yah, đó là một gotcha khác và tại sao bạn phải làm điều này. +1 Có lẽ chúng ta nên báo cáo điều này với POSH Git trên github.
eduncan911

Làm cách nào để tìm url khi sử dụng gitlab?
Madmenyo

1
@MennoGouw Tôi nghĩ đó là một câu hỏi ngoài chủ đề; nhưng, thường là trên bảng điều khiển / nhà của Repo. Nó cũng nằm trong cài đặt cho dự án.
eduncan911

36

Bạn có thể xem những kho lưu trữ từ xa mà bạn được cấu hình để kết nối qua

git remote -v

Điều đó sẽ trả về một danh sách theo định dạng này:

origin  git@github.com:github/git-reference.git (fetch)
origin  git@github.com:github/git-reference.git (push)

Điều đó có thể giúp bạn tìm ra những gì 'nguồn gốc' được chỉ ra.

Nếu bạn muốn giữ kết nối từ xa mà bạn thấy với -v, nhưng vẫn muốn làm theo hướng dẫn Rails mà không cần phải nhớ 'github' (hoặc một số tên khác) cho repo của hướng dẫn của bạn, bạn có thể đổi tên kho lưu trữ khác của mình bằng chỉ huy:

git remote rename [current name] [new name]

như trong:

git remote rename origin oldrepo

Sau đó bạn sẽ có thể tiếp tục hướng dẫn của bạn.


35

Đầu tiên làm một:

git remote rm origin

sau đó

git remote add origin https://github.com/your_user/your_app.git

và Voila! Đã làm cho tôi!


Tại sao phải xóa nguồn gốc? Có cách nào chúng ta có thể thêm bất cứ điều gì thay vì nguồn gốc?
Abhils

27

Trong trường hợp đặc biệt là bạn đang tạo một kho lưu trữ mới bắt đầu từ một kho lưu trữ cũ mà bạn đã sử dụng làm mẫu (Đừng làm điều này nếu đây không phải là trường hợp của bạn). Xóa hoàn toàn các tệp git của kho lưu trữ cũ để bạn có thể bắt đầu một tệp mới:

rm -rf .git

Và sau đó khởi động lại một kho git mới như bình thường:

git init
git add whatever.wvr ("git add --all" if you want to add all files)
git commit -m "first commit"
git remote add origin git@github.com:ppreyer/first_app.git
git push -u origin master

13

Nếu bạn cần kiểm tra các repos từ xa nào bạn đã kết nối với các repos cục bộ của mình, thì có một cmd:

git remote -v

Bây giờ nếu bạn muốn xóa repo từ xa (giả sử, nguồn gốc) thì điều bạn có thể làm là:

git remote rm origin

Điều này trông giống như một bình luận hơn là một câu trả lời. Với một chút đại diện, bạn sẽ có thể gửi bình luận .
Nathan Tuggy 7/1/2015

@NathanTuggy Không, đó là một câu trả lời hoàn chỉnh, và theo ý kiến ​​khiêm tốn của tôi, trực tiếp hơn câu trả lời phổ biến nhất trong chủ đề này.
daOnlyBG

@daOnlyBG: Tôi không chắc câu trả lời trông như thế nào khi tôi nhìn thấy nó, vì đó là trước khi các bình luận bị khóa trong thời gian ân hạn (và do đó nó có thể đã được chỉnh sửa âm thầm). Nhưng bây giờ, nó hoàn toàn hợp lý, tôi đồng ý.
Nathan Tuggy

@NathanTuggy Woah, không biết đã từng có những chỉnh sửa im lặng. Điều đó giải thích.
daOnlyBG

7

Thông báo lỗi đó chỉ ra rằng bạn đã có một điều khiển từ xa trong thư mục git của bạn. Nếu bạn hài lòng với điều khiển từ xa đó, bạn có thể đẩy mã của mình. Nếu không hoặc nếu bạn không thể đẩy chỉ:

git remote remove origin
git remote add origin git@github.com:ppreyer/first_app.git

Võngà!


7

Khái niệm remoteđơn giản là URL của kho lưu trữ từ xa của bạn.

Đây originlà một bí danh chỉ vào URL đó. Vì vậy, thay vì viết toàn bộ URL mỗi lần chúng tôi muốn đẩy thứ gì đó vào kho lưu trữ của mình, chúng tôi chỉ sử dụng bí danh này và chạy:

git push -u origin master

Nói với git pushmã của chúng tôi từ nhánh chính cục bộ của chúng tôi đến kho lưu trữ nguồn gốc từ xa .

Bất cứ khi nào chúng tôi sao chép một kho lưu trữ , git sẽ tạo bí danh này cho chúng tôi theo mặc định. Ngoài ra bất cứ khi nào chúng tôi tạo ra một kho lưu trữ mới , chúng tôi chỉ tự tạo nó.

Dù là trường hợp nào, chúng ta luôn có thể thay đổi tên này thành bất cứ thứ gì chúng ta thích, chạy cái này:

git remote rename [current-name] [new-name]

Vì nó được lưu trữ ở phía máy khách của ứng dụng git (trên máy của chúng tôi) nên nó sẽ không ảnh hưởng đến bất kỳ điều gì trong quá trình phát triển của chúng tôi, tại kho lưu trữ từ xa của chúng tôi. Hãy nhớ rằng, nó chỉ là một tên chỉ đến một địa chỉ .

Điều duy nhất thay đổi ở đây bằng cách đổi tên bí danh, là chúng ta phải khai báo tên mới này mỗi khi chúng ta đẩy thứ gì đó vào kho lưu trữ của mình.

git push -u my-remote-alias master

Rõ ràng một tên duy nhất không thể trỏ đến hai địa chỉ khác nhau. Đó là lý do tại sao bạn nhận được thông báo lỗi này. Đã có một bí danh được đặt tên origintại máy cục bộ của bạn. Để xem bạn có bao nhiêu bí danh và chúng là gì, bạn có thể khởi tạo lệnh này:

git remote -v

Điều này sẽ hiển thị cho bạn tất cả các bí danh bạn có cộng với các URL tương ứng.

Bạn cũng có thể loại bỏ chúng nếu bạn thích chạy nó:

git remote rm my-remote-alias

Tóm lại:

  • tìm hiểu những gì bạn đã có,
  • xóa hoặc đổi tên chúng,
  • thêm bí danh mới của bạn.

Chúc mừng mã hóa.


5

nếu bạn đã thêm dự án cho một bộ lưu trữ khác, như bạn tải lên github và sau đó bạn tải lên bitbucket thì nó sẽ hiển thị loại Lỗi này.

Cách xóa Lỗi: xóa tệp git-hub trong dự án của bạn và sau đó lặp lại các bước sau ...

git init       
git remote add origin git@bitbucket.org:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  

5

Nó cũng có thể xảy ra nếu bạn chạy lệnh trong thư mục mà không khởi tạo git. Nếu đó là trường hợp chạy đầu tiên:

git init

4

để sử dụng git bạn phải

nguồn gốc

nếu không thì dùng sudo

để loại bỏ nguồn gốc:

git từ xa loại bỏ nguồn gốc

để thêm nguồn gốc:

git từ xa thêm nguồn gốc http: // giturl


3
  • $ git remote add origin git@gitlab.com:abc/backend/abc.git

    Trong lệnh này, nguồn gốc không phải là một phần của lệnh, nó chỉ là tên của kho lưu trữ từ xa của bạn. Bạn có thể sử dụng bất kỳ tên nào bạn muốn.

    • Trước tiên, bạn có thể kiểm tra xem những gì nó chứa bằng cách sử dụng lệnh bên dưới

    $ git remote -v

    Nó sẽ cho bạn kết quả như thế này origin git@gitlab.com:abc/backend/abc.git (fetch) origin git@gitlab.com:abc/backend/abc.git (push) origin1 git@gitlab.com:abc/backend/abc.git (fetch) origin1 git@gitlab.com:abc/backend/abc.git (push)

    nếu nó chứa đường dẫn kho lưu trữ từ xa thì bạn có thể trực tiếp đẩy tới đó mà không cần thêm nguồn gốc nữa

    • Nếu nó không liên quan đến đường dẫn kho lưu trữ từ xa của bạn

    Sau đó, bạn có thể thêm nguồn gốc mới với tên khác và sử dụng nó để đẩy như $ git remote add origin101 git@gitlab.com:abc/backend/abc.git

    Hoặc bạn có thể đổi tên tên gốc hiện tại thêm nguồn gốc của bạn

    git remote rename origin destination

    bắn dưới lệnh một lần nữa

    $ git remote -v

    destination git@gitlab.com:abc/backend/abc.git (fetch) destination git@gitlab.com:abc/backend/abc.git (push)

    Nó sẽ thay đổi tên repos hiện tại của bạn để bạn có thể sử dụng tên gốc đó

    Hoặc bạn chỉ có thể xóa nguồn gốc hiện tại của bạn và thêm nguồn gốc của bạn

    git remote rm destination


3

Thử cái này

  • cd hiện tại
  • git đổi tên từ xa nguồn gốc cũ

Bro cảm ơn, đây là điều duy nhất làm việc cho tôi.
Akshat Tamrakar

2

gặp lỗi tương tự trong khi thêm kho lưu trữ vào git hun bằng git bash trên windows

 git remote add origin https://github.com/axaysushir/netflix_page_clone.git

gây tử vong: nguồn gốc từ xa đã tồn tại.

fatal: remote origin already exists.

 ! [rejected]        master -> master (fetch first)

lỗi: không thể đẩy một số giới thiệu đến ' https://github.com/axaysushir/medites_app_USE_js.git '

Cập nhật kho lưu trữ bằng lệnh sau

$ git remote set-url origin https://github.com/axaysushir/netflix_page_clone.git

sau đó thêm kho lưu trữ bằng git remote add github thay vì git remote add origin

$ git remote add github https://github.com/axaysushir/netflix_page_clone.git

Và sau đó viết lệnh sau thay vì git push origin master, điều này sẽ tải kho lưu trữ của bạn lên github

$ git push github master

2

cập nhật nguồn gốc nếu nó đã tồn tại bằng cách sử dụng lệnh này

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git

0

Trước tiên hãy kiểm tra Để xem bạn có bao nhiêu bí danh và chúng là gì, bạn có thể khởi tạo lệnh này git remote -v

Sau đó xem bạn đang ở trong kho lưu trữ nào rồi thử git remote set-url --add [Sau đó, liên kết kho lưu trữ của bạn] git push -u origin master


0

Trên bash ít nhất, chúng ta có thể buộc giá trị trả về của mã thoát của lệnh là 0

Bạn có thể loại bỏ điều khiển cũ và thêm nó một lần nữa

git remote remove $1 || true
git remote add $1 $2

0

Trong trường hợp bạn muốn thực hiện thông qua GUI, hãy làm như sau:

  1. Đảm bảo "tệp ẩn" hiển thị trong thư mục dự án của bạn
  2. Chuyển đến thư mục .git
  3. Chỉnh sửa tệp url trong tệp config.txt và lưu tệp!
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.