- Phát triển data.frame theo cách hiệu quả về bộ nhớ
- phát hiện rò rỉ bộ nhớ ruby/ruby on rails
- Không thể giải quyết việc nhập android.support.v7.app
- Ổ cắm miền UNIX và bộ nhớ chia sẻ (tệp được ánh xạ)
Tôi muốn sử dụng git submodules.
Các bước tôi cần thực hiện để đưa những thay đổi của mình vào dự án là
- thêm/cam kết/đẩy từ thư mục mô-đun con
- thêm/cam kết/đẩy từ thư mục cha
- git pull từ thư mục cha
- git submodule cập nhật từ thư mục cha
- git pull từ thư mục submodule
Vấn đề là bạn thường không muốn làm việc trong môi trường HEAD tách biệt, vì rất dễ mất các thay đổi. Nếu bạn thực hiện cập nhật mô-đun con ban đầu, hãy cam kết trong thư mục mô-đun con đó mà không tạo nhánh để làm việc, sau đó chạy lại git submodule update từ siêu dự án mà không cam kết trong thời gian đó, (?? cập nhật/cam kết/cập nhật sẽ mất thay đổi?) Git sẽ ghi đè lên những thay đổi của bạn mà không báo cho bạn biết. Về mặt kỹ thuật, bạn sẽ không mất công việc, nhưng bạn sẽ không có nhánh nào trỏ đến nó, vì vậy sẽ hơi khó để lấy lại.
Để tránh vấn đề này, hãy tạo một nhánh khi bạn làm việc trong thư mục submodule với git checkout -b work hoặc lệnh tương đương. Khi bạn thực hiện submodule update lần thứ hai, nó vẫn sẽ hoàn nguyên công việc của bạn, nhưng ít nhất bạn có một con trỏ để quay lại.
Tôi tự hỏi mình cần thực hiện thêm những bước nào ngoài những bước tôi đã liệt kê ở trên để ngăn ngừa mất mát. Đặc biệt là một số thành viên trong nhóm sửa đổi các mô-đun con, họ cần làm gì để không làm hỏng?
1 Câu trả lời
Là người đã từng làm việc với các dự án bên ngoài bằng giải pháp Visual Studio và cố gắng giải quyết các vấn đề tương tự, tôi muốn chia sẻ kinh nghiệm của mình với bạn. Tôi mới sử dụng Git nên nếu ai có lời phê bình mang tính xây dựng nào thì tôi sẽ rất trân trọng.
Nếu bạn đang sử dụng Visual Studio, tiện ích mở rộng Git Source Control Provider là miễn phí ( http://visualstudiogallery.msdn.microsoft.com/63a7e40d-4d71-4fbb-a23b-d262124b8f4c ), và có vẻ như nó sẽ đệ quy các mô-đun con khi tôi thử nghiệm nó.
Tuy nhiên, tôi phát triển tại nhà bằng VS Web Developer Express, vì vậy tôi không muốn dựa vào các tiện ích mở rộng (tôi cũng nghĩ rằng hiểu được những gì đang diễn ra ở hậu trường là điều tốt). Vì vậy, tôi buộc phải tìm hiểu các lệnh và thêm một số bình luận bên dưới.
Nhận xét
Nếu bạn chưa thực hiện, vui lòng đọc kỹ. http://git-scm.com/book/en/Git-Tools-Submodules .Có rất nhiều cảnh báo, tôi sẽ quay lại trang này. Nếu bạn cố sử dụng các mô-đun con mà không đọc bài viết này, bạn sẽ nhanh chóng gặp rắc rối.
Phương pháp của tôi tuân theo hướng dẫn này, với một vài nội dung bổ sung được thêm vào:http://blog.endpoint.com/2010/04/git-submodule-workflow.html
Sau khi khởi tạo siêu dự án (ví dụ: khởi tạo git
&& git remote thêm nguồn gốc ...
), bắt đầu thêm các mô-đun con như sau:
git submodule thêm git://github.com/you/extension1.git phần mở rộng
git mô-đun con init
git submodule cập nhật
[mô-đun phụ "mở rộng1"]
đường dẫn = phần mở rộng
url = git://github.com/you/extension1.git
phần mở rộng cd
). chạy:
git fetch #Tôi sử dụng fetch ở đây - có lẽ bạn có thể sử dụng pull?
git checkout -b somebranchname #Xem liên kết Git-Tools-Submodules ở trên để biết giải thích tại sao bạn cần phân nhánh
git thêm .
git commit -a -m "Phân nhánh cho mô-đun con mở rộng"
đĩa CD ..
). Bạn cũng cần phải cam kết ở đây (nếu bạn xem trang git submodules mà tôi đã đề cập, nó sẽ giải thích tại sao điều này là cần thiết):
git status #sẽ cho bạn thấy rằng mô-đun con của bạn đã được sửa đổi
git commit -a -m "Đang cam kết thay đổi mô-đun con từ siêu dự án"
git push --recurse-submodules=theo yêu cầu
git submodule foreach 'git add .' #thêm đệ quy các tệp trong các mô-đun con
git-nô lệ
Có thể gửi một thứ gì đó tương tự theo cách đệ quy. (Có ai không?), vì vậy bạn cần vào từng thư mục mô-đun con và chạy lệnh commit thông thường cho các tệp bạn vừa thêm. Trong siêu dự án:
git status #cho bạn biết rằng mô-đun con `extension` đã được sửa đổi
phần mở rộng cd
git commit -a -m "Đang cam kết thay đổi phần mở rộng trong phiên chỉnh sửa siêu dự án"
đĩa CD ..
git thêm .
git commit -a -m "Mô-đun mở rộng đã thay đổi"
git status #bây giờ phải hiển thị 'thư mục làm việc sạch', nếu không thì hãy cam kết các mô-đun con khác theo cùng cách
git push --recurse-submodules=theo yêu cầu
git submodule cập nhật
Sau hai lần
git mô-đun con init
.đọc
http://git-scm.com/book/en/Git-Tools-Submodules Phần "Sao chép một dự án với các mô-đun con" của
git submodule foreach git pull nguồn gốc phát triển
phần mở rộng cd
git checkout -b development #Điều này sẽ cho bạn biết đây là một nhánh mới, nhưng tôi tin rằng điều này có nghĩa là một nhánh mới của kho lưu trữ git cục bộ - điều này sẽ được đẩy đến nhánh 'development'
#Thực hiện thay đổi, cam kết, v.v.
Liên quan đến git submodule commit/push/pull, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/14233939/
Thỉnh thoảng tôi gõ "git", sau đó nghĩ đến điều gì đó khác, và gõ ví dụ như "git checkout master". Tất nhiên, điều này để lại cho tôi $ git git checkout master git: 'git' là
Tôi đã thực hiện lệnh git clone git://foo.git cd foo ... chỉnh sửa tệp... bây giờ tôi muốn bắt đầu lại. Tôi không quan tâm đến bất kỳ thay đổi nào tôi đã thực hiện, nhưng tôi không muốn sao chép toàn bộ foo.git khổng lồ một lần nữa, chỉ để mất tất cả các thay đổi của mình. Làm sao tôi có thể
Tôi phát triển mã trên máy tính của mình và tôi có một vài nút tính toán. Để giữ cho các chương trình của mình được đồng bộ, tôi quyết định sử dụng git. Trước đây, tôi đã sử dụng nó theo chế độ một chiều để "đẩy xuống" những thay đổi từ PC đến các nút tính toán. Tuy nhiên, đôi khi chúng tôi gặp phải những lỗi nhỏ chỉ có ở các nút tính toán, cần phải được khắc phục tại chỗ.
Mặc dù có vẻ như nó không làm gì cả nhưng cũng không đưa ra bất kỳ cảnh báo hoặc thông báo lỗi nào. Bạn có ý tưởng nào không? Câu trả lời tốt nhất đến từ một bình luận trong nguồn Git: /* * Đọc cây thư mục. Hiện tại chúng tôi bỏ qua
Tôi biết cách cung cấp tên người dùng và mật khẩu cho yêu cầu HTTPS như thế này: git clone https://username:password@remote Nhưng tôi muốn biết cách cung cấp tên người dùng và mật khẩu cho Remote như thế này:
Sự khác biệt giữa Git GUI, Git Bash và Git CMD là gì? Tôi là người mới bắt đầu và vì mục đích cài đặt, tôi thấy mình thường sử dụng cả git bash và git CMD Câu trả lời hay nhất Git CMD giống như sử dụng git
Có ai có thể cho tôi biết khi chỉ mục tệp bị xóa trong git thì điều đó có nghĩa là gì không? Các tệp được đánh dấu màu đỏ trong VS Code của tôi, nhưng tôi vẫn có thể sửa đổi các tệp và đẩy những thay đổi lên kho lưu trữ từ xa để phản ánh những thay đổi đó. Tôi nghĩ tất cả những điều này là do tôi sử dụng cuộc sống của mình
Tôi đã thêm thư viện GLFV vào dự án của mình thông qua git subtree, nhưng tôi nhận được cảnh báo này "Có vẻ như cài đặt git hoặc cài đặt git-subtree của bạn bị hỏng". Ngoài ra còn mô tả một số lý do tại sao điều này có thể xảy ra:
Tôi có repo cần dự án git bên ngoài nhưng tôi không muốn sử dụng submodule vì tôi muốn lưu trữ tất cả các tệp trên github nên tôi nghĩ tôi sẽ chỉ thêm toàn bộ thư mục có git repo vào git nhưng nó không thêm .git bên trong
Tôi có repo cần dự án git bên ngoài nhưng tôi không muốn sử dụng submodule vì tôi muốn lưu trữ tất cả các tệp trên github nên tôi nghĩ tôi sẽ chỉ thêm toàn bộ thư mục có git repo vào git nhưng nó không thêm .git bên trong
Tôi đã đọc một bài viết trong đó tác giả hướng dẫn: Tạo một kho lưu trữ mới trong một kho lưu trữ hiện có và tự hỏi liệu đây có phải là một sai lầm mà tác giả đã bỏ qua hay không. Tôi sẽ kiểm tra lại với anh ấy sau. Đây là những điều kiện tôi muốn kiểm tra: Các điều kiện để biến một thư mục hiện có thành một kho lưu trữ và đã được kiểm tra trong master
Tôi làm việc trên cùng một dự án trên nhiều máy tính khác nhau và tôi tự hỏi liệu có cách nào để theo dõi thư mục .git để tôi không phải cấu hình lại các tệp cấu hình trong tất cả các tệp cục bộ của mình không. Tôi đẩy toàn bộ công việc của mình lên bitbucket. Câu trả lời hay nhất: Không, không
Câu hỏi này đã có câu trả lời tại đây: Git lưu trữ file như thế nào? (3 câu trả lời) Đã đóng 9 năm trước. Tôi tạo một kho lưu trữ từ xa cho nhiều dự án của mình, vì vậy đó là đích đến cho các lần đẩy của tôi. với git
Làm thế nào tôi có thể xem toàn bộ lịch sử nội dung của một tập tin trong git? Một tệp có lịch sử ngắn trong git, kho lưu trữ được đồng bộ hóa thông qua git-svn, nhưng có lịch sử dài trong svn. Lịch sử trong git sẽ ghi lại thời điểm tập tin được di chuyển. Để xem lịch sử
Tôi đang bối rối ở đây... Làm thế nào để tôi git commit các tập tin đã sửa đổi và làm thế nào để tôi git commit các tập tin mới? Ngoài ra, làm thế nào để commit từng file riêng lẻ trong git? Câu trả lời tốt nhất là quá trình gửi git được chia thành hai phần.
Tìm kiếm throw SO để có câu trả lời. Tình cờ thấy chủ đề cũ này nhưng có vẻ như không đưa ra câu trả lời nào. Kích hoạt lại chủ đề này với hy vọng rằng ai đó biết! Ai đó có thể cho tôi biết sự khác biệt giữa git subtree và git filter-branch không? vì
Tôi muốn biết có cách nào để tránh phải gõ từ git ở đầu mỗi lệnh Git không. Sẽ rất tuyệt nếu có cách để chỉ sử dụng lệnh git một lần sau khi mở dấu nhắc lệnh và vào "Chế độ Git". Ví dụ: git> Sau đó, chúng ta nhập
Khi bạn sửa đổi một tệp trong thư mục làm việc, git sẽ yêu cầu bạn xử lý tệp đó bằng cách sử dụng "git add". Khi bạn thêm một tệp mới vào thư mục làm việc, git sẽ yêu cầu bạn bắt đầu theo dõi tệp đó bằng cách sử dụng "git add". Tôi hơi bối rối về hai khái niệm này vì tôi cho rằng những thay đổi đối với các tệp đã được theo dõi
Tại sao git:// lại hợp lệ?$ git clone git://github.com/schacon/grit.git Đang sao chép vào 'grit'... ... Đang kiểm tra kết nối
Tôi đã thực hành git trong sandbox sau: https://learngitbranching.js.org/?NODEMO Tôi đã chạy hai bộ lệnh trong hai phiên riêng biệt. Bộ lệnh đầu tiên như sau: git clone
Tôi là một lập trình viên xuất sắc, rất giỏi!