Τρέχουμε μία φορά στην αρχή:
git clone https://github.com/username/repository.git
cd repository
git remote add upstream https://github.com/maellak/repository.git
Βήματα που ακολουθούνται κάθε φορά που γίνονται αλλαγές:
git checkout master
git branch feature-a
git checkout feature-a
- Κάνουμε τις αλλαγές μας.
git add file_1 file_2 dir/file_3
git commit -m 'Message of what changed'
git push origin feature-a
- Πάμε στο GitHub και κάνουμε ένα Pull Request
Κάνουμε fork το κύριο (parent) repository μέσω του GitHub πηγαίνοντας στο https://github.com/maellak/EllakAndroidEducation και πατώντας το κουμπί Fork πάνω δεξιά. Αυτόματα θα μεταφερθούμε στο δικό μας πλέον repository. Αυτό που έγινε είναι να δημιουργηθεί ένα πανομοιότυπο με το κύριο repository που έχει τις αλλαγές μέχρι τη στιγμή που έγινε το fork.
Προσοχή. Ό,τι αλλαγές γίνουν πλέον στο parent, δε μεταφέρονται αυτόματα στο δικό μας fork, θα πρέπει κάθε τόσο να τραβάμε τις αλλαγές.
- Αφού γίνει το fork κάνουμε clone το δικό μας forked repository (στη σελίδα που μας πήγε πριν αυτόματα):
git clone https://github.com/username/EllakAndroidEducation.git
- Πάμε στο directory που κατέβηκε:
cd EllakAndroidEducation
- Ορίζουμε το κύριο repository ως remote ώστε αργότερα να μπορούμε να πάρουμε τις αλλαγές:
git remote add upstream https://github.com/maellak/EllakAndroidEducation.git
- Φτιάχνουμε νέο branch με ένα περιγραφικό όνομα:
git branch add-activity-tade
- Αλλάζουμε στο νέο branch:
git checkout add-activity-tade
Μπορούμε να δούμε ότι είμαστε στο σωστό branch δίνοντας git branch
και
βλέποντας το αστεράκι στο σωστό branch.
- Κάνουμε τις αλλαγές μας.
- Βλέπουμε το status με
git status
. - Βλέπουμε τις αλλαγές με
git diff
. - Προσθήκη στην staging area του Git:
git add file1 file2 dir/file3
- Commit τις αλλαγές:
git commit -m 'Make useful changes'
Προσοχή: Το commit message να είναι κάτι περιγραφικό, όχι πάνω από 70 χαρακτήρες.
- Push τις αλλαγές στο GitHub:
git push origin feature-a
όπου feature-a
το branch που δημιουργήσαμε.
- Πάμε στο GitHub στο repository μας και κάνουμε Pull Request στο parent repository.
Από τη στιγμή που συνεργαζόμαστε πολλά άτομα πάνω στο ίδιο project, πρέπει το δικό μας repository να είναι πάντα συγχρονισμένο με το κύριο (parent) ώστε να έχουμε τοπικά τις αλλαγές που έχουν γίνει από τους άλλους.
- Ανοίγουμε ένα terminal (για Windows το Git Shell) και πάμε στον κατάλογο όπου είναι η android εφαρμογή, πχ.
cd /home/maellak/EllakAndroidEducation
- Δίνουμε
git remote -v
. Το αποτέλεσμα θα πρέπει να περιέχει:
origin https://github.com/username/EllakAndroidEducation.git (fetch)
origin https://github.com/username/EllakAndroidEducation.git (push)
upstream https://github.com/maellak/EllakAndroidEducation.git (fetch)
upstream https://github.com/maellak/EllakAndroidEducation.git (push)
Αν δεν υπάρχει το upstream
, δίνουμε:
git remote add upstream https://github.com/maellak/EllakAndroidEducation.git
- Κάνουμε checkout το master branch όπου υπάρχει ο νεότερος κώδικας από τον οποίο
θα δουλέψουμε στο εξής. Για να γίνει αυτό θα πρέπει οι ήδη υπάρχουσες αλλαγές να
είναι commited. Διαφορετικά δίνουμε το
git stash
το οποίο αποθηκεύει τις αλλαγές προσωρινά σε ένα stack.
git stash
git checkout master
git pull upstream master
Αν δουλεύατε στο master branch σας, ενδέχεται να υπάρχουν διενέξεις (conflicts). Πριν προχωρήσετε πρέπει να επιλυθούν (resolve). Δείτε έναν οδηγό.