Có cách nào tôi có được cam kết vào repo mới (lần này cam kết đầu tiên là tệp LICENSE) và vẫn giữ thông tin meta cam kết không?
Có, bằng cách thêm từ xa và chọn các cam kết ở đầu cam kết đầu tiên của bạn.
# add the old repo as a remote repository
git remote add oldrepo https://github.com/path/to/oldrepo
# get the old repo commits
git remote update
# examine the whole tree
git log --all --oneline --graph --decorate --abbrev-commit
# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three
# check your local repo is correct
git log
# send your new tree (repo state) to github
git push origin master
# remove the now-unneeded reference to oldrepo
git remote remove oldrepo
Phần còn lại của câu trả lời này là nếu bạn vẫn muốn thêm PHÉP để repo trước đó của bạn.
Có. Bạn có thể đặt LICENSE của bạn cam kết là cam kết đầu tiên bằng cách rebasing.
Việc rebasing là cách sắp xếp lại trật tự cam kết trong khi vẫn giữ nguyên tất cả các tác giả cam kết và cam kết ngày tháng.
Khi làm việc trên một kho lưu trữ được chia sẻ, thường không được khuyến khích trừ khi toàn bộ nhóm của bạn thông thạo. Đối với những người không, họ chỉ có thể sao chép một bản sao mới của kho lưu trữ.
Dưới đây là cách bạn nhận LICENSE của bạn cam kết là cam kết đầu tiên.
1. Cập nhật và rebase bản sao cục bộ của bạn
Kiểm tra dự án của bạn và để các tập tin PHÉP trong một cam kết ON TOP của bạn hiện tại 3 cam kết ngăn xếp.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Sau đó làm một rebase tương tác trên chi nhánh tổng thể để sắp xếp lại các cam kết.
git rebase -i --root
Nó sẽ mở trình chỉnh sửa. Di chuyển dòng dưới cùng (cam kết "Cam kết ban đầu" của bạn, cam kết mới nhất) lên đầu tệp. Sau đó lưu và thoát khỏi trình chỉnh sửa.
Ngay khi bạn thoát khỏi trình chỉnh sửa, git sẽ ghi các cam kết theo thứ tự bạn vừa chỉ định.
Bạn hiện đã cập nhật bản sao lưu trữ cục bộ của mình. làm:
git log
để xác minh.
2. Force đẩy nhà nước repo mới của bạn để GitHub
Bây giờ bản sao của bạn được cập nhật, bạn phải buộc đẩy đến github.
git push -f origin master
Điều này sẽ yêu cầu github di chuyển nhánh chính đến vị trí mới. Bạn chỉ nên ép buộc trong những dịp hiếm hoi như thế này, nơi mọi người làm việc với nó đều biết về sự thay đổi đang chờ xử lý, nếu không nó sẽ gây nhầm lẫn cho cộng tác viên của bạn.
3. Đồng bộ hóa cộng tác viên với github
Cuối cùng, tất cả cộng tác viên sẽ phải đồng bộ hóa với kho lưu trữ này.
Đầu tiên họ phải có kho lưu trữ sạch vì lệnh sau có thể phá hủy nếu có thay đổi chưa được lưu.
# make sure there are no unsaved changes
git status
# pull the latest version from github
git fetch
# move their master branch pointer to the one you published to github.
git reset --hard origin/master
Vậy đó. Mọi người nên đồng bộ hóa ngay bây giờ.
Bạn vẫn có thể thêm giấy phép vào repo gốc. Xem https://help.github.com/articles/open-source-licensing/#how-can-i-go-back-through-my-public-repositories-and-give-them-licenses để biết chi tiết. – edwinksl
Bản sao có thể có của [git: Áp dụng các thay đổi được giới thiệu bởi cam kết trong một repo cho một repo khác] (http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo- to-another-repo) –