User Tools

Site Tools


Sidebar

code:git:obecne

Obecně

Odkazy

Řešení konfliktu pomocí volby jedné z verzí

git checkout --ours index.html
git checkout --theirs index.html
 
git add index.html
git commit -am 'Conflict merged'

Rekurzivní submoduly

git clone --recursive
git submodule update --init --recursive

Vynucení merge z cizí strany

git fetch origin
git reset --hard origin

Odstranění dat z historie

Jednodušší řešení pomocí utility BFG

git filter-branch --index-filter 'git rm --cached --ignore-unmatch ./media/*' --prune-empty --tag-name-filter cat -- --all

Naklonování jednotlivých větví ze vzdáleného repozitáře

First, clone a remote git repository and cd into it:
 
$ git clone git://example.com/myproject
$ cd myproject
Next, look at the local branches in your repository:
 
$ git branch
* master
But there are other branches hiding in your repository! You can see these using the -a flag:
 
$ git branch -a
* master
  origin/HEAD
  origin/master
  origin/v1.0-stable
  origin/experimental
If you just want to take a quick peek at an upstream branch, you can check it out directly:
 
$ git checkout origin/experimental
But if you want to work on that branch, you'll need to create a local tracking branch:
 
$ git checkout -b experimental origin/experimental
Now, if you look at your local branches, this is what you'll see:
 
$ git branch
  master
* experimental
You can actually track more than one remote repository using git remote.
 
$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  origin/HEAD
  origin/master
  origin/v1.0-stable
  origin/experimental
  win32/master
  win32/new-widgets

Push včetně tagů

Do souboru: .git/config

[remote "origin"] # or whatever it is named
    url = ...
    push = +refs/heads/*:refs/heads/*
    push = +refs/tags/*:refs/tags/*

nebo:

git push
git push --tags

Smazání tagu ze vzdáleného repozitáře

git tag -d 12345
git push origin :refs/tags/12345

Smazání větve ze vzdáleného repozitáře

git push origin :delete-branch

Revert (zrušení aktuálních změn)

git checkout <filename>

Zjištění modifikovaných souborů v potomkovi větve

  • rozdíl proti aktuálnímu stavu větví
git diff --stat master..branch
  • rozdíl oproti stavu, kdy byla větev z původní větve vytvořena
git diff --stat master...branch

Přidání UPSTREAMu k repozitáři

git remote add upstream -f http://github.com/modxcms/revolution.git --track <master>

Sledování větve ve vzdáleném repozitáři

git push -u <origin> <master> # when pushing, or:
git branch -u <origin/master> # or:
git branch --set-upstream <master> <origin/master>

Note as of Git v1.8.0:

The –set-upstream command has been deprecated in favour of –set-upstream-to, which works slightly differently.

#To set the upstream remote for the currently checked-out branch:
git branch --set-upstream-to <origin/master>
 
#Or, to set the upstream remote for the branch named branch_name:
git branch <branch_name> --set-upstream-to <origin/master>

Ignorování souborů pro verzování

  1. pokud chceme seznam ignorovaných souborů sdílet s ostatními (mít ho zaverzovaný), použijeme soubor .gitignore v rootu repozitáře, kam jednotlivé soubory/adresáře zapíšeme (/.gitignore)
  2. nebo chceme mít ignorované soubory/adresáře jen v rámci lokálního checkout a to zařídíme úpravou souboru /.git/info/exclude

Accept "ours" or accept "theirs"

git checkout HEAD -- <filename>
or (to bring file to your version)
 
git checkout --ours -- <filename>
or
 
git checkout test-branch -- <filename>
or
 
git checkout --theirs -- <filename>
Or you can use
 
git show :2:<filename> > <filename>
(stage 2 is ours) or in the opposite way
 
git show :3:<filename> > <filename>
(stage 3 is theirs), but the you would also need to run
 
git add <filename>

GIT pull from HTTPS : CAfile: /bin/curl-ca-bundle.crt

wget http://curl.haxx.se/ca/cacert.pem;
cp -f cacert.pem /bin/curl-ca-bundle.crt;
chmod 644 /bin/curl-ca-bundle.crt;

Help v command line

Viz http://stackoverflow.com/a/5517857

Do /home/<user>/.gitconfig nastavit pro help.format hodnotu man.

Checkout tagu do branche

Viz http://stackoverflow.com/a/5582368

git co -b v2.2.6-pl v2.2.6-pl

Globální .gitignore

git config --global core.excludesfile ~/.gitignore
echo .idea/ > ~/.gitignore

Pročištění lokálních větví pokud vzdálené již neexistují

Viz http://stackoverflow.com/a/17320081/1365267

git remote prune origin
# nebo
git fetch -p
# nebo
git remote update --prune

GIT stash POP - vyřešení konfliktu

Viz http://stackoverflow.com/a/7932912

git reset HEAD <file>

Zjištění počtu commitů mezi 2 větvemi

git rev-list HEAD...origin/master --count

Ignorování změn v trackovaných souborech

Viz https://stackoverflow.com/questions/10755655/git-ignore-tracked-files

# mark as ignored
git update-index --assume-unchanged [<file> ...]
 
# To undo and start tracking again:
git update-index --no-assume-unchanged [<file> ...]
code/git/obecne.txt · Last modified: 2021/03/12 18:42 by hansek