Работа с Git на примере Bitbucket

14.09.2016

Пример создания git репозитория на Bitbucket. Также небольшой sh скрипт для автоматизации комитов и способ как делать git push без пароля

Скрипт для авто коммита - внизу статьи.

Инициализация гита

Открываем нужную папку, и в консоли вводим:

 
git init
git remote add origin git@bitbucket.org:_Oddler_/test1.git

Внимание: В текущей директории будет создана папка .git

Настройки

 
git config --global user.email "EMAIL"
git config --global user.name "Oddler"

Делаем commit

 
git add .
git commit -m "First Commit."
git push -u origin master

 

git push -u origin master

- запросит пароль. Для bitbucket - это пароль от учетной записи.

Сообщение:

 
error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxx.git'

- обозначает, что камит пустой, нужно закинуть хотя бы один файл и повторить попытку.


git push без пароля

Генерируем ключ

 
ssh-keygen 

Рекомендуется еще сделать, но я перезагружался:

 
ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa 

Получаем код ключа:

 
cat ~/.ssh/id_rsa.pub

Добавляем его а аккаунт

pic1

pic1

Правим конфиг (Если качали репозиторий по https://, а не по GIT)

Важно: этого можно не делать, если первоначально указать нужное значение в "git remote add origin "

 
mcedit .git/config

и заменяем

 
[remote "origin"]
	url = https://_Oddler_@bitbucket.org/_Oddler_/raspberry1.git

на

 
[remote "origin"]
	url = git@bitbucket.org:_Oddler_/raspberry1.git

Скрипт для авто коммита

Небольшой скрипт, который запрашивает называние комита, и автоматически отправляет все поседение изменения в репозиторий.

push_commit.php (Download)

 #!/usr/bin/php
<?php
  
  class soMain
  {
    /**
	* выводит на экран сообщение
	* 
	* @param string $sMsg
	* 
	* @return void
	*/
    protected function _printLn($sMsg)
    {
      echo $sMsg."\n";
	}
    
    /**
	* Основной метод
	* 
	* @return void
	*/
    public function go()
    {
      $aIn = getopt('c:');
      
      if (isset($aIn['c']))
	  {
	    $this->_printLn(exec('git add --all *'));
	    $this->_printLn(exec('git commit -m "'.$aIn['c'].'"'));
	    $this->_printLn(exec('git push -u origin master'));
	  }
	  else
	  {
	    $this->_printLn('Error (1): no comment given');
	  }
	}
  }
  
  $oMain = new soMain();
  $oMain->go();

Запускать: push_commit.php c="комментарий"


Категории: Linux, git, Centos
Пометки: git bitbucket
Яндекс.Метрика