Thay đổi tên thư mục trong kho lưu trữ Github từ xa, trực tiếp từ Linux Git cục bộ?


10

Đây là kho Git của tôi:

https://github.com/benqzq/ulcwe

Nó có một thư mục được đặt tên localvà tôi muốn đổi tên của nó thành một tên khác (giả sử, từ localđến xyz).

Thay đổi nó thông qua GUI GitHub theo cách thủ công là một cơn ác mộng vì tôi phải thay đổi tên thư mục cho từng tệp riêng biệt (GitHub vẫn chưa bao gồm chức năng "Đổi tên thư mục", tin hay không).

Sau khi cài đặt Git, tôi đã thử lệnh này:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

Mặc dù tôi không nhận được bất kỳ lời nhắc nào cho mật khẩu GitHub của mình nhưng tôi đã gặp phải lỗi này:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Tôi biết toàn bộ vấn đề trong Git là tải xuống một dự án, thay đổi, kiểm tra và sau đó đẩy đến nhà cung cấp dịch vụ lưu trữ (GitHub trong trường hợp này), nhưng chỉ cần thay đổi một thư mục, tôi mong muốn một hoạt động trực tiếp. Nó thậm chí có thể với Git?

Tôi có nên sử dụng một chương trình khác không?


2
Không, hoạt động từ xa trực tiếp là không thể trong Git. Bạn phải sao chép (tải xuống) dự án, thay đổi nó, sau đó đẩy trở lại nhà cung cấp dịch vụ lưu trữ. Nhưng làm thế nào bạn thậm chí sử dụng Github mà không có dự án trên máy tính của bạn? Bạn có đang thực hiện tất cả các thay đổi thông qua giao diện người dùng web Github - điều đó không có vẻ rất thuận tiện hoặc hiệu quả.
dùng253751

Trong trường hợp cụ thể này, sử dụng UI thường khá thuận tiện và hiệu quả đối với tôi, điều chính tôi bỏ lỡ là thay đổi tên thư mục trực tiếp ...
user9303970

Câu trả lời:


28

Thông báo lỗi nghiêm trọng cho biết bạn đang làm việc từ một nơi không phải là bản sao của kho git của bạn. Vì vậy, hãy bắt đầu bằng cách nhân bản kho git trước:

git clone https://github.com/benqzq/ulcwe.git

Sau đó nhập nó:

cd ulcwe

và đổi tên thư mục:

git mv local xyz

Để thay đổi có thể chia sẻ được, bạn cần phải cam kết:

git commit -m "Rename local to xyz"

Bây giờ bạn có thể đẩy nó vào kho git từ xa của bạn:

git push

và bạn sẽ thấy sự thay đổi trong giao diện GitHub.


14
Nói cách khác, nó giống như mọi thao tác khác trên các tệp trong kho Git của bạn.
Các cuộc đua nhẹ nhàng trong quỹ đạo

2
@LightnessRacesinHoặc người hỏi dường như đã sử dụng giao diện người dùng web cho tất cả các thay đổi của họ cho đến nay.
dùng253751

5

Không, không có cách nào để làm điều này như là một hoạt động trực tiếp vì cách cấu trúc git.

Cách mà git hoạt động là nó lưu trữ một bản sao của toàn bộ kho lưu trữ, bao gồm tất cả lịch sử, đến mọi vị trí.

Github, hoặc Bitbucket, hoặc bất kỳ nhà cung cấp dịch vụ lưu trữ nào khác về cơ bản chỉ là một bản sao khác của kho git của bạn, với giao diện web đẹp ở trên, được coi là nguồn trung thực của hầu hết các quy trình công việc, tuy nhiên tiện ích git không biết điều này.

Thay đổi được theo dõi như cam kết. Tôi đoán rằng direct operation, ý bạn là, cách thay đổi tên thư mục mà không cần tạo cam kết. Mặc dù điều này có thể bằng cách viết lại lịch sử, tôi sẽ không đề xuất nó, đặc biệt nếu có nhiều người / máy có bản sao của git repo, vì điều này có thể dẫn đến sự không nhất quán.

Cách dễ nhất để đổi tên thư mục trong repo git là sao chép nó cục bộ

git clone [url]
cd [git-folder]

Nếu bạn đã có một bản sao cục bộ của repo, hãy kéo nó để đảm bảo bạn được cập nhật với repo từ xa

git pull

Thực hiện các thay đổi bạn cần tại địa phương

git mv local xyz

Mà sẽ tự động được thêm vào khu vực tổ chức bởi github. Sau đó, bạn nên cam kết và đẩy những thay đổi này.

git commit -m 'Renamed local to xyz'
git push

Điều này sẽ cam kết thay đổi đối với kho lưu trữ cục bộ của bạn, sau đó đẩy các thay đổi này sang bản sao từ xa của kho lưu trữ, trong trường hợp này là Github.


8
Không, lịch sử không được lưu trữ dưới dạng thay đổi giữa các lần xác nhận, mỗi lần cam kết là tự hỗ trợ. Thay đổi giữa các lần xác nhận được tính lại theo yêu cầu mỗi khi chúng cần.
Stephen Kitt

3
"tất cả lịch sử được tải xuống mọi vị trí" - không phải vớigit clone --depth
user11153

2
Viết lại lịch sử sẽ không được yêu cầu cho việc này - GitHub chỉ có thể tạo ra một cam kết làm như vậy. (Giống như đã làm khi chỉnh sửa tệp trực tiếp trên trang web.)
user1686

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.