1. Hvordan flytter man en feature branch til main, hvis den er branchet forkert?
Løsning:
Du kan nemt flytte din feature branch ved at skrive nedenstående i terminalen. Anvend -f
for at rykke din feature branch til et nyt startpoint, som i dette tilfælde er main.
git branch -f feature/issue-42/create-new-user-form-component main
2. Hvordan løser man merge konflikter i Git?
Der antages, at der opstår en merge konflikt i filen index.js
. Ved merge konflikt får du en lignende fejl som nedenstående, hvor filer, der har har en merge konflikt, fremgår:
Auto-merging index.js
CONFLICT (content): Merge conflict in index.js
Automatic merge failed; fix conflicts and then commit the result.
Løsning:
For at udbedre konflikten skal du ind og redigere i den pågældende fil. Vælg en teksteditor såsom vim
til dette formål:
vim index.js
Vælg, om du kun ønsker dine ændringer skal forblive, eller det allerede eksisterende kode skal forblive, eller en mellemvej mellem disse, der inkorperer dele fra begge. Afslut med at slette konfliktmarkørerne <<<<<<<
, =======
, >>>>>>>
og gemme filen.
For at rettelsen skal vedblive, skal du huske at commit. Tilføj filen til staging area og dernæst commit:
git add index.js
git commit -m "fix: resolved merge-conflict by replacing the existing code."
Ovenstående udføres iterativt indtil samtlige filer, der har merge-konflikt, er rettet og commitet.
3. Hvordan opdeler man en feature branch i to separate branches i Git?
Løsning:
Opret en ny feature-branch ud fra main og checkout til den:
git checkout main
git checkout -b feature/issue-43/create-new-table-component
Dernæst kan du git cherry-pick
de commits fra din oprindelige feature-branch, der skal merges til denne nyoprettet feature-branch:
git cherry-pick <commit1> <commit2> <...> <...>
Din nyoprettet branch feature/issue-43/create-new-table-component
bør nu have alle sine relevante commits. Det eneste der mangler er at fjerne de selvsamme commits fra den gamle (oprindelige) feature-branch. Start med at checkout til din gamle feature-branch:
git checkout feature/issue-42/create-new-user-form-component
Dernæst kan du anvende git rebase -i HEAD~x
til at fjerne commits, hvor x er det antal seneste commits, som du vil have en oversigt over. Git kommandoen vil give dig en interaktiv brugergrænseflade, hvor dine commits fremgår i forlængelse af hinanden.
I brugergrænsefladen erstattes pick
med drop
ud for de commits, der skal slettes, som tidligere er blevet flyttet til den nye feature/issue-43/create-new-table-component
branch.
drop 23dv1u0 "din commit-besked"
drop 8dh49o4 "din commit-besked"
Afslutningsvis gemmes og lukkes for brugergrænsefladen. Dine features bør nu ligge i hver sin branch. Dette kan kontrolleres med git log
.
4. Hvordan flytter man et nyt commit fra main til en ny feature branch i Git?
Løsning:
Befind dig i main og opret en ny feature-branch. Skriv i terminalen:
git checkout main
git branch feature/issue-44/create-new-pagination-component
Mens du stadig befinder dig i main, kan du bruge git rebase -i HEAD~x
, der giver dig en interaktiv brugergrænseflade til at fjerne de commits, der ikke skal være i main-branch, hvor x er det antal seneste commits, som du vil have en oversigt over. Erstat pick
med drop
ud for de commits, der skal slettes:
git rebase -i HEAD~1
drop 23dv1u0 "din commit-besked"
Gem dine ændringer og luk brugergrænsefladen for at afslutte rebase-processen. Kontroller at din main-branch ser korrekt ud med git log
.
5. Hvordan tilføjer man ændringer til et tidligere commit i Git?
Løsning:
Udarbejd din tilføjelse og afslut med at stage de opdaterede filer med git add <filnavn>
. Dernæst knytter du denne tilføjelse sammen med din forrige commit vha. --amend
:
git commit --amend
Dette frembringer en interaktiv brugergrænseflade, hvor du har mulighed for at opdatere din commit-besked. Det giver god anledning at gøre dette, da din commit nu omfatter en ny tilføjelse. Afslut med at gemme og lukke brugergrænsefladen.
6. Hvordan opdeler man et stort commit til flere mindre commits i Git?
Løsning:
Anvend interaktiv git rebase for at få brudt din commit ned til flere mindre commits. Befind dig i den commit, der skal nedbrydes, og skriv følgende i terminalen:
git rebase -i HEAD^
Dette frembringer en interaktivt brugergrænseflade, som du kan navigere i. Erstat pick
med edit
, så committen kan modificeres. Gem din ændring og luk brugergrænsefladen efterfølgende, så rebase-processen kan påbegyndes.
edit 99ad4c0 "din commit-besked"
Reset din commit med git reset HEAD~
. Du kan dernæst stage og commit dele af din tidligere commit iterativt:
git add <fil1> <fil2> ...
git commit -m "feat: første task done"
Afslut med git rebase --continue
for at færddiggøre processen. Du kan med fordel indtaste git log
for at kontrollere, at nedbrydningen af din gamle commit er sket korrekt.
7. Hvordan fjerner man et password, der ved en fejl er blevet pushet til Git?
Løsning:
Anvend git rebase -i HEAD^
til at modificere din seneste commit. I dette tilfælde skal den seneste commit modificeres med henblik på at slette password. Erstat pick
med edit
i din interaktive brugergrænseflade.
edit 5h57d81 "feat: tilføjet password og implementeret function"
Gem din ændring og luk brugergrænsefladen efterfølgende, så rebase-processen kan påbegyndes. Indled med at slette passwordet i den gældende fil, dernæst stage denne ændring, committe og afslutte rebase-processen:
git add <filnavn>
git commit --amend
git rebase --continue
Ovenstående skridt har slettet passwordet på din lokale branch. For at disse ændringer skal afspejles i den tilsvarende remote-branch, skal du skrive følgende i terminalen:
git push --force
Sørg for at kommunikere til resten af dit hold, at du force pusher til remote, da dette er en gennemgribende, men fornøden, handling.
8. Hvordan flytter man commits, der ved en fejl er blevet lavet i en merged branch, til en ny feature branch i Git?
Løsning:
Opret en ny feature-branch ud af main:
git checkout -b feature/issue-45/create-new-searchbar-component main
Mens du befinder dig i den nyoprettet feature-branch, anvendes git cherry-pick
til at plukke de commits fra den gamle, merged branch for at merge dem ind i den nye feature-branch.
git cherry-pick <commit1> <commit2> <...> <...>
Afslut med at pushe din feature-branch, der nu omfatter dine commits, til remote:
git push -u origin feature/issue-45/create-new-searchbar-component
9. Hvordan ændrer man den seneste Git commit-besked?
Løsning:
Anvend git rebase -i HEAD^
til at modificere din seneste commit. I dette tilfælde skal du ændre din seneste git commit besked. Erstat pick
med reword
i din interaktive brugergrænseflade.
reword 8d57675 "din commit-besked"
Gem og luk brugergrænsefladen efterfølgende, så rebase-processen kan påbegyndes. Din misvisende commit-besked vil du nu kunne rette, så den kan være udtømmende. Afslut med at gemme din nye commit besked og luk brugergrænsefladen.
10. Hvordan gendanner man det forrige commit i remote efter et fejlslagent force-push i Git?
Løsning:
Anvend git log
for at finde commit-hashen på den seneste commit, som du vil vende tilbage til. Dernæst kan du lave en særskilt recovery-branch ud fra denne commit-hash:
git checkout -b recovery-branch <commit-hash>
Afslutningsvis kan du pushe denne recovery-branch op til remote.
git push -u origin recovery-branch
Konklusion
Git kan være et kraftfuldt værktøj, men det kommer med sine egne udfordringer. Ved at forstå, hvordan man håndterer almindelige problemer som at flytte commits, løse merge-konflikter og administrere branches, kan du forbedre din arbejdsproces og produktivitet markant. Vi håber, at denne guide har hjulpet dig med at navigere i nogle af de mest almindelige Git-problemer, du måtte støde på.
Hvis du fandt denne artikel nyttig, så del den med dine medudviklere. Hvis du vil have flere tips og tutorials om Git og andre udviklingsværktøjer, så tag et kig på vores andre blogindlæg og følge os på LinkedIn. Happy coding!
Our Blog | Følg os på LinkedIn