Tôi là một lập trình viên mới trong một nhóm. Và vào ngày đầu tiên của tôi, tôi có tệp được đổi tên này bên trong một giai đoạn, sẵn sàng được cam kết bởi git:Đổi tên các tập tin bên trong git
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: reports/SQLS.rar
renamed: account/enter_rules.php -> enter_rules.old.php
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: account/enter_rules.old.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
account/enter_rules.php
Cho 2 dòng đầu tiên tôi không gặp vấn đề gì. Tôi biết chuyện gì đang xảy ra. Nhưng đối với người cuối cùng được đổi tên:, tôi không chắc nên làm gì. Hệ thống hoạt động tốt.
Bên trong thư mục công việc tôi có:
account/enter_rules.php
tôi không thể tìm thấy file enter_rules.old.php.
Có vẻ như lập trình viên khác đã tạo bản sao từ tệp, được đặt tên thực tế là .old, đã thực hiện một số kiểm tra và mã mới, hơn là tổ chức các thay đổi và quên cam kết. Hơn anh ta đã xóa cũ.php
Cách tiếp cận tốt nhất để giải quyết tình huống này là gì? Tôi muốn đặt tình trạng git rõ ràng trước khi bắt đầu làm việc trên nó và thực hiện thay đổi của riêng tôi.
Tôi đã tìm thấy bài đăng này nhưng tôi không chắc liệu mình có nên hoặc có thể cam kết trong hoàn cảnh của mình hay không. Handling file renames in git
Sau khi đọc tất cả các đề nghị, đã giúp tôi rất nhiều, đây là những gì tôi đã làm:
- Tôi chỉ cần thực hiện một bản sao (chỉ dành cho an toàn) từ tập tin
enter_rules.php
- tôi " đã nói "to git (với INDEX) rằng tên tệp đã bị thay đổi.
$git commit -m "committing name changes"
. Tại thời điểm này git không biết rằng .old đã bị xóa. - Sau đó, tôi đã nhập
$git rm "account/enter_rules.old.php"
để giải quyết dòng: Thay đổi không được tổ chức cho cam kết:. Trong cùng một cách, chúng tôi sử dụng$git add .
để "thông báo" git theo dõi<file>
, chúng tôi nên sử dụng$git rm <file>
để "báo" git để quên điều này<file>
. - Sau đó, tôi đã nhập
$git status
và tôi nhận được thông báo XANH: đã bị xóa: account/enter_rules.old.php. Vì vậy, tôi nên nói với chỉ mục, tệp .old đã bị xóa. Tôi gõ$git commit -m "committing delete changes"
- Bây giờ git biết rằng enter_rules.php được đổi tên thành enter_rules.old.php và sau đó enter_rules.old.php đã được gỡ bỏ (xóa).
- Sau đó, tôi đã giải quyết dòng cuối cùng (Tệp không được theo dõi :). Tôi chỉ nói với git rằng một tập tin mới được tạo ra và nó gọi enter_rules.php. Tôi đã thêm và cam kết như nó phải.
Tất cả các đề xuất đã giúp tôi giải quyết vấn đề, vì vậy tôi sẽ cố gắng công bằng và sẽ kiểm tra xem ai có điểm kém hơn.
Điều này rất lạ. Dựa trên những gì bạn đang nói và những gì 'git status' cho thấy, nó có vẻ như đồng nghiệp của bạn chạy' git mv enter_rules.php enter_rules.old.php' và sau đó sao chép tập tin đó trở lại enter_rules.php? Tại sao anh lại làm vậy? – DIMMSum
Chỉ cần rõ ràng. Bạn * không * cần 'enter_rules.old.php' nhưng bạn cần' account/enter_rules.php', đúng không? – DIMMSum
Xin chào Decave, tôi đã thay đổi thông tin. Tôi nên dán tất cả đầu ra git. Có vẻ như anh ta đã tạo một bản sao từ tệp và đặt tên là .old.php. Hơn ông đã thực hiện một số thay đổi trong mã. Có thể nó đã hoạt động. Hơn ông đã xóa các tập tin .old và thêm vào giai đoạn. Tôi không biết chính xác chuyện gì đã xảy ra. Nhưng bây giờ tôi có tình huống này mà bạn thấy trong git đầu ra. – zwitterion