Date Tags git
  • Change the origin of the repository

    Edit .git/config file:

    ...
    [remote "origin"]
    url = <line to  change>
    ...
    
  • Cancel previous commit

    git reset HEAD^
    
  • Commit, rewriting previus

    git commit --amend
    
  • Remove from staged, but keep the file

    git rm --chached <file>
    
  • Remote repo

    git remote add frank http://frnak.com/git/project
    git remote add pb git://github.com/paulboone/ticgit.git
    git remote -v
    git remote show origin
    git remote show frank
    
  • Working with remote branches

    Push your local branch to the origin

    git push origin <branchname>
    

    Delete branch from the origin

    git push origin :<branchname>
    
  • Tagging

    git tag -a v1.0 -m"Version 1.0" git tag -a v1.2 9fceb02 git show v1.* git push origin v1.0 git push origin --tags

  • Autocomplete (gentoo)

    echo "source /usr/share/bash-completion/git" >> ~/.bashrc
    
  • Подпроекты 1. подмодули (много подводных камней)

    git update-index --skip-worktree core .gitmodules
    
    1. Поддеревья (можно хранить в отдельной ветке клон удаленного репозитория и, когда надо, сливать эту ветку с основной

      git remote add core_remote /repo/core.git
      git fetch core_remote
      git checkout -b core_branch core_remote/master
      git checkout master
      git read-tree --prefix=<prefix> -u core_branch
      
      для обновления ветки
      git checkout core_branch
      git pull
      git checkout master
      git merge --squash -s subtree --no-commit core_branch
      
      разница с веткой
      git diff-tree -p core_branch
      разница с удаленным репозиторием
      git diff-tree -p core_remote/master
      
    Проблема зависимостей.

    Допустим имеется проект core (например библиотека работы со строками). Имеются проекты a и b, которые используют проект core. Допустим мы создаем проект super, который будет использовать проекты a,b и core. Как нам лучше организовать процесс, чтобы не запутаться в трёх различных копиях core. Например, что делать если, работая в a, мы поменяли core?

    Если git merge срабатывает не в то поддререво используем "ручное управление". Пример:

    git merge --squash --no-commit -s recursive -X subtree=src -X theirs nx_socket@rmt
    

Comments

comments powered by Disqus