Đây là kịch bản. Tôi có hai máy, "máy tính để bàn" và "máy tính xách tay".Làm cách nào để giữ hai kho lưu trữ git đồng bộ?
Trên máy tôi làm:
mkdir git_test
cd git_test
git init
dd if=/dev/urandom of=test.img bs=1k count=1000
git add test.img
git commit -m "Added first image"
Sau đó, trên máy tính xách tay tôi làm:
git clone [USER]@desktop:/home/[USER]/git_test
cd git_test
dd if=/dev/urandom of=test2.img bs=1k count=1000
git add test2.img
git commit -m "Added second image"
Sau đó, tôi muốn các repo git trên máy tính để bàn của tôi để trông giống như repo git trên máy tính xách tay của tôi. Trên máy tính xách tay, tôi phát hành như sau: git push nguồn gốc chủ
Nhưng sau đó tôi nhận được:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
Làm thế nào để giữ cho hai Repos những đồng bộ?
Các thông báo lỗi dường như ngụ ý rằng git có chức năng mà tôi mong muốn, nhưng vì một lý do nào đó, nó có vẻ là luồng công việc nâng cao hơn. Tôi nghe ai đó nói một lần rằng bạn không thể đẩy đến chi nhánh bạn đang ở trên, ai đó có thể giải thích về điều đó như một giải pháp có thể? Tôi sẽ không có vấn đề gì với một giải pháp tự nhiên, nghĩa là tôi có thể làm việc trên một nhánh nhất định trên máy tính xách tay của mình và một nhánh khác trên máy tính để bàn của tôi.
Xin lưu ý những điều sau đây!
Tôi không muốn sử dụng repo tập trung, như github, vì nhiều lý do. Đầu tiên là bảo mật. Thứ hai là sự đơn giản. Thứ ba là do hoàn cảnh tôi sẽ không đi vào đây, tôi không thể đếm khi có kết nối internet với một số máy chủ từ xa, tôi chỉ có hai máy được kết nối qua mạng LAN. Cuối cùng, tôi muốn học cách làm những điều theo cách tôi yêu cầu ở đây, để đạt được phần kiến thức cụ thể đó.
Tôi cũng không muốn sử dụng một repo trần, như một repo trần có một bó của cruft trong thư mục gốc. Điều này là xấu xí và lộn xộn. Toàn bộ lý do tôi chuyển sang git từ subversion là git trông giống như một giải pháp sạch hơn, phân cấp. Ngoài ra, tôi có một số người hơi phi kỹ thuật sẽ hoạt động trong thư mục gốc của máy tính để bàn, họ sẽ nhận được khá bối rối bởi tàu tuần dương. Vẻ đẹp của git là (tôi nghĩ) rằng tất cả mọi thứ ẩn trong thư mục .git. Edit: Rõ ràng là tôi chưa đủ rõ ràng với điểm này. Hãy tưởng tượng tôi có một thư mục "Tài liệu" với các thư mục con sau: mydata1 và mydata2. Đây không phải là một ví dụ giả tạo, đây chính là vấn đề tôi đang cố giải quyết. mydata1 nên chứa "test.img" và duy nhất mà tập tin, nhưng thay vào đó nó hiện có:
chi nhánh cấu hình mô tả ĐẦU móc thông tin đối tượng refs
tôi muốn để có thể chỉ cần cd vào mydata1 và bắt đầu chỉnh sửa các tập tin, nhưng thay vào đó tôi phải thử và cd thông qua các chi nhánh, hoặc bất cứ điều gì thậm chí chỉ để hoàn thành công việc. Và để có loại cấu trúc thư mục này cho mỗi thư mục con nằm trong "tài liệu" chỉ là không thể thực hiện được. Xin vui lòng, xin vui lòng không cho tôi biết để làm những việc theo cách này. Vui lòng chỉ trả lời câu hỏi. Cảm ơn.
Hai điểm này là toàn bộ lý do tôi đăng câu hỏi này tại đây.Vui lòng chỉ trả lời nếu bạn có câu trả lời cho câu hỏi này. :) Cảm ơn!!
"cruft" tôi đề cập đến là: "branch config description HEAD hooks đối tượng thông tin refs" Tôi chỉ muốn/home/[User]/git_repo chỉ chứa các tệp tôi đang làm việc. Ngoài ra: thư mục .git bị ẩn. –
Bạn có thể ẩn repo. – nobar