Как отправить локальные изменения в удаленный репозиторий git на bitbucket

82

Я тестирую Git и Bitbucket.

Я создал репозиторий на Bitbucket и создал локальную копию репо, и я фиксирую в нем файлы. Кажется, я не могу отправить файлы из моего локального репозитория в удаленный репозиторий.

Вот что я делаю:

git clone https://me@bitbucket.org/me/test.git
cd test
touch dummy
git add dummy
git commit dummy -m "my first git commit"
git push

Итоговая строка выводит:

Everything up-to-date

И когда я вхожу в Bitbucket, я не вижу свой фиктивный файл.

Что я делаю неправильно?

РЕДАКТИРОВАТЬ:

Это сработало:

 git push origin master:master

Какие-либо объяснения разницы между этим и простым git push?

Джоэл
источник
Любой, кто не
знаком

Ответы:

102

git push origin masterВместо этого используйте .

У вас есть репозиторий локально, и начальный git push"проталкивается" к нему. Это не нужно делать так (как это местный) , и он показывает все , как уточненный. git push origin masterуказывает удаленный репозиторий ( origin) и расположенную там ветку ( master).

Для получения дополнительной информации посетите этот ресурс .

Чак Каллебс
источник
2
Я также должен упомянуть, что когда вы что-то клонируете, originрепозиторий определяется автоматически.
Чак Каллебс
15

Это мера безопасности, чтобы избежать отправки веток, которые не готовы к публикации. Грубо говоря, при выполнении «git push» будут отправлены только локальные ветки, которые уже существуют на сервере с таким же именем, или ветки, которые были отправлены с использованием синтаксиса localbranch: remotebranch.

Чтобы отправить все локальные ветки в удаленный репозиторий, используйте --all:

git push REMOTENAME --all
git push --all

или укажите все ветки, которые вы хотите нажать:

git push REMOTENAME master exp-branch-a anotherbranch bugfix

Кроме того, полезно добавить -uв команду «git push», так как это сообщит вам, находится ли ваша локальная ветка впереди или позади удаленной ветки. Это отображается, когда вы запускаете "git status" после git fetch.

солнечно256
источник
8

Я использую Git, загруженный с https://git-scm.com/, и настраиваю ssh, следуя инструкциям по ответу https://stackoverflow.com/a/26130250/4058484 .

После проверки сгенерированного открытого ключа в моей учетной записи Bitbucket и обращения к шагам, описанным на http://www.bohyunkim.net/blog/archives/2518, я обнаружил, что работает только «git push» :

git clone https://me@bitbucket.org/me/test.git
cd test
cp -R ../dummy/* .
git add .
git pull origin master 
git commit . -m "my first git commit" 
git config --global push.default simple
git push

Ответ оболочки следующий:

$ git push
Counting objects: 39, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (39/39), 2.23 MiB | 5.00 KiB/s, done.
Total 39 (delta 1), reused 0 (delta 0)
To https://me@bitbucket.org/me/test.git 992b294..93835ca  master -> master

Он даже работает, чтобы подтолкнуть мастер слияния к gh-страницам в GitHub

git checkout gh-pages
git merge master
git push
Четабахана
источник
0

Значение 2-го параметра (' master') команды " git push" -

$ git push origin master

можно сделать понятным, запустив pushкоманду " news-item" из ветви " ". Это привело к тому, что локальная masterветвь была перенесена на удаленную masterветку. Для получения дополнительной информации см.

https://git-scm.com/docs/git-push

где <refspec>в

[<repository> [<refspec>…​]

написано, чтобы означать " specify what destination ref to update with what source object."

Для справки, вот снимок экрана, как я проверял это утверждение.

<code> введите здесь описание изображения </code>

Пак Чон Бом
источник