Difference between revisions of "GIT"
(→Conversion SVN à GIT) |
(→Cloner le répertoire SVN) |
||
Line 33: | Line 33: | ||
= Conversion SVN à GIT = |
= Conversion SVN à GIT = |
||
− | + | Cloner le répertoire SVN: |
|
− | $> git svn clone --stdlayout --no-metadata |
+ | $> git svn clone --stdlayout --no-metadata -A ~/projets/vcs/svn-to-git-migration/users.txt https://subversion.assembla.com/svn/gbjazz/ gbjazz |
− | -A ~/projets/vcs/svn-to-git-migration/users.txt \ |
||
− | https://subversion.assembla.com/svn/gbjazz/ gbjazz |
||
− | + | If you want to keep other remote branches in your repo, you want to create a local branch for each one manually. If you don't do this, the branches won't |
|
+ | get cloned in the final step |
||
− | # local branch for each one manually. If you don't do this, the branches won't |
||
− | # get cloned in the final step. |
||
− | git checkout -b local_branch remote_branch |
||
+ | $> git checkout -b local_branch remote_branch |
||
− | # Tags are imported as branches. You have to create a local branch, make a tag |
||
− | # and delete the branch to have them as tags in git. To do it with tag "v1": |
||
− | git checkout -b tag_v1 remotes/tags/v1 |
||
− | git checkout master |
||
− | git tag v1 tag_v1 |
||
− | git branch -D tag_v1 |
||
+ | Tags are imported as branches. You have to create a local branch, make a tag and delete the branch to have them as tags in git. To do it with tag "v1": |
||
− | # Clone your GIT-SVN repo into a clean git repo: |
||
− | git clone dest_dir-tmp dest_dir |
||
− | rm -rf dest_dir-tmp |
||
− | cd dest_dir |
||
+ | $> git checkout -b tag_v1 remotes/tags/v1 |
||
− | # The local branches that you created earlier from remote branches will only |
||
+ | $> git checkout master |
||
− | # have been copied as remote branches into the new cloned repository. For each |
||
+ | $> git tag v1 tag_v1 |
||
− | # branch you want to keep: |
||
+ | $> git branch -D tag_v1 |
||
− | git checkout -b local_branch origin/remote_branch |
||
− | # Finally, remove the remote from your clean git repo that points to the now |
||
− | # deleted temp repo: |
||
− | git remote rm origin |
||
+ | Clone your GIT-SVN repo into a clean git repo: |
||
− | # Push changes to new remote repository (example Assembla) |
||
− | git remote add origin git@git.assembla.com:gbjazz.git |
||
− | git checkout master |
||
− | git push --tags |
||
− | git push origin master |
||
− | git checkout branch1 |
||
− | git push origin branch1 |
||
− | ... |
||
+ | $> git clone dest_dir-tmp dest_dir |
||
− | # When cloning and to track remote branch: |
||
+ | $> rm -rf dest_dir-tmp |
||
+ | $> cd dest_dir |
||
+ | The local branches that you created earlier from remote branches will only have been copied as remote branches into the new cloned repository. For each |
||
− | $> git branch -a |
||
+ | branch you want to keep: |
||
+ | |||
+ | $> git checkout -b local_branch origin/remote_branch |
||
+ | |||
+ | Finally, remove the remote from your clean git repo that points to the now deleted temp repo: |
||
+ | |||
+ | $> git remote rm origin |
||
+ | |||
+ | Push changes to new remote repository (example Assembla) |
||
+ | $> git remote add origin git@git.assembla.com:gbjazz.git |
||
+ | $> git checkout master |
||
+ | $> git push --tags |
||
+ | $> git push origin master |
||
+ | $> git checkout branch1 |
||
+ | $> git push origin branch1 |
||
+ | $> ... |
||
+ | |||
+ | When cloning and to track remote branch: |
||
+ | |||
+ | $> git branch -a |
||
* master |
* master |
||
remotes/origin/HEAD -> origin/master |
remotes/origin/HEAD -> origin/master |
||
Line 82: | Line 82: | ||
remotes/origin/section-nouvelles |
remotes/origin/section-nouvelles |
||
− | $> git checkout -b section-nouvelles origin/section-nouvelles |
+ | $> git checkout -b section-nouvelles origin/section-nouvelles |
Branch section-nouvelles set up to track remote branch section-nouvelles from origin. |
Branch section-nouvelles set up to track remote branch section-nouvelles from origin. |
||
Switched to a new branch 'section-nouvelles' |
Switched to a new branch 'section-nouvelles' |
Revision as of 00:25, 19 February 2013
Contents
Branches
Ce script peut-être utile pour créér une branche locale, l'enregistrer sur le serveur remote et ensuite la faire suivre (track):
#!/bin/bash
# git-create-branch <branch_name>
if [ $# -ne 1 ]; then
echo 1>&2 Usage: $0 branch_name
exit 1
fi
branch_name=$1
git checkout -b ${branch_name}
git push origin ${branch_name}
git branch --set-upstream ${branch_name} origin/${branch_name}
Pour effacer la branche distance (remote):
$> git push origin :${branch_name}
Appliquer des patches récalcitrantes
$> git am -3 --ignore-whitespace <name.patch>
Changer le nom de l'auteur dans un commit
$> exec git commit --amend --author="Prénom Nom <prenom.nom@hugovil.com>" -C HEAD
Conversion SVN à GIT
Cloner le répertoire SVN:
$> git svn clone --stdlayout --no-metadata -A ~/projets/vcs/svn-to-git-migration/users.txt https://subversion.assembla.com/svn/gbjazz/ gbjazz
If you want to keep other remote branches in your repo, you want to create a local branch for each one manually. If you don't do this, the branches won't get cloned in the final step
$> git checkout -b local_branch remote_branch
Tags are imported as branches. You have to create a local branch, make a tag and delete the branch to have them as tags in git. To do it with tag "v1":
$> git checkout -b tag_v1 remotes/tags/v1 $> git checkout master $> git tag v1 tag_v1 $> git branch -D tag_v1
Clone your GIT-SVN repo into a clean git repo:
$> git clone dest_dir-tmp dest_dir $> rm -rf dest_dir-tmp $> cd dest_dir
The local branches that you created earlier from remote branches will only have been copied as remote branches into the new cloned repository. For each branch you want to keep:
$> git checkout -b local_branch origin/remote_branch
Finally, remove the remote from your clean git repo that points to the now deleted temp repo:
$> git remote rm origin
Push changes to new remote repository (example Assembla)
$> git remote add origin git@git.assembla.com:gbjazz.git $> git checkout master $> git push --tags $> git push origin master $> git checkout branch1 $> git push origin branch1 $> ...
When cloning and to track remote branch:
$> git branch -a
- master
remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/section-nouvelles
$> git checkout -b section-nouvelles origin/section-nouvelles
Branch section-nouvelles set up to track remote branch section-nouvelles from origin. Switched to a new branch 'section-nouvelles'