web-dev-qa-db-fra.com

Ajout de modifications non gérées de Master à une nouvelle branche par Git

Comment pouvez-vous mettre des modifications non validées sur un test de branche lorsque je suis dans la branche master?

188

Vous pouvez simplement accéder à la branche test, puis valider. Vous ne perdez pas vos modifications non validées lorsque vous passez à une autre branche.

En supposant que vous soyez à la branche master:

git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"

Je ne suis pas vraiment sûr des fichiers supprimés, mais je suppose qu'ils ne sont pas inclus lorsque vous utilisez git add .

150
Samuel Carrijo

Vous pouvez aussi créer une nouvelle branche et y basculer de la manière suivante:

git checkout -b new_branch
git add .

J'utilise ceci tout le temps parce que j'oublie toujours de démarrer une nouvelle branche avant de commencer à éditer du code.

195
Mike Bethany

Pourquoi ne pas simplement utiliser Git Stash. Je pense que c'est plus intuitif comme un copier-coller.

$ git branch
  develop
* master
  feature1
  TEST
$

Vous avez certains fichiers dans votre branche actuelle que vous souhaitez déplacer.

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#      modified:   awesome.py
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   linez.py
#
$
$ git stash
Saved working directory and index state \
  "WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$

Déplacer vers l'autre branche.

$ git checkout TEST

Et appliquer

$ git stash apply
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   awesome.py
#      modified:   linez.py
#

J'aime aussi git stash parce que j'utilise git flow, qui se plaint lorsque vous souhaitez terminer une branche de fonctionnalité tout en conservant les modifications dans votre répertoire de travail.

Tout comme @ Mike Bethany, cela m’arrive tout le temps parce que je travaille sur un nouveau problème en oubliant que je suis toujours sur une autre branche. Donc, vous pouvez stash votre travail, git flow feature finish..., et git stash apply A nouveau git flow feature start ... branche.

35
HeyWatchThis
git checkout TEST
git add file1 file2
git commit
5
Bombe