Wątek przeniesiony 2020-05-03 22:31 z Off-Topic przez somekind.

Lokalne commity a zdalne repo

0

Siemka,

Robię lokalne git commity na masterze załóżmy jest ich 10.
Potem chciałbym wysłać to na zdalne repo github.

Czy jak ktoś wejdzie na github to będzie mógł podejrzeć jak wyglądał kod załóżmy z 3 lokalnego commitu, czy może widzi tylko ostatnią wersję kodu i nie da się spojrzeć w historię bo widać to jako 1 commit?

2

Jeśli masz publiczne repo, każdy może spojrzeć w historię.

0

Ok, chciałbym się jeszcze upewnić:
Wiem że każdy mógłby spojrzeć w historię gdybym robił 1 commit lokalny = 1 push na github.
Ale w tym przypadku chciałbym zrobić 10 commitów lokalnych = 1 push.
Wtedy chyba nie będzie widać jak wyglądała praca między 1 commitem lokalnym, a 9 commitem lokalnym? (bo będzie widać tylko 10-ty)

2

Można zrobić rebase interactive squash albo soft reset wstecz ile chcesz i jeden wspólny commit - dopiero wtedy push z taką pseudo historią.

Jeszcze taki pomysł...

Możesz postawić sobie 2 konta na GitHub, jedno "oficjalne" drugie "prywatne".
Robisz fork z oficjalnego na prywatne
clone repo z konta prywatnego
dodajesz remote upsteram oficjalne
nowy branch np. feature-1 i tam robisz co chcesz i jak chcesz i w ilu krokach - nikt tego nie zobaczy
tworzysz pull request z prywatnego na oficjalny
na oficjalnym merge z opcją squash
na prywatnym kasujesz branch feature-1

Finalnie na Oficjalnym widzą tylko ostateczne efekty w jednym "skondensowanym" commit

Jest w tym pewna niedogodność, bo
Make this repository private
Public forks can’t be made private. Please duplicate the repository.

https://help.github.com/en/github/setting-up-and-managing-your-github-profile/publicizing-or-hiding-your-private-contributions-on-your-profile

2
PanPomidor napisał(a):

Wtedy chyba nie będzie widać jak wyglądała praca między 1 commitem lokalnym, a 9 commitem lokalnym? (bo będzie widać tylko 10-ty)

Na większości serwisów (Github/Gitlab/Bitbucket) widzisz domyślne najnowszy kod, ale nic nie stoi na przeszkodzie, by wyklikać zmiany pomiędzy dwoma dowolnymi commitami. Po z klonowaniu repozytorium na lokalny dysk podobnie możesz podejrzeć zmiany w konsoli pomiędzy dowolnymi commitami:

git diff hash-commit-1 hash-commit-2

To samo właśnie dzieje się we wspomnianych serwisach, tylko wyświetlane zmiany są opakowane w HTML i przyozdobione CSS-em.

2

Ale w tym przypadku chciałbym zrobić 10 commitów lokalnych = 1 push.

Commit to commit - liczba puszów na nic nie wpływa (chyba że w ogóle nie wyślesz zmian na serwer).

5
  1. Piszesz kod na branchu
  2. Jak chcesz wreszcie wypchnąć na mastera to robisz squash and merge a branch dropujesz
  3. Na masterze widać tylko ten jeden merge w całości, brancha nie ma.
  4. Profit!

Tak sie zresztą robi "w prawdziwym życiu", bo nikogo na masterze nie obchodzi twoje 17 commitów z poprawkami do code review, ważny jest tylko commit z całym ficzerem.

Można ofc robić jakieś cuda na kiju w stylu reset soft, jeden zbiorczy commit a potem push force, ale to jakieś dziwne rzeczy i tylko w swoim prywatnym repo mógłbyś tak cudować.

0

Mam wrażenie że mógłbyś zrobić coś takiego - jeden katalog z wycheckoutowaną rewizją i do tego dwa katalogi git-owe - tzn. jeden lokalny do którego kommitujesz co ci się podoba - jakieś śmieci i kod niewyczyszczony a dla klienta osobne repo -w drugim katalogu gitowym ale już ze źródłami poczyszczonymi, bez śmieci. O to ci chodzi?
Wtedy klient widzi tylko ten co 10-ty twój kommit (wyczyszczony) a lokalnie możesz sobie trzymać śmieci.

Jeśli tak - to da się - sam tak robię od jakiegoś czasu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1