Giả sử tôi có 5 cam kết cục bộ. Tôi muốn đẩy chỉ 2 trong số họ vào một repo tập trung (sử dụng một quy trình làm việc theo phong cách SVN). Làm thế nào để tôi làm điều này?làm thế nào để bạn chỉ đẩy một số cam kết git địa phương của bạn?
này đã không làm việc:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
Đó kết thúc đẩy tất cả 5 địa phương cam kết.
Tôi giả sử tôi có thể thực hiện khôi phục git để thực sự hoàn tác các cam kết, tiếp theo là git stash và sau đó git push - nhưng tôi đã nhận được thư cam kết và tệp được sắp xếp và tôi không muốn làm lại chúng.
Cảm giác của tôi là một số cờ được chuyển đến đẩy hoặc đặt lại sẽ hoạt động.
Nếu nó giúp, đây là git của tôi cấu hình
[ramanujan:~/myrepo/.git]$cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Lưu ý: bạn không phải sử dụng 'master ~ 3'. Bất kỳ tham chiếu nào tới cam kết "lên tới" mong muốn đều có giá trị như nhau, chẳng hạn như 'HEAD ~ 3' hoặc' HEAD ~~~ 'hoặc SHA cụ thể hoặc thẻ gắn nhãn cam kết đó. – Kaz
Nội dung hay. Một cảnh báo mặc dù: những ví dụ này đẩy đến master gốc. Nếu bạn đang sao chép và dán giải pháp này, bạn có thể vô tình cập nhật nhánh chính. (Tất nhiên, bạn nên luôn cẩn thận và kiểm tra lại lệnh của mình trước khi phát hành 'git push' ...) – nofinator
Dường như điều này đẩy cam kết, nhưng không thêm nhánh từ xa. – Nateowami