2012-12-18 23 views
5

Tôi đang cố gắng tạo một repo git từ xa, (mà tôi đã khởi tạo với tùy chọn --bare) và đẩy một số tệp nguồn vào nó.thư mục đích trống sau khi git đẩy đến từ xa

Tôi có một repo git địa phương và từ xa trần:

[email protected]:~/notebooks$ cat .git/config 
[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[branch "master"] 
[remote "nbcsm"] 
    url = ssh://[email protected]/home/ubuntu/notebooks/.git 
    fetch = +refs/heads/*:refs/remotes/nbcsm/* 

tôi tạo ra các repo địa phương với: 1. git init 2. git add *.ipynb 3. 'git commit -m "nhập khẩu đầu tiên của IPython Sổ tay "

Sau đó, tôi đã xác minh rằng repo địa phương của tôi đã theo dõi các tệp trong đó bằng cách sử dụng vi để chỉnh sửa tệp * .ipynb và sau đó chạy git status. git không thấy tập tin đã thay đổi.

Tuy nhiên, khi tôi thực hiện git push nbcsm master đẩy dường như là thành công nhưng các thư mục đích trên máy tính từ xa của tôi/dụ là rỗng (tức là nó không chứa các tập tin Tôi đang cố gắng để đẩy để điều khiển từ xa):

[email protected]:~/notebooks$ git push nbcsm master 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Counting objects: 11, done. 
Compressing objects: 100% (9/9), done. 
Writing objects: 100% (9/9), 2.49 KiB, done. 
Total 9 (delta 5), reused 0 (delta 0) 
To ssh://[email protected]/home/ubuntu/notebooks/.git 
7a50f44..295a4fa master -> master 
[email protected]:~/notebooks$ 

Thẩm định rằng các tập tin không phải là trên xa:

[email protected]:~/notebooks$ ssh [email protected] 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64) 

* Documentation: https://help.ubuntu.com/ 

System information as of Tue Dec 18 16:46:23 UTC 2012 

System load: 0.02    Processes:   63 
Usage of /: 41.7% of 7.97GB Users logged in:  0 
Memory usage: 12%    IP address for eth0:REMOTE-IP 
Swap usage: 0% 

Graph this data and manage this system at https://landscape.canonical.com/ 

Get cloud support with Ubuntu Advantage Cloud Guest 
http://www.ubuntu.com/business/services/cloud 
*** /dev/xvda1 will be checked for errors at next reboot *** 

[email protected]:~$ sudo find /home/ubuntu/ -name "*.ipynb" 
/home/ubuntu/notebooks/Untitled0.ipynb 
[email protected]:~$ 

có khoảng 12 * .ipynb file trong repo địa phương mà không bị đẩy. Tôi khá chắc chắn rằng đây là một vấn đề khái niệm chứ không phải là một vấn đề cú pháp nhưng tôi đã đọc và đọc lại chương từ xa trong cuốn sách O'Reilly Git và tôi đang bối rối.

Trả lời

4

git push sẽ không, trừ khi bạn nói rõ ràng thông qua một trong các tập lệnh móc, cập nhật thư mục làm việc ở đầu từ xa. Thông thường, nếu chi nhánh bạn đã kiểm tra trên đầu cuối từ xa là một trong những nhánh bạn đang đẩy, nó sẽ phàn nàn to và từ chối push. Tuy nhiên, cảnh báo đó có thể bị tắt, cho phép bạn đẩy, nhưng nó vẫn không cập nhật thư mục làm việc. Bạn có thể chạy git reset --hard HEAD trong kho lưu trữ từ xa của mình (hoặc git checkout master hoặc một cái gì đó tương tự), hoặc thiết lập một móc post-receive để làm điều đó cho bạn hoặc một cái gì đó. Nó có lẽ tốt hơn để có kho từ xa được trần, mặc dù - có thể giới thiệu một kho lưu trữ thứ ba để repo phát triển của bạn có thể đẩy ở đó, và repo sản xuất của bạn có thể kéo từ nó.

Chỉnh sửa: Ok, bây giờ đây là một câu hỏi khác, vì bạn đề cập đến kho lưu trữ từ xa của bạn đã được tạo với --bare. Nếu kho lưu trữ từ xa của bạn là trống, thì bạn không nên mong đợi để xem các tệp của bạn ở đó theo cách "bình thường", bởi vì kho lưu trữ trống không có thư mục làm việc được liên kết với nó. Thay vào đó bạn sẽ thấy một vài thư mục con (như branches, hooks, info, objectsrefs) và các tập tin (config, description, HEAD) mà bạn thường thấy dưới .git trong một kho lưu trữ không trần. Tuy nhiên, bạn vẫn có thể chạy git log và các lệnh khác (như git show HEAD:<some_file>) để xác minh rằng dữ liệu của bạn có ở đó.

+0

Giải thích đầy đủ hơn, cả hai đối với các giao dịch không trần và trần, so với tôi. +1 – VonC

1

git status mà git thấy tệp đã thay đổi.

git status nên cho bạn biết rằng không có tệp nào đang được sửa đổi!

git status 
# On branch master 
nothing to commit (working directory clean) 

Nếu nó liệt kê các file sửa đổi, bạn cần phải thêm và cam kết các tập tin đầu tiên, trước khi đẩy:

git add . 
git commit -m "my commit message" 
git push -u nbcsm master 

Thêm vào đó, chắc chắn và kiểm tra những chi nhánh được kiểm tra ra về phía máy chủ :

cd /home/ubuntu/notebooks 
git branch 

Bạn không thể chuyển sang repo không hoàn tiền mà không có cảnh báo.
Nhưng kể từ khi bạn không có, có thể là một chi nhánh khác được kiểm tra.

Các vấn đề liên quan