Differences between revisions 23 and 27 (spanning 4 versions)
Revision 23 as of 2016-09-26 16:47:44
Size: 1671
Editor: ZekeKaufman
Comment:
Revision 27 as of 2016-12-08 14:08:29
Size: 3222
Editor: ZekeKaufman
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
== Initial Git Setup (just do once) ==
Line 5: Line 4:
Configuration settings: This page is provided for !FreeSurfer developers to assist in the CVS -> git transition.

This page is not meant to be a comprehensive guide for using git. Git is a feature loaded version control system which at times can be a bit of a hurdle to learn. The following site However, when used in its simplest form it is very similar to most all other version control systems, including CVS. Below are many of the basic CVS commands used by !FreeSurfer developers the git equivalent of that command. The [[https://www.atlassian.com/git/tutorials/what-is-git|Atlassian]] and [[https://git-scm.com/doc|git-scm]] are great resources for those who want to dig deeper and and learn more about git and its features.


== Initial Git Setup ==

When we start out using git we want to set a few of our configuration settings. We only need to do this one time:
Line 7: Line 13:
$> git config --global user.name "John Doe"
$> git config --global user.email johndoe@nmr.mgh.harvard.edu
$> cd ~
$> git config --global user.name "Zeke Kaufman"
$> git config --global user.email zkaufman@nmr.mgh.harvard.edu
Line 10: Line 17:
For additional examples of git specifics setting (e.g. default editor, color settings), see the following page: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
Line 11: Line 19:
Checkout out the main branch: == Checkout out the main branch ==
When working with CVS, we would checkout out the !FreeSurfer repository using the '''{{{cvs checkout dev}}}''' command. In git we 'clone' repositories. This gives us a local version of the repository which we can work with:
Line 13: Line 22:
Line 15: Line 23:
(remotely)
$>

$> cvs checkout dev
Line 23: Line 27:
Checkout the stable branch: If you wanted to check out a specific branch, you could do that in a couple different ways:
Line 25: Line 29:
$> git clone /space/freesurfer/repo/freesurfer
$> cd freesurfer
$> git checkout stable6

or,
Line 26: Line 36:
}}}
Line 27: Line 38:
$> cvs checkout -r stable6 dev
}}}
Additional examples:
[[https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository|Cloning-an-Existing-Repository]]

[[https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-clone|git-clone]]

This page is provided for FreeSurfer developers to assist in the CVS -> git transition.

This page is not meant to be a comprehensive guide for using git. Git is a feature loaded version control system which at times can be a bit of a hurdle to learn. The following site However, when used in its simplest form it is very similar to most all other version control systems, including CVS. Below are many of the basic CVS commands used by FreeSurfer developers the git equivalent of that command. The Atlassian and git-scm are great resources for those who want to dig deeper and and learn more about git and its features.

Initial Git Setup

When we start out using git we want to set a few of our configuration settings. We only need to do this one time:

$> cd ~
$> git config --global user.name "Zeke Kaufman"
$> git config --global user.email zkaufman@nmr.mgh.harvard.edu

For additional examples of git specifics setting (e.g. default editor, color settings), see the following page: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Checkout out the main branch

When working with CVS, we would checkout out the FreeSurfer repository using the cvs checkout dev command. In git we 'clone' repositories. This gives us a local version of the repository which we can work with:

$> git clone /space/freesurfer/repo/freesurfer

If you wanted to check out a specific branch, you could do that in a couple different ways:

$> git clone /space/freesurfer/repo/freesurfer
$> cd freesurfer
$> git checkout stable6

or,

$> git clone -b stable6 /space/freesurfer/repo/freesurfer

Additional examples: Cloning-an-Existing-Repository

git-clone

Daily Workflow

Commit a modified source code file:

cvs

cvs commit -m "Added new capabilities." <file_name>

git

git commit -m "Added new capabilities." <file_name>

git push

Modify and commit a data file:

cvs

cvs commit <file_name>

git

git annex unlock <file_name>

git annex add <file_name>

git commit <file_name>

git push

git annex copy --to origin <file_name>

Add a data file:

cvs

cvs add <file_name>

cvs commit <file_name>

git

git annex add <file_name>

git commit <file_name>

git push

git annex copy --to origin <file_name>

Remove data file:

cvs

rm <file_name>

cvs rm <file_name>

cvs commit -m "Removing <file_name>" <file_name>

git

git rm <file_name>

git commit -m "Removing <file_name>" <file_name>

Undo 1 commit (before push):

git

git reset --soft HEAD~1

Undo 2 commits:

git

git reset --soft HEAD~2