Начало тут
После того как мы создали пустой репозиторий на сервере, нужно добавить туда наш проект
git add * && git commit -m "Initial commit" && git push origin master
где,
origin это сервер на котором у нас код… и добавляется он вот так
git remote add origin ssh://git@/git/test.git
Возможны ошибки при первом комите:
root@client:app# git push
Password:
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'ssh://root@giserver.com/git/app'
Указываем явно куда пушить
root@gitclient# git push origin master
Password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 203 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://root@gitserver.com/git/app
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://root@gitserver.com/git/app'
Все равно не поддается на провокацию. Сия ситуация хорошо описана тут http://pete.akeo.ie/2011/07/git-remote-repository.html
Git думает что раз репозиторий пустой, то есть не завершенный первый коммит и не дает простому смертному стать первым. Для этого мы на сервере создадим новую ветку:
root@gitserver : git checkout -b first-commit
Switched to a new branch 'first-commit'
root@gitserver $ git symbolic-ref HEAD refs/heads/first-commit
После этого можем внести изменения в код на клиенте и передать это на сервер
echo "new file" > README
git add README
git commit -m "Added file README"
git push origin master
1. Создаем новый файл
2. Добавляем в индекс
3. Коментируем и комитим
4. Передаем на сервер
Когда захотим просмотреть все изменения в проекте:
git log
Если нужно детальнее посмотреть информацию с diff
git log -p -2
Вот так выглядит diff для новосозданого файла
commit 56907f69cb50bfd2c8d9fd01740c62c6f4c40a7e
Author: reverse
Date: Tue Jun 2 09:56:38 2015 +0300
added README
diff --git a/README b/README
new file mode 100644
index 0000000..656e4fd
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+new file
Для просмотра diff на уровне слов, а не строк можно использовать такую команду
git log -U1 --word-diff
На выходе что то похожее на это
new commit for query
diff --git a/rpc.rb b/rpc.rb
index 9b54be4..1b3555d 100644
--- a/rpc.rb
+++ b/rpc.rb
@@ -4,3 +4,3 @@ class MyClass
def dosomething(a)
puts "response for {+query+} #{a}"
Если нужна краткая информация :
git log --stat
Если проект большой и старый:
git log --since=2.weeks