git 如何回滚
过去多啦不再A梦
过去多啦不再A梦 2017-05-02 09:37:50
0
10
693

场景:

  • 1.修改文件A,commit并push到远程仓库

  • 2.修改文件B,commit,也push到了远程

  • 3.现在A文件的修改错误了,需要回滚到之前的版本,但是文件B的修改需要保存下来,请问现在应该如何操作?

如果用git reset --hard命令回滚到A修改的版本号,那么B的修改也被丢弃了

过去多啦不再A梦
过去多啦不再A梦

répondre à tous(10)
巴扎黑
$ mkdir test
$ cd test
$ git init
$ echo aaaa>a.txt
$ echo bbbb>b.txt
$ git commit -a -m "init two files"
[master (root-commit) 2ca34b8] init
...
$ echo update>a.txt
$ git commit -a -m "update file a"
[master **e216f56**] update file a
...
$ echo update>b.txt
$ git commit -a -m "update file b"
[master 6906147] update file b
...
$ git revert **e216f56**
unix2dos: converting file f:/test/.git/COMMIT_EDITMSG...
dos2unix: converting file f:/test/.git/COMMIT_EDITMSG...
[master 2a9c653] Revert "update file a"
...
PHPzhong

git revert (numéro de version)

仅有的幸福

Vous ne perdrez rien en faisant cela, nous faisons tous cela..
la commande git reset --hard revient au numéro de version modifié par A
git pull --rebase origin déroule la branche nombre de B Vérifiez le code pour voir s'il y a des conflits. Si les conflits sont résolus
, git push..

.
给我你的怀抱

git reset --soft HEAD@{id}, cela retirera la soumission, mais les modifications dans l'espace de travail ne disparaîtront pas, puis corrigez les mauvaises modifications, soumettez et poussez vers l'extrémité distante

我想大声告诉你

Dans ce cas, je vérifie généralement le journal directement et restaure le fichier A pour m'assurer que le fichier B est complet

大家讲道理

Ne pouvez-vous pas simplement modifier les mauvais, puis les soumettre une fois pour les écraser ?

伊谢尔伦

Ne utilisez git reset pour les commits qui ont été soumis sur la branche publique Si quelqu'un a déjà retiré ces commits, ce sera très gênant
Dans ce cas, vous devriez utiliser. git revert, ce qui provoquera un seul commit

左手右手慢动作

git rebase -i HEAD^^^
Ouvrez un document avec l'éditeur par défaut, modifiez le A avant de le soumettre à drop ou abrégez-le en d et enregistrez-le.
La soumission sera automatiquement rejetée (s'il y a un conflit, vous devez résoudre le conflit vous-même)

Ty80
  1. git log Afficher le commitId de A B avant A

  2. git reset --hard A's previous commitId

  3. git cerise-pick B’s commitId

Cette fonction s'appelle la fonction de paiement, qui permet d'obtenir les modifications soumises

伊谢尔伦

Vous pouvez uniquement annuler, pas réinitialiser. Tout commit qui a été poussé vers la télécommande ne peut pas être réinitialisé ou validé --amend Cela détruira l'historique des versions des autres.

Pour plus d'informations sur le retour, vous pouvez lire mon article : /a/11...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!