git push - где мой коммит хита - git log не отображается в истории MIRROR хранилище

Я клонировал из репозитория GIT (последний). На этом этапе последний коммит в репозитории был: a10cb09

Я клонировал с помощью следующей команды (где я устанавливаю переменную r = 1-й параметр передан (для имени репо aka ansible) в моем крошечном скрипте-обёртке:

  git clone git@github.com:mycompany/${r}.git

и сделал несколько изменений и сделал следующие простые шаги: (т.е. внесение изменений, добавление файла / папки, принятие и отправка), и я получил новый хеш для фиксации a08c263 (короткая).

[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    roles/mycompany.mycompany-ansible/
    mycompany-ansible.yml

nothing added to commit but untracked files present (use "git add" to track)
[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ 


[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git add mycompany-ansible.yml roles/mycompany.mycompany-ansible

[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git commit -m "mycompany.mycompany-ansible playbook and role" mycompany-ansible.yml roles/mycompany.mycompany-ansible 
[master a08c263] mycompany.mycompany-ansible playbook and role
 14 files changed, 1771 insertions(+)
 create mode 100644 roles/mycompany.mycompany-ansible/README.md
 create mode 100644 roles/mycompany.mycompany-ansible/defaults/main.yml
 create mode 100644 roles/mycompany.mycompany-ansible/handlers/main.yml
 create mode 100644 roles/mycompany.mycompany-ansible/meta/.galaxy_install_info
 create mode 100644 roles/mycompany.mycompany-ansible/meta/main.yml
 create mode 100644 roles/mycompany.mycompany-ansible/tasks/apt_install.yml
 create mode 100644 roles/mycompany.mycompany-ansible/tasks/main.yml
 create mode 100644 roles/mycompany.mycompany-ansible/tasks/yum_install.yml
 create mode 100644 roles/mycompany.mycompany-ansible/templates/10-statsd.conf.j2
 create mode 100644 roles/mycompany.mycompany-ansible/templates/10-mycompany.conf.j2
 create mode 100644 roles/mycompany.mycompany-ansible/templates/proxy_auth_credentials.set.j2
 create mode 100644 roles/mycompany.mycompany-ansible/templates/telegraf.conf.wfcopy.j2
 create mode 100644 roles/mycompany.mycompany-ansible/templates/mycompany-proxy.conf.j2
 create mode 100644 mycompany-ansible.yml
[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ 


[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git push
Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (21/21), 18.65 KiB | 0 bytes/s, done.
Total 21 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:repogroup/ansible.git
   a10cb09..a08c263  master -> master
[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $  


[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git log -1 --pretty=format:%h 
a10cb09


[arun@ip-10.20.30.33 ~/aks/always-latest-ws-repogroup/ansible] $ git rev-parse a08c263
a08c263
fatal: ambiguous argument 'a08c263': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Когда я иду в репозиторий Github, чтобы увидеть мои последние изменения, его там нет. git log также не показывает мой коммит (вместо этого он показывает мне хеш коммита, который был наверху перед моим коммитом). Что я упустил?

Кажется, я даже не вижу длинного хэша, использующего git rev-parse a08c263 (маленький хеш).

$ git remote -v
origin  git@github.com:mycompany/ansible.git (fetch)
origin  git@github.com:mycompany/ansible.git (push)

а также

$ git reflog 
a10cb09 HEAD@{0}: clone: from git@github.com:mycompany/ansible.git

PS: если я сделаю те же шаги для других репозиториев, сидя под mycompany Группа репо и все эти репо успешно получат мои изменения коммитов / push в github, если я выполню аналогичные шаги.

ОБНОВЛЕНИЕ: одна из моих страниц браузера все еще имела это открытое. После того, как я совершил коммит + push, я смог увидеть свои зафиксированные изменения (новый хеш a08c263 как последний коммит на верхнем уровне репо). Когда я щелкнул по нему, он открыл прикрепленную страницу браузера, где я могу увидеть полный хеш, а также папку / файлы. Если я захожу на URL открытого браузера для своего коммита, он все еще там (поэтому Git что-то сохранил), но щелкнул обратно на корневом уровне репозитория, т.е. ansibleпоследний коммит - это не мой коммит +push (новый хеш), а список a10cb09 как последний (который в моментальном снимке является родительским хешем для моего недавно сгенерированного хеша). Посмотреть здесь:

Это теперь приносит основные вопросы:

  1. Если бы у меня не открылась эта страница браузера, то как бы получить длинный хеш и мою папку / файлы (содержимое)?

  2. Если бы я клонировал из github.com/mycompany/ansible (repo), который был ЗЕРКАЛО в ANSIBLE репозитории, фактически размещенном в Phabricator (где фактический исходный URL клона репозитория будет отличаться от того, который я использовал в моем крошечном скрипте выше), тогда какую команду / опцию я должен был использовать, чтобы перенести мое новое изменение в исходный Phabricator ansible хранилище?

  3. Если commit + push был завершен в моем конце, почему git log и другие подобные git команды не показывают никакой информации о моем новом хэше?

1 ответ

Решение

Посещение этой ссылки все еще работает, показывает мне файлы / папки, которые я зафиксировал, но если я нажму на корневой репозиторий в Github, он не покажет мой коммит как последний

Это означает, что либо:

  • ветка по умолчанию удаленного репо не является основной
  • или какой-то хук (post-receive?) установил или сбросил HEAD на другой SHA1

этот ANSI репозиторий, который я клонировал, НЕ РАЗМЕЩЕН на github.com. ANSI репо в моем случае размещается в Phabricator и зазеркал на Github.com (откуда я клонировал) его

Это может объяснить сброс.

Наибольшее беспокойство вызывает то, как я могу получить свою папку / файлы из этой фиксации a08c263 обратно в мое рабочее пространство. git log или git rev-parse ничего не показывает / выдает ошибку, так как этот хэш не существует согласно Git.

Конечно: клон из github в другой локальной папке, добавьте свою предыдущую папку клонов в качестве удаленного репо, извлеките и выберите ваш коммит:

git clone https://github.com/... newfolder
cd newfolder
git remote add old ../path/to/first/clone
git fetch old
git cherry-pick a08c263
git push

Но вы должны убедиться, что у вас есть право вернуться к репозиторию GitHub.

Другие вопросы по тегам