Cách chuyển đổi thư mục không trống hiện có thành thư mục làm việc Git và đẩy tệp vào kho lưu trữ từ xa


644
  1. Tôi có một thư mục không trống (ví dụ / etc / Something) với các tệp không thể đổi tên, di chuyển hoặc xóa.

  2. Tôi muốn kiểm tra thư mục này vào git tại chỗ.

  3. Tôi muốn có thể đẩy trạng thái của kho lưu trữ này sang một kho lưu trữ từ xa (trên một máy khác) bằng cách sử dụng "git đẩy" hoặc một cái gì đó tương tự.

Đây là chuyện nhỏ khi sử dụng Subversion (hiện tại chúng tôi thực hiện bằng Subversion) bằng cách sử dụng:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Git tương đương là gì?

Tôi có thể "git clone" vào một thư mục trống và chỉ cần di chuyển thư mục .git và mọi thứ đều hoạt động không?


5
Có lẽ tôi không nhận được nó, nhưng bạn có thể chạy git inittrong thư mục địa phương không?
Philipp

Bạn có nghĩa là bạn có một repo ở một nơi khác, và bạn muốn thêm vào đó repo tất cả các nội dung của thư mục khác này không phải là một repo? Hay bạn chỉ đang cố gắng tạo một repo mới trong thư mục đó?
Cascabel

Một số câu trả lời đề cập đến github, nhưng bản thân câu hỏi là về git. github không phải là git, và nó không phải là trung tâm của vũ trụ git.
vfclists

Câu trả lời:


1056

Cho rằng bạn đã thiết lập một daemon git <url>và một kho lưu trữ trống:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
hướng dẫn của abyx xuất hiện để làm việc. Bây giờ tôi có chạy không: git config branch.master.remote origingit config branch.master.merge refs/heads/master những gì tôi sẽ kết thúc sẽ giống hệt như khi tôi nhân bản kho lưu trữ từ xa? tức là git pullgit pushsẽ chỉ làm việc ?
HMW

35
Điều này cũng làm việc cho tôi. Trước tiên tôi phải tạo một dự án AppNametrong GitHub. Nó không rõ ràng với tôi chính xác <url>là phương tiện. Vì vậy, đối với những người có cùng câu hỏi, chúng tôi đơn giản sử dụng GitHub.com, chúng tôi sẽ không chạy repo của chúng tôi và sau đó, <url>như được sử dụng trong dòng thứ 5 trông giống như thế này:https://github.com/CompanyName/AppName
Bart

12
Nếu bạn đang thiết lập một kho lưu trữ không có trên GitHub, hãy chắc chắn sử dụng 'git --bare init' để thiết lập kho lưu trữ từ xa trống rỗng , và không 'git init' (như tôi đã làm) hoặc việc đẩy sẽ thất bại.
jdusbabek

3
Chỉ muốn thêm, rằng tôi không thể đẩy cho đến khi tôi thực hiện: git pull --rebase
Artemix

6
Nếu git từ chối vì điều khiển từ xa có một số thay đổi nhỏ (.README, .gitignore, v.v.), hãy thử git pull origin master --allow-unrelated-historiesthực hiện hợp nhất.
karlisup

80

Đây là cách tôi làm. Tôi đã thêm lời giải thích để hiểu cái quái gì đang diễn ra.

Khởi tạo kho lưu trữ cục bộ

  • lần đầu tiên khởi tạo Git với

    git init

  • Thêm tất cả các tệp để kiểm soát phiên bản với

    git thêm.

  • Tạo một cam kết với thông điệp bạn chọn

    git commit -m 'ThêmBaseCode'

Khởi tạo kho lưu trữ từ xa

  • Tạo một dự án trên GitHub và sao chép URL của dự án của bạn. như hình dưới đây:

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

Liên kết repo từ xa với repo cục bộ

  • Bây giờ sử dụng URL được sao chép để liên kết repo cục bộ của bạn với repo GitHub từ xa. Khi bạn sao chép một kho lưu trữ với git clone, nó sẽ tự động tạo một kết nối từ xa được gọi là origin trỏ trở lại kho lưu trữ nhân bản. Điều khiển từ xa được sử dụng để quản lý tập hợp các kho lưu trữ được theo dõi.

    git từ xa thêm nguồn gốc https://github.com/hiteshsahu/Hali-Word.git

Làm cho đồng bộ

  • Bây giờ chúng ta cần hợp nhất mã địa phương với mã từ xa. Bước này rất quan trọng nếu không chúng tôi sẽ không thể đẩy mã trên GitHub. Bạn phải gọi 'git pull' trước khi đẩy mã của mình.

    git pull master master --allow-không liên quan-lịch sử

Cam kết mã của bạn

  • Cuối cùng đẩy tất cả các thay đổi trên GitHub

    git đẩy -u nguồn gốc


1
Tôi đã thực hiện "git pull" như được mô tả trong bài đăng này và nhận được một lỗi. Tôi đã tiếp tục với "git đẩy" đã được chấp nhận và khi tôi đến Bonobo Git Server, bây giờ tôi có thể thấy sự thay đổi. Cảm ơn bài viết này với lời giải thích rõ ràng về lệnh GIT.
schlebe

Điều này có nghĩa là gì: "và sao chép URL của dự án của bạn và sao chép URL của dự án." Đây có phải là một lỗi đánh máy hay bạn đang cố gắng nói về hai URL khác nhau, hay?
gwideman

Đó là một lỗi đánh máy, chỉ cần sao chép url của dự án như trong ảnh chụp màn hình
Hitesh Sahu

2
Đây là câu trả lời đúng và nên được chấp nhận. Câu trả lời được chấp nhận thiếu bước "Đồng bộ hóa" của bạn.
Ilan

28

Đây là giải pháp của tôi:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

Giải pháp tốt khi bạn thiết lập repo từ xa với .gitignore&README.dm
Hattori Hanzou

12

Trong trường hợp kho lưu trữ từ xa không trống (đây là trường hợp nếu bạn đang sử dụng IBM DevOps trên hub.jazz.net) thì bạn cần sử dụng trình tự sau:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

EDIT ngày 30 tháng 1: Vui lòng xem các bình luận bên dưới, đảm bảo bạn đang ở đúng repo!


Các lệnh trên đã xóa sạch tất cả các bản dựng hiện có của tôi :( Vui lòng thận trọng trước khi thực hiện các bước trên
Khung Selen

7

Khi nào một kho lưu trữ github không trống, như .gitignore và giấy phép

Sử dụng pull --allow-không liên quan đến lịch sử đẩy - Force-with-cho thuê

Sử dụng lệnh

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
Tôi cần phải sửa đổi câu nói cuối cùng đó để giống hơngit push -u origin master --force-with-lease
cfont

2

Cách đơn giản nhất để làm điều này mà tôi thấy hữu ích là dưới đây.

Đây có thể không phải là cách chính thức nhưng nó hoạt động tốt.

Giả sử bạn có một dự án có tên "XYZ " trên PC của bạn. Bây giờ bạn muốn tạo một repo git của dự án này trên github và sử dụng các chức năng của nó.

Bước 1 : đi đến "www.github.com "

Bước 2 : tạo một kho lưu trữ với dấu "README.md tệp "" (đặt tên theo ý bạn)

Bước 3 : sao chép kho lưu trữ vào PC của bạn.

Bước 4 : Trong thư mục nhân bản, bạn sẽ nhận được hai thứ: .gitthư mục "" và README.mdtệp "". Sao chép hai cái này trong thư mục dự án của bạn "XYZ ".

Bước 5 : Xóa repo nhân bản.

Bước 6 : thêm, cam kết và đẩy tất cả các tệp và thư mục của dự án của bạn.

Bây giờ, bạn chỉ có thể sử dụng dự án của bạn " XYZ" làm kho lưu trữ git.


0

Tôi đã có một vấn đề tương tự. Tôi đã tạo một kho lưu trữ mới, KHÔNG PHẢI TRONG HƯỚNG DẪN R THNG TÔI MUỐN KIẾM MỘT ĐẠI DIỆN . Sau đó tôi đã sao chép các tập tin được tạo vào thư mục mà tôi muốn tạo một kho lưu trữ. Sau đó mở một kho lưu trữ hiện có bằng thư mục tôi vừa sao chép các tập tin vào.

LƯU Ý: Tôi đã sử dụng máy tính để bàn github để tạo và mở kho lưu trữ.


0

Đây là giải pháp của tôi nếu bạn tạo kho lưu trữ với một số mặc định readme filehoặclicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
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.