git: remote-Tracked Branch mergen und löschen 0

Posted by fwoeck
on Saturday, October 18

Der remote getrackte Branch starling soll auf dev71 in den master gemerged und anschließend lokal und remote gelöscht werden:

Auf dev71:

> git checkout master

> git merge starling

> git branch -d starling

> git-remote show passenger
* remote passenger
  URL: git@passenger:/opt/repos/pplpool.git
  Remote branch(es) merged with 'git pull' while on branch master
    master
  Tracked remote branches
    master starling

Dann auf passenger:

> git branch -d starling

Zurück auf dev71:

> git-remote show passenger
* remote passenger
  URL: git@passenger:/opt/repos/pplpool.git
  Remote branch(es) merged with 'git pull' while on branch master
    master
  Stale tracking branches in remotes/passenger (use 'git remote prune')
    starling
  Tracked remote branches
    master

> git-remote prune passenger

git-Branches auf dem Server tracken 0

Posted by fwoeck
on Thursday, October 09

Lokalen Branch erzeugen, unschalten und ihn auf den Server ( passenger ) pushen:

> git checkout -b starling

> git push passenger starling

> vi .git/config

Dort wird ein tracking-Abschnitt zugefügt:

[branch "master"]
    remote = passenger
    merge = refs/heads/master
[branch "starling"]
    remote = passenger
    merge = refs/heads/starling

Falls der Branch bereits remote aber nicht lokal vorhanden ist:

> git branch --track starling passenger/starling

pullt den Branch von Server und legt ihn automatisch als tracking-Branch an.

Der aktive Branch wird mit einem einfachen git push auf den Server übertragen und ein

> git remote show passenger

zeigt die Verknüpfungen von lokalen und remote-Branches an.

FIXME:

Wenn man den Masterbranch erzeugt und auf den Server via scp überspielt, entsteht dadurch noch kein Eintrag wie “[branch master]...” in der config-Datei. In Ermangelung einer besseren Methode musste ich ihn manuell einsetzen.

Branching und merging mit git 0

Posted by fwoeck
on Wednesday, October 08

Aktuelle branch-Situation anzeigen und einen neuen Branch testing anlegen:

> git branch -a
* master
  passenger/master

> git checkout -b testing
Switched to a new branch "testing" 

> git branch -a
  master
* testing
  passenger/master

Nach Anbringen der Teständerungen am Projekt erfolgt ein

> vi app/views/martians/index.html.erb

> git commit -a -m 'header verändert'

Nun kann man zum master-Branch zurückwechseln:

> git checkout master

Wird jetzt eine Änderung im master gemacht und diese committed, so kann es zu Konflikten kommen (s.u.). Das push aktualisiert hier den Masterbranch auf dem Server und cap deploy führt ein Deployment (hier zus. mit Migration) aus:

> vi app/views/martians/index.html.erb

> git commit -a -m 'Änderung im Master'

> git push passenger

> cap deploy:migrations

Zurück zum testing-Branch und nach einer Änderung wieder zum master, um dann abschließend den testing-Branch in den master zu mergen:

> git checkout testing

> vi app/views/martians/index.html.erb

> git commit -a -m 'Neuer Header'

> git checkout master

> git pull . testing

An dieser Stelle müssen evtl. abschließend Konflikte gelöst werden. Die einschlägigen Dateien wurden mit diff-artigen Zeilen im Text markiert:

<<<<<<< HEAD:app/views/martians/index.html.erb
<% title "[:marsianer wie wir:]" %>
=======
<% title "[:test-marsianer wie wir:]" %>
>>>>>>> d2417ff9278c3b861c45ba1c8d05a56509d9f2b6:app/views/martians/index.html.erb

Nach der Einebnung können die Dateien neu ge-added und ggf. der testing-Branch gelöscht werden:

> git status
app/views/martians/index.html.erb: needs merge
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#    unmerged:   app/views/martians/index.html.erb
#    modified:   app/views/martians/index.html.erb

> git add app/views/martians/index.html.erb

> git commit -a -m 'testing gemergt und konflikt in index.html.erb behoben'

> git branch -d testing

HINWEIS: Falls die lokal angelegten Branches auch auf dem Server getrackt werden sollen, muss man u.a. die .git/config-Datei editieren. Siehe dazu: “git-Branches auf dem Server tracken”