Đẩy từ kho lưu trữ cục bộ sang điều khiển từ xa được lưu trữ trên GitHub


113

Tôi đã tạo một kho lưu trữ cục bộ của thư mục giải pháp Visual Studio 2010 của mình bằng Git GUI trên máy nhà phát triển của mình. Sau đó, tôi đã tạo một kho lưu trữ từ xa trong tài khoản GitHub của mình. Bây giờ, tôi đang tìm cách đẩy kho lưu trữ cục bộ của mình lên kho lưu trữ từ xa.

Trong SVN, tôi chỉ có thể cam kết sử dụng TortoiseSVN và các thay đổi được đẩy vào kho lưu trữ từ xa. Tôi không thấy bất kỳ công cụ nào như vậy có sẵn cho Git.

Làm cách nào để chuyển repo cục bộ sang repo từ xa trên GitHub?

Câu trả lời:


230

Bạn đẩy kho lưu trữ cục bộ của mình đến kho lưu trữ từ xa bằng git pushlệnh sau khi lần đầu tiên thiết lập mối quan hệ giữa cả hai bằng git remote add [alias] [url]lệnh. Nếu bạn truy cập kho lưu trữ Github của mình, nó sẽ hiển thị cho bạn URL để sử dụng để đẩy. Trước tiên, bạn sẽ nhập một cái gì đó như:

git remote add origin git@github.com:username/reponame.git

Trừ khi bạn bắt đầu bằng cách chạy git clonevới kho lưu trữ từ xa, trong trường hợp đó, bước này đã được thực hiện cho bạn.

Và sau đó, bạn sẽ nhập:

git push origin master

Sau lần đẩy đầu tiên, bạn chỉ cần nhập:

git push

khi bạn muốn cập nhật kho lưu trữ từ xa trong tương lai.


1
Bạn đang thực sự gõ '~ origin ~' hay chỉ 'origin'? Tốt nhất bạn nên tránh dấu ngã vì nó có ý nghĩa đối với Git.
GoZoner

1
Đối với tôi, nó chỉ hoạt động với https: github.com/username/repo.git, tôi không biết tại sao.
eLRuLL

7
Tôi đã phải git pull origin masterđầu tiên, sau đó đẩy
Renaud

10
Tại sao họ không thể giải thích điều này trong tài liệu thông thường? Nó giống như đây là một bí mật hoặc một số sh * t. CẢM ƠN BẠN!
R Claven,

1
@RClaven, sau khi bạn tạo một kho lưu trữ mới trên Github, điều này sẽ được giải thích rõ ràng trên màn hình tiếp theo trong phần có nhãn "Đẩy kho lưu trữ hiện có từ dòng lệnh".
mujimu

3

Kiểu

git push

từ dòng lệnh bên trong thư mục kho lưu trữ


1
Tôi cho rằng điều đó sẽ ngụ ý sử dụng gitbash thay vì gitgui?
quakkels

Vâng, nếu bạn đang sử dụng một hệ thống không có dòng lệnh đầy đủ tính năng được tích hợp sẵn thì đó là điều cần đề cập trong câu hỏi
Gareth

không, tôi có điều đó ... Tôi chỉ hơi bị đe dọa bởi dòng lệnh. Chủ yếu là vì tôi đã không sử dụng nó nhiều. Điều này sẽ giúp thay đổi điều đó.
quakkels

Nó có thể là một đường cong học tập dốc nhưng quan điểm chung là những lợi ích vượt xa những nhược điểm
Gareth

Cảm ơn bạn. Tôi không muốn phải nhìn lâu hơn nữa. IDE tiếp tục đóng băng theo kích thước. Cảm ơn một lần nữa.
Eric Leroy

3

Subversion ngầm có các kho lưu trữ từ xa liên kết với nó bất cứ lúc nào. Mặt khác, Git cho phép nhiều "điều khiển từ xa", mỗi "điều khiển từ xa" đại diện cho một nơi từ xa duy nhất mà bạn có thể đẩy đến hoặc kéo từ đó đến.

Bạn cần thêm một điều khiển từ xa cho kho lưu trữ GitHub vào kho lưu trữ cục bộ của mình, sau đó sử dụng git push ${remote}hoặc git pull ${remote}để đẩy và kéo tương ứng - hoặc GUI tương đương.

Pro Git thảo luận về điều khiển từ xa tại đây: http://git-scm.com/book/ch2-5.html

Trợ giúp GitHub cũng thảo luận về chúng theo cách "tập trung vào nhiệm vụ" hơn tại đây: http://help.github.com/remotes/

Khi bạn đã liên kết cả hai, bạn sẽ có thể đẩy hoặc kéo các nhánh.


1

Điều này hoạt động cho phiên bản GIT 1.8.4 của tôi:

  1. Từ thư mục kho lưu trữ cục bộ, nhấp chuột phải và chọn ' Công cụ cam kết Git '.
  2. Tại đó, chọn các tệp bạn muốn tải lên, trong ' Thay đổi chưa theo giai đoạn ' và nhấp vào nút ' Giai đoạn đã thay đổi '. (Ban đầu, bạn có thể nhấp vào nút ' Quét lại ' để kiểm tra xem tệp nào đã được sửa đổi và chưa được tải lên.)
  3. Viết Thông điệp Cam kết và nhấp vào nút ' Cam kết '.
  4. Bây giờ nhấp chuột phải vào thư mục một lần nữa và chọn ' Git Bash '.
  5. Nhập: git push origin master và nhập thông tin đăng nhập của bạn. Làm xong.

0

mở dấu nhắc lệnh Đi đến thư mục dự án

gõ git remote add origin vị trí kho lưu trữ git hub của bạn với. git

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.