@IvankoPo

Почему не пушатся изменения?

Изучаю Git. Решил добавить два файла в репозиторий, каталог инициализировал и сделал
git add client.py server.py 
git commit -m "echo server, firts commit"
git push -u origin master

рабочий каталог выглядит так
....................socket_berkley
................... / .................... \
...............server.py.............client.py

Все нормально все отправилось. Далее, в рабочей директории, решил создать каталог socket и в нем каталог echo-server
и перенести туда те два файла
mkdir socket
mkdir socket/echo-server
mv client.py server.py socket/echo-server/

далее снова закоммитил, но не пушил
MacBook-Pro-ivan:socket_berkley ivan$ git add socket/
MacBook-Pro-ivan:socket_berkley ivan$ git commit -m "add directory socket"

Стало
.............socket_berkley
..........................|
.......................socket
..........................|
...................echo-server
.................. /.............. \
.............client.py........server.py

git log выглядел так
MacBook-Pro-ivan:socket_berkley ivan$ git log
commit a0f25758147eb11e6439a607ed0f010b8037a8f7
Author: IvankoPo <vano99pl@mail.ru>
Date:   Sun Aug 20 15:29:38 2017 +0300

    add directory socket

commit 5fea3bb214b26d0170d0bbd70ca902460fecd45d
Author: IvankoPo <vano99pl@mail.ru>
Date:   Sun Aug 20 15:17:22 2017 +0300

    echo server, firts commit

Потом решил откатить изменения, то есть удаляются те два каталога
git checkout 5fea3bb
В рабочем каталоге снова

....................socket_berkley
................... / .................... \
...............server.py.............client.py

А на GitHub

.............socket_berkley
..........................|
.......................socket
..........................|
...................echo-server
.................. /.............. \
.............client.py........server.py

Поэтому я решил отправить изменения на гитхаб, то есть вернуть его к первому состоянию
Выполнив команду
git add  # я понял что лоханулся надо было git add socket
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
git commit -m "back to the first"
HEAD detached at 5fea3bb
Untracked files:
	.idea/

nothing added to commit but untracked files present
MacBook-Pro-ivan:socket_berkley ivan$ git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

Поняв ту ошибку, выполнил
git add client.py server.py 
MacBook-Pro-ivan:socket_berkley ivan$ git commit -m "back to the first state"
HEAD detached at 5fea3bb
Untracked files:
	.idea/

nothing added to commit but untracked files present

И тут пошли ошибки, затем захотел вернуться ко второму состоянию
"
.............socket_berkley
..........................|
.......................socket
..........................|
...................echo-server
.................. /.............. \
.............client.py........server.py
"
MacBook-Pro-ivan:socket_berkley ivan$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
	.idea/vcs.xml
Please move or remove them before you can switch branches.
Aborting
MacBook-Pro-ivan:socket_berkley ivan$ git checkout a0f2575
error: The following untracked working tree files would be overwritten by checkout:
	.idea/vcs.xml
Please move or remove them before you can switch branches.
Aborting

В логе видно что исчез один коммит, к которому я хотел вернуться
MacBook-Pro-ivan:socket_berkley ivan$ git log
commit 5fea3bb214b26d0170d0bbd70ca902460fecd45d
Author: IvankoPo <vano99pl@mail.ru>
Date:   Sun Aug 20 15:17:22 2017 +0300

    echo server, firts commit

Решил вручную снова восстановить те директории
MacBook-Pro-ivan:socket_berkley ivan$ ls
client.py	server.py
MacBook-Pro-ivan:socket_berkley ivan$ mkdir socket
MacBook-Pro-ivan:socket_berkley ivan$ cd socket/
MacBook-Pro-ivan:socket ivan$ mkdir echo-server
MacBook-Pro-ivan:socket ivan$ cd ../
MacBook-Pro-ivan:socket_berkley ivan$ ls
client.py	server.py	socket
MacBook-Pro-ivan:socket_berkley ivan$ cd client.py server.py socket/echo-server/
-bash: cd: client.py: Not a directory
MacBook-Pro-ivan:socket_berkley ivan$ cp client.py server.py socket/echo-server/
MacBook-Pro-ivan:socket_berkley ivan$ git status
HEAD detached at 5fea3bb
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   .idea/vcs.xml
	deleted:    client.py
	deleted:    server.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.idea/inspectionProfiles/
	.idea/misc.xml
	.idea/modules.xml
	.idea/socket_berkley.iml
	.idea/workspace.xml
	socket/

и снова пуш
MacBook-Pro-ivan:socket_berkley ivan$ git add socket
MacBook-Pro-ivan:socket_berkley ivan$ git commit -m "add directory socket"
[detached HEAD 1cdab81] add directory socket
 3 files changed, 6 insertions(+)
 create mode 100644 .idea/vcs.xml
 rename client.py => socket/echo-server/client.py (100%)
 rename server.py => socket/echo-server/server.py (100%)
MacBook-Pro-ivan:socket_berkley ivan$ ls
socket
MacBook-Pro-ivan:socket_berkley ivan$ git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

он почему то не сработал
git log && git status
MacBook-Pro-ivan:socket_berkley ivan$ git log
commit 1cdab81099a4f10650e10566b7816a1262397886
Author: IvankoPo <vano99pl@mail.ru>
Date:   Sun Aug 20 15:51:31 2017 +0300

    add directory socket

commit 5fea3bb214b26d0170d0bbd70ca902460fecd45d
Author: IvankoPo <vano99pl@mail.ru>
Date:   Sun Aug 20 15:17:22 2017 +0300

    echo server, firts commit
MacBook-Pro-ivan:socket_berkley ivan$ git status
HEAD detached from 5fea3bb
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   socket/echo-server/client.py
	modified:   socket/echo-server/server.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.idea/inspectionProfiles/
	.idea/misc.xml
	.idea/modules.xml
	.idea/socket_berkley.iml
	.idea/workspace.xml

no changes added to commit (use "git add" and/or "git commit -a")

решил добавить комментарии к коду и снова add && commit
MacBook-Pro-ivan:socket_berkley ivan$ git add socket
MacBook-Pro-ivan:socket_berkley ivan$ git commit -m "add coments"
[detached HEAD 594bcb6] add coments
 2 files changed, 25 insertions(+), 25 deletions(-)
 rewrite socket/echo-server/client.py (87%)
 rewrite socket/echo-server/server.py (77%)

git status показывает это, по мне так что то не так
MacBook-Pro-ivan:socket_berkley ivan$ git status
HEAD detached from 5fea3bb
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.idea/inspectionProfiles/
	.idea/misc.xml
	.idea/modules.xml
	.idea/socket_berkley.iml
	.idea/workspace.xml

nothing added to commit but untracked files present (use "git add" to track)

Пробую пушить — не пушится
MacBook-Pro-ivan:socket_berkley ivan$ git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

Собственно в чем проблема и как исправить?
  • Вопрос задан
  • 3103 просмотра
Пригласить эксперта
Ответы на вопрос 2
27cm
@27cm
TODO: Написать статус
Основная проблема в том, что вы стали изменять историю коммитов после того, как запушили их. Конечно, если вы единственный разработчик в проекте или это ваша личная фича-ветка, которую никто не правит кроме вас, то и так сойдет. Но если так делать с ветками проекта, над которыми работают в том числе и другие разработчики, то вы получите массу проблем.

Подробнее:
https://git-scm.com/book/ru/v1/%D0%92%D0%B5%D1%82%...
Ответ написан
Комментировать
@Wexter
после отката на предыдущую ревизию вы изменили дерево локально, на сервере оно осталось старым. чтобы изменилось дерево на сервере надо было сделать
git push --force
, тогда дерево на сервере затрётся и будет таким-же как локальное
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы