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
как последний (который в моментальном снимке является родительским хешем для моего недавно сгенерированного хеша). Посмотреть здесь:
Это теперь приносит основные вопросы:
Если бы у меня не открылась эта страница браузера, то как бы получить длинный хеш и мою папку / файлы (содержимое)?
Если бы я клонировал из github.com/mycompany/ansible (repo), который был ЗЕРКАЛО в ANSIBLE репозитории, фактически размещенном в Phabricator (где фактический исходный URL клона репозитория будет отличаться от того, который я использовал в моем крошечном скрипте выше), тогда какую команду / опцию я должен был использовать, чтобы перенести мое новое изменение в исходный Phabricator
ansible
хранилище?Если 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.