Git запобігає натискання після зміни фіксації

Зазвичай я запускаю

 git add file git commit git push 

але якщо я виправлю фіксацію до, натиснувши її (за допомогою git commit --amend ), наступне натискання завершиться невдачею за допомогою

 hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (eg hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. current branch is behind hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (eg hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Як я можу дозволити git натискати зміни без об'єднання гілок? У мене є тільки одна гілка ( master ), і я єдина людина, використовую цей репо, тому чому він говорить це?

git branch -a:

 * master remotes/origin/HEAD -> origin/master remotes/origin/master 

EDIT: Використовуючи gitk HEAD @{u} , я бачу, що у мене є дві гілки, одна з оригінальною фіксацією, а інша зі зміненою фіксацією.

31
03 сент. заданий minerz029 03 сент. 2013-09-03 12:42 '13 о 12:42 2013-09-03 12:42
@ 3 відповідей

Це може статися тільки в тому випадку, якщо ви виправляєте вже натиснуту фіксацію. Як правило, ви ніколи не повинні цього робити, так як ви змінюєте опубліковану історію. Однак у вашому випадку ви можете піти з push -f , який перезапише віддалений Комміт зі зміненою версією.

44
03 сент. відповідь дан Joey 03 сент. 2013-09-03 12:44 '13 о 12:44 2013-09-03 12:44

ви поміняли знятий фіксатор, як в

 git pull origin master git commit -a --amend -m "..." git push 

ви можете вирішити проблему, повернувши виправлене повідомлення:

border=0
 git reset --mixed origin/master 

а потім знову зробивши його повноцінної фіксацією

6
03 сент. відповідь дан Stefano Falasca 03 сент. 2013-09-03 12:44 '13 о 12:44 2013-09-03 12:44

Так, ви не повинні цього робити (натиснувши фіксацію, потім змінивши її і спробуй її знову натиснути).

Замість цього ви можете скасувати Git на попередню фіксацію без зміни файлів, а потім створити нову фіксацію:

 git reset --mixed origin/master git add . git commit -m "This is a new commit for what I originally planned to be an amendmend" git push origin master originally planned to be an amendmend git reset --mixed origin/master git add . git commit -m "This is a new commit for what I originally planned to be an amendmend" git push origin master 

це створить нову фіксацію зі змінами, які ви збираєтеся змінити.

6
03 сент. відповідь дан Nils Werner 03 сент. 2013-09-03 12:45 '13 о 12:45 2013-09-03 12:45

Інші питання по мітках або Задайте питання