Làm cách nào để thêm một cam kết cha mẹ trước tất cả các cam kết khác trong Git?


1

Tôi đang ở trong một tình huống mà tôi đang cố gắng chuyển đổi một dự án nguồn mở sang Git và gần đây tôi đã có được quyền truy cập vào dữ liệu lịch sử cho dự án. Tuy nhiên, tôi đã thực hiện sửa đổi cho repo, vì vậy tôi muốn thêm những thay đổi sớm này khi git cam kết với bắt đầu của cây cam kết trong Git. (Có, tôi biết rằng điều này sẽ thay đổi SHA cho các lần xác nhận sau; điều này có thể chấp nhận được.) Dữ liệu được cung cấp dưới dạng ảnh chụp nhanh liên tiếp của thư mục làm việc. Tôi muốn thiết lập nó để trạng thái của thư mục làm việc cho các lần xác nhận sau không bị ảnh hưởng (tôi không muốn hợp nhất các thay đổi trong).

Ví dụ: nếu cam kết ban đầu B thêm tập tin ab vào thư mục làm việc, và cam kết lịch sử của tôi A thêm tập tin a, Tôi muốn thực hiện một cam kết mới B' ngang hàng từ A có thêm tập tin b chỉ có. Ở cả hai BB', thư mục làm việc trông giống nhau và mọi cam kết tiếp theo ở trên cùng của B có thể được khởi động lại một cách an toàn B'.

Có thể làm điều này trong Git? Nếu vậy thì thế nào?

Chỉnh sửa: Lưu ý rằng tôi cần sửa đổi cam kết ban đầu. Cách sử dụng tiêu chuẩn của git commit nối thêm một cam kết mới như là một đứa trẻ của HEAD cam kết, và do đó không hoạt động cho cam kết ban đầu, không có cha mẹ.



Câu trả lời:


5

Một cái gì đó như thế này sẽ làm việc.

# Create a new branch with the old history
$ git checkout --orphan old-history    
$ git add <old-files>
$ git commit

# Rebase master on top of the branch with old-history
$ git checkout master
$ git pull --rebase . old-history

0

Tôi không chắc nếu nó có thể làm được:

git add [files]
git commit -m 'first commit'

Sau đó, hợp nhất các thay đổi

git add [files]
git commit -m 'second commit'

Sau đó

git push

Nếu điều này không làm việc thì tôi nghĩ không có cách nào để đạt được điều đó.


1
Tất nhiên bạn có thể làm điều này, nhưng nó sẽ thêm các cam kết cũ vào cuối cây chứ không phải bắt đầu.
Mario Carneiro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.