Bối cảnh: Tôi đang làm việc trên máy chủ để thêm tính năng đơn giản. Sau một vài phút tôi nhận ra nó không đơn giản như vậy và tốt hơn nên làm việc trong một chi nhánh mới.Git: Tạo chi nhánh từ các thay đổi không được tổ chức/không được cam kết trên trang chính
Điều này luôn xảy ra với tôi và tôi không biết cách chuyển sang một chi nhánh khác và thực hiện tất cả những thay đổi không được sửa đổi này với tôi để lại chi nhánh chính sạch sẽ. Tôi nghĩ git stash && git stash branch new_branch
đơn giản sẽ thực hiện điều đó nhưng đây là những gì tôi nhận được:
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ echo "hello!" > testing
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git stash
Saved working directory and index state WIP on master: 4402b8c testing
HEAD is now at 4402b8c testing
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ git stash branch new_branch
Switched to a new branch 'new_branch'
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/[email protected]{0} (db1b9a3391a82d86c9fdd26dab095ba9b820e35b)
~/test $ git s
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git checkout master
M testing
Switched to branch 'master'
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Bạn có biết nếu có bất kỳ cách nào thực hiện điều này?
Mặc dù có một giải pháp đơn giản cho vấn đề của bạn, bạn có thể chỉ định trong những kết quả bạn nhận được khác với những gì bạn muốn? – Gauthier
bằng cách thực hiện các câu trả lời ở trên hoặc ở dưới cùng, các thay đổi không được đề cập là trên cả chính và nhánh mới. Tôi chỉ muốn họ trên nhánh mới, vì vậy tôi có thể kiểm tra tổng thể và làm việc trên một thứ khác mà không cần phải thay đổi những điều này xung quanh – knoopx
xem câu trả lời đã chỉnh sửa của tôi. Bạn cần phải cam kết các thay đổi cục bộ của bạn trên nhánh mới nếu bạn muốn thanh toán một trình chủ thuần túy. Thay đổi cục bộ chỉ là sự khác biệt giữa HEAD hiện tại và tệp của bạn trên đĩa. Những thay đổi này trên các tệp cục bộ không được phiên bản, bạn cần phải nói với git để lưu chúng ở đâu đó nếu bạn muốn truy xuất chúng sau này. – Gauthier