Làm cách nào để thay đổi URI (URL) cho kho lưu trữ Git từ xa?


3894

Tôi có một repo (nguồn gốc) trên một khóa USB mà tôi đã nhân bản trên ổ cứng (cục bộ). Tôi đã chuyển "nguồn gốc" sang một NAS và đã thử nghiệm thành công nhân bản nó từ đây.

Tôi muốn biết liệu tôi có thể thay đổi URI của "origin" trong cài đặt của "local" hay không, vì vậy nó sẽ lấy từ NAS chứ không phải từ khóa USB.

Hiện tại, tôi có thể thấy hai giải pháp:

  • đẩy tất cả mọi thứ vào orign usb và sao chép nó vào NAS một lần nữa (ngụ ý rất nhiều công việc do các cam kết mới về nguồn gốc mũi);

  • thêm một điều khiển từ xa mới vào "cục bộ" và xóa cái cũ (tôi sợ tôi sẽ phá vỡ lịch sử của mình).


6
Tôi đã phải làm điều này trên một phiên bản cũ của git (1.5.6.5) và tùy chọn set-url không tồn tại. Chỉ cần xóa điều khiển từ xa không mong muốn và thêm một cái mới có cùng tên hoạt động mà không gặp vấn đề gì và duy trì lịch sử tốt.
HotN

trong trường hợp của tôi, tôi cần phải kiểm tra sự cho phép của tôi, tôi có hai kho git tư nhân và tài khoản thứ hai này là admin đó repo mới và đầu tiên là tài khoản người dùng mặc định của tôi và tôi chỉ nên cấp phép đầu tiên
saber tabatabaee Yazdi

Câu trả lời:


6332

Bạn có thể

git remote set-url origin new.git.url/here

(xem git help remote) hoặc bạn chỉ có thể chỉnh sửa .git/configvà thay đổi các URL ở đó. Bạn không có nguy cơ mất lịch sử trừ khi bạn làm điều gì đó rất ngớ ngẩn (và nếu bạn lo lắng, chỉ cần tạo một bản sao của repo của bạn, vì repo của bạn lịch sử của bạn.)


29
Nếu bạn có một người dùng shell khác thì có lẽ bạn muốn chỉ định người dùng git của mình ở đầu url mới, ví dụ:myself@git://new.url.here
sobi3ch

13
Bạn cũng có thể muốn đặt nhánh ngược dòng chính cho vị trí gốc mới của mình với : git branch -u origin/master. Điều này sẽ cho phép bạn chỉ git pushthay vì phải git push origin mastermỗi lần.
kelorek

32
@kelorek hoặc bạn chỉ có thể git push -u origin masterlần đầu tiên :)
hobbs

26
Tôi cũng đã phải git remote set-url --push origin git://...đặt url gốc ... (đẩy).
jpillora

3
Đối với nhiều chi nhánh, bạn có thể sử dụng git push -u --allđể đẩy tất cả các chi nhánh cùng một lúc sang url mới (thay vì git push -u origin master)
Ben

902
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

Thay đổi URL của điều khiển từ xa


100

Thay đổi máy chủ cho máy chủ nguồn gốc Git

từ: http://pseudofish.com/blog/2010/06/11/change-host-for-a-git-origin-server/

Hy vọng rằng đây không phải là điều bạn cần làm. Máy chủ mà tôi đã sử dụng để cộng tác trong một vài dự án git đã hết hạn tên miền. Điều này có nghĩa là tìm cách di chuyển các kho lưu trữ cục bộ để lấy lại đồng bộ.

Cập nhật: Cảm ơn @mawolf vì đã chỉ ra một cách dễ dàng với các phiên bản git gần đây (bài đăng tháng 2 năm 2010):

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

Xem trang người đàn ông để biết chi tiết.

Nếu bạn đang dùng phiên bản cũ hơn, thì hãy thử điều này:

Như một lời cảnh báo, điều này chỉ hoạt động vì nó là cùng một máy chủ, chỉ với các tên khác nhau.

Giả sử tên máy chủ mới là newhost.com, và tên cũ là oldhost.com, thay đổi khá đơn giản.

Chỉnh sửa các .git/configtập tin trong thư mục làm việc của bạn. Bạn sẽ thấy một cái gì đó như:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

Thay đổi oldhost.comđể newhost.com, tiết kiệm các tập tin và bạn đã hoàn tất.

Từ thử nghiệm hạn chế của tôi ( git pull origin; git push origin; gitx) mọi thứ dường như theo thứ tự. Và vâng, tôi biết đó là hình thức xấu để gây rối với nội bộ git.


Hình thức xấu? Có lẽ. Nhưng nếu bạn cần phải làm một cái gì đó mà các tác giả không mong đợi bất cứ ai sẽ cần phải làm, thì đôi khi việc gây rối với nội bộ là bắt buộc. Nhưng bạn phải sẵn sàng chấp nhận hậu quả nếu bạn hiểu sai. Backup your local repository _before_ messing with git internals.
Jesse Chisholm

56
git remote set-url origin git://new.location

(cách khác, mở .git/config, tìm kiếm [remote "origin"]và chỉnh sửa url =dòng.

Bạn có thể kiểm tra nó hoạt động bằng cách kiểm tra các điều khiển từ xa:

git remote -v
# origin  git://new.location (fetch)
# origin  git://new.location (push)

Lần tới khi bạn đẩy, bạn sẽ phải chỉ định nhánh ngược dòng mới, ví dụ:

git push -u origin master

Xem thêm: GitHub: Thay đổi URL của điều khiển từ xa


Tôi không thể đặt nguồn gốc mới bằng cách chỉnh sửa .git / config. Nó cho biết kho git có tên trong URL không phải là kho git. Khi tôi xóa và tạo lại nguồn gốc, tất cả đều ổn. Mặc dù vậy, tôi đã không tìm kiếm git set-url từ xa như một giải pháp cho vấn đề của mình.
bạch tuộc

+1 để cung cấp câu trả lời hoàn chỉnh với git push -ulệnh. Có lẽ rõ ràng với người khác, không phải cho tôi.
testphreak

37

Chuyển URL từ xa

Mở Terminal.

Bước đầu tiên: - Thay đổi thư mục làm việc hiện tại sang dự án địa phương của bạn.

Bước 2: - Liệt kê các điều khiển từ xa hiện có của bạn để có được tên của điều khiển từ xa mà bạn muốn thay đổi.

git remote -v

origin  https://github.com/USERNAME/REPOSITORY.git (fetch)

origin  https://github.com/USERNAME/REPOSITORY.git (push)

Thay đổi URL từ xa của bạn từ HTTPS thành SSH bằng lệnh git set-url từ xa.

Bước 3: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

Bước 4: - Bây giờ Xác minh rằng URL từ xa đã thay đổi.

git remote -v Xác minh URL từ xa mới

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)

Bạn có phải xóa nguồn gốc cũ trước khi bạn thêm nguồn gốc mới không?
Sledge

Tôi đã không loại bỏ khỏi dự án bất cứ điều gì. Tôi chỉ cần thực hiện các bước trên và nó đã hoạt động
VIKAS KOHLI

27
  1. xóa nguồn gốc bằng lệnh trên gitbash git remote rm origin
  2. Và bây giờ thêm Origin mới bằng gitbash git remote add origin (Sao chép URL HTTP từ kho lưu trữ dự án của bạn trong nhóm bit)

Đây là câu trả lời thực sự hữu ích vì không có git remote rm origingit nhớ chi tiết về nguồn gốc cũ.
mato

Ở trên git remote rm origingiải quyết vấn đề của nhiều điều khiển từ xa: vấn đề mà tôi không thể đặt url từ xa. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitand

21

git set-url từ xa {name} {url}

Ví dụ) git remote set-url origin https://github.com/myName/GitTest.git


19

Viết lệnh dưới đây từ thiết bị đầu cuối repo của bạn:

git remote set-url origin git@github.com:<username>/<repo>.git

Tham khảo liên kết này để biết thêm chi tiết về việc thay đổi url trong điều khiển từ xa.


1
nó đã giúp. Liên kết rất hữu ích
ANP

16

nếu bạn nhân bản địa phương của bạn sẽ tự động bao gồm,

URL từ xa nơi nó được nhân bản.

bạn có thể kiểm tra nó bằng cách sử dụng git remote -v

nếu bạn muốn thay đổi nó,

git remote set-url origin https://github.io/my_repo.git

đây,

nguồn gốc - chi nhánh của bạn

nếu bạn muốn ghi đè lên nhánh hiện có, bạn vẫn có thể sử dụng nó .. nó sẽ ghi đè lên hiện tại của bạn ... nó sẽ làm,

git remote remove url
and 
git remote add origin url

cho bạn...


Tôi đã thêm nhiều điều khiển từ xa, vì vậy git remote rm originlệnh là cần thiết để loại bỏ tất cả các url liên quan. Sau đó, lệnh add làm việc.
bitand

14

Để kiểm tra kết nối từ xa git:

git remote -v

Bây giờ, đặt kho lưu trữ cục bộ thành git từ xa:

git remote set-url origin https://NewRepoLink.git

Bây giờ để làm cho nó ngược dòng hoặc đẩy sử dụng mã sau đây:

git push --set-upstream origin master -f


1
Tôi đã đẩy và github đã không hiển thị chi nhánh mới của tôi. Điều đó cuối cùng --set-upstreamđã làm cho nó hoạt động.
OoDeLally

11

Bạn có rất nhiều cách để làm điều đó:

Bảng điều khiển

git remote set-url origin [Here new url] 

Chỉ cần chắc chắn rằng bạn đã mở nó ở một nơi có kho lưu trữ.

Cấu hình

Nó được đặt trong .git / config (cùng thư mục với kho lưu trữ)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = [Here new url]  <------------------------------------
...

RùaGit

Bước 1 - mở cài đặt

Bước 2 - thay đổi url

Sau đó, chỉ cần chỉnh sửa URL.

NguồnTree

  1. Nhấp vào nút "Cài đặt" trên thanh công cụ để mở cửa sổ Cài đặt Kho lưu trữ.

  2. Nhấp vào "Thêm" để thêm đường dẫn kho lưu trữ từ xa vào kho lưu trữ. Cửa sổ "Chi tiết từ xa" sẽ mở ra.

  3. Nhập tên cho đường dẫn từ xa.

  4. Nhập URL / Đường dẫn cho kho lưu trữ từ xa

  5. Nhập tên người dùng cho dịch vụ lưu trữ cho kho lưu trữ từ xa.

  6. Nhấp vào 'OK' để thêm đường dẫn từ xa.

  7. Quay lại cửa sổ Cài đặt Kho lưu trữ, nhấp vào 'OK'. Đường dẫn từ xa mới nên được thêm vào kho lưu trữ ngay bây giờ.

  8. Nếu bạn cần chỉnh sửa đường dẫn từ xa đã thêm, chỉ cần nhấp vào nút 'Chỉnh sửa'. Bạn nên được chuyển đến cửa sổ "Chi tiết từ xa" nơi bạn có thể chỉnh sửa chi tiết (URL / Đường dẫn / Loại máy chủ) của đường dẫn từ xa.

  9. Để xóa đường dẫn kho lưu trữ từ xa, nhấp vào nút 'Xóa'

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

tham chiếu Ủng hộ


11

Thay đổi URI git từ xa thành git@github.comthay vìhttps://github.com

git remote set-url origin git@github.com:<username>/<repo>.git

Thí dụ:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

Lợi ích là bạn có thể git pushtự động làm khi bạn sử dụng ssh-agent :

#!/bin/bash

# Check ssh connection
ssh-add -l &>/dev/null
[[ "$?" == 2 ]] && eval `ssh-agent`
ssh-add -l &>/dev/null
[[ "$?" == 1 ]] && expect $HOME/.ssh/agent

# Send git commands to push
git add . && git commit -m "your commit" && git push -u origin master

Đặt một tập lệnh $HOME/.ssh/agentđể cho nó chạy ssh-addbằng cách sử dụng mong đợi như dưới đây:

#!/usr/bin/expect -f
set HOME $env(HOME)
spawn ssh-add $HOME/.ssh/id_rsa
expect "Enter passphrase for $HOME/.ssh/id_rsa:"
send "<my_passphrase>\n";
expect "Identity added: $HOME/.ssh/id_rsa ($HOME/.ssh/id_rsa)"
interact

10

Trong Git Bash, nhập lệnh:

git remote set-url origin https://NewRepoLink.git

Nhập thông tin xác thực

Làm xong



9
$ git remote rm origin
$ git remote add origin git@github.com:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master

8
Khi thêm câu trả lời cho câu hỏi mười năm tuổi với hai mươi mốt câu trả lời khác, điều thực sự quan trọng là bao gồm một lời giải thích về câu trả lời của bạn và chỉ ra khía cạnh mới của câu hỏi mà câu trả lời của bạn giải quyết. Với các câu trả lời là một loạt các lệnh, rất hữu ích để giải thích từng việc đang làm và cách hoàn tác các tác động của từng lệnh nếu điều đó là có thể. Hoàn tác là quan trọng trong trường hợp ai đó có thể thực hiện một vài bước đầu tiên, nhưng sau đó gặp lỗi ở bước sau.
Jason Aller

@JasonAller Tôi nghĩ rằng điều này khá tự giải thích mặc dù và đó là câu trả lời tốt nhất ở đây cho đến nay, những người khác là một trò đùa.
Oliver Dixon

7

Nếu bạn đang sử dụng TortoiseGit thì hãy làm theo các bước dưới đây:

  1. Chuyển đến thư mục thanh toán cục bộ của bạn và nhấp chuột phải để đi đến TortoiseGit -> Settings
  2. Trong khung bên trái chọn Git -> Remote
  3. Trong khung bên phải chọn origin
  4. Bây giờ thay đổi URLgiá trị hộp văn bản thành nơi lưu trữ từ xa mới của bạn

Chi nhánh của bạn và tất cả các cam kết tại địa phương của bạn sẽ vẫn còn nguyên và bạn có thể tiếp tục làm việc như trước đây.


6

nhập mô tả hình ảnh ở đây

Xử lý sự cố :

Bạn có thể gặp phải những lỗi này khi cố gắng thay đổi một điều khiển từ xa. Không có từ xa '[tên]'

Lỗi này có nghĩa là điều khiển từ xa mà bạn đã cố gắng thay đổi không tồn tại:

git từ xa set-url sofake https://github.com/octocat/Spoon-Knife fatal: Không có 'sofake' từ xa như vậy

Kiểm tra xem bạn đã gõ đúng tên từ xa.

Tham khảo: https://help.github.com/articles/changing-a-remote-s-url/


3

Để thay đổi từ xa ngược dòng: git remote set-url origin <url>


Để thêm nhiều thượng nguồn hơn: git remote add newplace <url>

Vì vậy, bạn có thể chọn nơi làm việc git push origin <branch>hoặcgit push newplace <branch>


1
Tôi không thể tìm thấy những đề cập khác về làm việc ở nhiều thượng nguồn ..
Anderson Cossul

2

Bạn có thể thay đổi url bằng cách chỉnh sửa tệp cấu hình. Đi đến gốc dự án của bạn:

nano .git/config

Sau đó chỉnh sửa trường url và đặt url mới của bạn. Lưu các thay đổi. Bạn có thể xác minh các thay đổi bằng cách sử dụng lệnh.

git remote -v 

1

Dành cho những ai muốn thực hiện thay đổi này từ Visual Studio 2019

Mở Team Explorer (Ctrl + M)

Trang chủ -> Cài đặt

Git -> Cài đặt kho lưu trữ

Điều khiển từ xa -> Chỉnh sửa

nhập mô tả hình ảnh ở đây


1

Nếu kho lưu trữ của bạn là riêng tư thì

  1. Mở Bảng điều khiển từ menu Bắt đầu
  2. Chọn tài khoản người dùng
  3. Chọn "Quản lý thông tin đăng nhập của bạn" trong menu bên trái
  4. Xóa mọi thông tin liên quan đến Git hoặc GitHub

Tài liệu tham khảo


1

kiểm tra đặc quyền của bạn

trong trường hợp của tôi, tôi cần kiểm tra tên người dùng của mình

tôi có hai hoặc ba kho lưu trữ với thông tin riêng biệt.

Vấn đề là sự cho phép của tôi, tôi có hai máy chủ git riêng và kho lưu trữ

tài khoản thứ hai này là quản trị viên của repo mới đó và tài khoản đầu tiên là tài khoản người dùng mặc định của tôi và tôi nên cấp quyền trước

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.