How to push to GitHub
There are plenty of ways to use GitHub: the website, the app, or the terminal. The terminal is the best way to sync local projects to a GitHub repository, and once you learn the basics, you’ll be able to push local projects to remote GitHub repositories in seconds.
Here’s how to push to GitHub.
What does it mean to push to GitHub?
Pushing to GitHub means uploading files to or updating existing files in a GitHub repository.
Connect GitHub + Slack
Keep your team in the loop
Let’s say you just created a new public repository for a project and you want to upload all your files to it. To do that, you would push your files to GitHub. Or maybe you’re continually working on a project from a private GitHub repository for your company, and you want to upload the latest changes that you’ve made. That would also require you to push the changes to GitHub.
In other words, pushing to GitHub is a secure and convenient way to upload local files to a remote repository.
How to push to GitHub
Before we continue, make sure you’ve installed and enabled Git on your local machine.
Note: Your Git terminal may look different depending on your operating system (I’m using Windows), but the steps are the same.
-
Go to the web page for your GitHub repository, and note the URL.
If you haven’t already done so, GitHub will prompt you to authenticate your identity. Enter your GitHub username and password. Once the authentication is done, the upload process will start. After it’s complete, you’ll see specific details about where the data was uploaded.
That’s it! You’ve successfully pushed your local files and folders to your GitHub repository.
To double-check that you pushed to GitHub successfully, open your GitHub repository web page. Your code changes should appear there.
Automate GitHub with Zapier
Zapier lets you connect GitHub to thousands of apps, so you can automate more of your Git processes. For example, you can automatically get a notification or create a task in your project management tool whenever there’s a new pull request in your repository. Or you can notify others about new commits to your repo. Here are a few templates to get you started, but you can use Zapier to connect GitHub to thousands of other apps.
To get started with a Zap template—what we call our pre-made workflows—just click on the button. It only takes a few minutes to set up. You can read more about setting up Zaps here.
Что такое git push и как его использовать
В инструкции рассказываем о наиболее частых сценариях использования git push.
Эта инструкция — часть курса «Введение в Git».
Смотреть весь курс
Введение
Команда Git push позволяет отправлять локальную ветку на удаленный репозиторий. Она помогает разработчикам синхронизироваться в команде, а именно отправляет проделанные изменения. Если программист работает один, то пуш позволяет хранить код в облаке, например github, gitlab и не только, избавляя от риска потери данных на компьютере.
Дополнительно для синхронизации еще используют git pull для получения изменений с сервера и git remote, чтобы получить список удаленных подключений к репозиторию.
В этой инструкции мы расскажем, как запушить в удаленный git репозиторий. В статье под «пушем» будем подразумевать git push.
Отправка изменений в чистый репозиторий
Перед пушем надо связать локальный и удаленный репозитории. Делается это при помощи команды:
git remote add link
Вместо repository_name нужно дать имя удаленному репозиторию. Далее в инструкции вместо этого параметра мы будем использовать origin, так как чаще всего используют это имя.
Вместо link — ссылка на удаленный репозиторий, она может выглядеть по-разному в зависимости от того используется ssh или https.
Для ssh, который обязателен для github и gitlab, потребуются сделать дополнительные манипуляции для создания ssh-ключа. Соответствующие инструкции есть на этих ресурсах.
Отправка изменений
Перед пушем надо зафиксировать текущие изменения, то есть сделать git commit.
Далее для отправки в терминале пишем:
git push origin
Вместо branch — имя ветки, которую надо отправить. Чаще всего используется master или main:
git push origin master
Такое каждый раз писать слишком громоздко, для этого придумали git push по умолчанию. Для этого единожды набираем предыдущую команду с флагом -u:
git push -u origin master
После этого можно писать более коротко, так как git запомнил, что пушить надо на сервер origin ветку под именем master:
git push
Таким образом, git позволяет запушить ветку в удаленный репозиторий. Чтобы через git добавить ветку в удаленный репозиторий, надо запушить существующую локальную ветку.
Дополнительные опции публикации
Отправка ветки на сервер в ветку с другим именем
Для того чтобы сделать git push в другую ветку, есть специальный синтаксис, где после имени ветки через двоеточие пишется имя удаленной ветки:
git push origin branch:server_branch
где branch – имя локальной ветки, server_branch – имя удаленной ветки на сервере.
Отправка всех веток на сервер
Вместо имени ветки пишем флаг —all:
git push origin --all
После этого все зафиксированные изменения в ветках отправятся в удаленный репозиторий.
Отправка текущей ветки
Удобный способ отправить текущую ветку с тем же именем на сервере.
git push origin HEAD
HEAD указывает на текущую ветку (current branch). Тем самым, не надо запоминать имя ветки, на которой вы находитесь.
Принудительная публикация (git push —force …)
При отправке может произойти ошибка публикации:
To github.com:example/test.git ! [rejected] master -> master (fetch first) error: не удалось отправить некоторые ссылки в «github.com:example/test.git»
Это так называемый git push rejected, он означает что пуш был отклонен. Правильнее всего — сделать то, что написано в подсказке к ошибке. Надо получить и смержить изменения, затем снова отправить.
Эта ошибка происходит, так как git проверяет, что новый коммит основан на предыдущих коммитах. Пока вы вносили изменения, кто-то мог запушить изменения того же, над чем вы работали. Поэтому git не может выполнить автоматическое слияние, ваш коммит был раньше и он не базируется на обновленных коммитах в удаленном репозиториие.
Флагом —force или сокращенной его версией -f отключается проверка коммитов и при необходимости выполняется перезапись истории.
git push --force
Нужно быть аккуратными с этой командой, так как она стирает работу других людей. Эта команда оправдана лишь изредка, например, если вы почти сразу внесли изменения коммита с помощью git commit —amend и запушили до того, как кто-то сделал git pull.
Принудительная публикация с параметром (git push —force-with-lease …)
Это более безопасный, но так же нерекомендуемый вариант вариант принудительного пушинга. Он не перезапишет работу в удаленной ветке, если в нее были добавлены коммиты от других людей.
git push --force-with-lease
Принудительная публикация с этим параметром чревата появлением git push rejected у других людей
Как пушить в PhpStorm
При первом открытии PhpStorm потребуется создать новый проект.
В открытом проекте в правом верхнем углу среды разработки располагаются наиболее часто используемые команды git, в том числе пушинга.
Синяя стрелка означает git pull, зеленая галочка — git commit, зеленая стрелка — git push. При нажатии на зеленую стрелку (горячие клавиши Ctrl+Alt+K или ⌥ ⌘ K) открывается диалоговое окно с информацией об изменениях и настроках отправки.
Незапушенные коммиты
Самый простой способ узнать про них при помощи команды:
git status
Вывод будет содержать имя текущей ветки и то, насколько она опережает версию сервера. Пример вывода:
On branch master Your branch is ahead of ‘origin/master’ by 1 commit. (use “git push” to publish your local commits)
Для более подробной информации можно использовать:
git log
Будет выведена история коммитов:
commit 0fcd9558b013f642a8c3b4a59a16a66de39c99bd (HEAD -> master) Author: Pavel Date: Sun Mar 27 18:57:14 2022 +0300 Local commit commit 289c650767d2c7c2e58486e27b8b3933c6442078 (origin/master, origin/HEAD) Author: Pavel Date: Fri Mar 25 19:41:47 2022 +0300 Pushed commit
В скобках пишется где и какой коммит расположен.
HEAD -> master означает что текущая ветка (current branch) — это master и это последний локальный коммит в ней.
В нижнем коммите в скобках origin/master означает, что это последний опубликованный коммит на сервере в ветке master, а origin/HEAD, что коммит расположен на ветке, которая совпадает с локальной веткой HEAD.
Как пушить теги
Для создания тегов используют git tag, а для их отправки:
git push origin
Вместо tag_name — имя тега, который надо удалить на сервере.
Также можно сделать отправку всех тегов:
git push --tags
Мы не рекомендуем выбирать этот способ, так как могут отправиться теги, которые были удалены на сервере.
Удаление ветки или тега на сервере
Чтобы удалить ветку на удаленном репозитории, используем уже привычную команду с флагом —delete:
git push --delete origin
remote_branch_or_tag_name — имя ветки или тега на сервере.
Для удаление локальной ветки:
git branch -d
А для удаления локального тега:
git tag -d
Продвинутые возможности
Удаление локальных данных (prune)
Если на сервере была удалена ветка, то локально она все еще существует. Чтобы удалить все локальные ветки, которых нет на сервере:
git remote prune origin
Проверить, удастся ли пушинг (dry run option)
С этой опцией пушинг фактически не произойдет, но покажет вывод словно он произошел.
git push --dry-run
Так можно получить ошибку, которая могла бы произойти, и поправить ее заранее.
Атомарный пушинг (atomic option)
Если отправить несколько веток на сервер, некоторые могут быть приняты, а другие — нет. Иногда это не то поведение, которое ожидалось. Например, пушинг делает некоторая проверяющая система и ожидаемое поведение такое: либо все будут приняты, либо все будут отклонены. В таких случаях надо делать пушинг атомарно:
git push --atomic origin branch1 branch2 …
Заключение
В этой инструкции мы рассмотрели наиболее частые сценарии использования git push. В этой команде много опций, некоторые из них даже редко встречаются. Со всеми ними можно ознакомиться в документации:
git push –help
Git rebase — перебазирование коммитов и веток
Что такое GitLab, как и для чего он используется
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.
Читайте также:
Инструкция
Как автоматизировать подготовку к собеседованиям с помощью Telegram-бота
29 сентября 2023
Инструкция
Как реализовать очередь в Redis
14 сентября 2023
Инструкция
Как генерировать истории с помощью ChatGPT и Telegram
Добавление файла в репозиторий
Можно отправить и зафиксировать существующий файл в репозиторий GitHub или с помощью командной строки.
Platform navigation
Adding a file to a repository on GitHub
Files that you add to a repository via a browser are limited to 25 MiB per file. You can add larger files, up to 100 MiB each, via the command line. For more information, see «Adding a file to a repository using the command line.» To add files larger than 100 MiB, you must use Git Large File Storage. For more information, see «About large files on GitHub.»
Tips:
- You can upload multiple files to GitHub at the same time.
- If a repository has any protected branches, you can’t edit or upload files in the protected branch using GitHub. For more information, see «About protected branches.»
You can use GitHub Desktop to move your changes to a new branch and commit them. For more information, see «Committing and reviewing changes to your project in GitHub Desktop.»
- On GitHub.com, navigate to the main page of the repository.
- Above the list of files, select the Add file dropdown menu and click Upload files. Alternatively, you can drag and drop files into your browser.
Adding a file to a repository using the command line
You can upload an existing file to a repository on GitHub.com using the command line.
This procedure assumes you’ve already:
- Created a repository on GitHub, or have an existing repository owned by someone else you’d like to contribute to
- Cloned the repository locally on your computer
Warning: Never git add , commit , or push sensitive information to a remote repository. Sensitive information can include, but is not limited to:
- Passwords
- SSH keys
- AWS access keys
- API keys
- Credit card numbers
- PIN numbers
- On your computer, move the file you’d like to upload to GitHub into the local directory that was created when you cloned the repository.
- Open Terminal Terminal Git Bash .
- Change the current working directory to your local repository.
- Stage the file for commit to your local repository.
$ git add . # Adds the file to your local repository and stages it for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
$ git commit -m "Add existing file" # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.
$ git push origin YOUR_BRANCH # Pushes the changes in your local repository up to the remote repository you specified as the origin
Further reading
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Git Push
git push
git push uploads all local branch commits to the corresponding remote branch.
What Does git push Do?
git push updates the remote branch with local commits. It is one of the four commands in Git that prompts interaction with the remote repository. You can also think of git push as update or publish.
By default, git push only updates the corresponding branch on the remote. So, if you are checked out to the main branch when you execute git push , then only the main branch will be updated. It’s always a good idea to use git status to see what branch you are on before pushing to the remote.
How to Use git push
After you make and commit changes locally, you can share them with the remote repository using git push . Pushing changes to the remote makes your commits accessible to others who you may be collaborating with. This will also update any open pull requests with the branch that you’re working on.
As best practice, it’s important to run the git pull command before you push any new changes to the remote branch. This will update your local branch with any new changes that may have been pushed to the remote from other contributors. Pulling before you push can reduce the amount of merge conflicts you create on GitHub — allowing you to resolve them locally before pushing your changes to the remote branch.
Common usages and options for git push
- git push -f : Force a push that would otherwise be blocked, usually because it will delete or overwrite existing commits (Use with caution!)
- git push -u origin [branch] : Useful when pushing a new branch, this creates an upstream tracking branch with a lasting relationship to your local branch
- git push —all : Push all branches
- git push —tags : Publish tags that aren’t yet in the remote repository
You can see all of the options with git push in git-scm’s documentation.
Why can’t I push?
If you are trying to git push but are running into problems, there are a few common solutions.
Check your branch
Check what branch you are currently on with git status . If you are working on a protected branch, like main , you may be unable to push commits directly to the remote. If this happens to you, it’s OK! You can fix this a few ways.
Work was not yet on any branch
- Create and checkout to a new branch from your current commit: git checkout -b [branchname]
- Then, push the new branch up to the remote: git push -u origin [branchname]
Accidentally committed to the wrong branch
- Checkout to the branch that you intended to commit to: git checkout [branchname]
- Merge the commits from the branch that you did accidentally commit to: git merge [main]
- Push your changes to the remote: git push
- Fix the other branch by checking out to that branch, finding what commit it should be pointed to, and using git reset —hard to correct the branch pointer
Related Terms
- git commit -m «descriptive message» : Records file snapshots permanently in version history.
- git clone [url] : Clone (download) a repository that already exists on GitHub, including all of the files, branches, and commits.
- git status : Always a good idea, this command shows you what branch you’re on, what files are in the working or staging directory, and any other important information.
- git pull : Updates your current local working branch with all new commits from the corresponding remote branch on GitHub. git pull is a combination of git fetch and git merge .
Get started with git and GitHub
Review code, manage projects, and build software alongside 40 million developers.
Subscribe to The GitHub Insider
Discover tips, technical guides, and best practices in our monthly newsletter for developers.