<?xml version='1.0' encoding='utf-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>Git commands involving models</title>
		<style type="text/css">
			.info {border: 1px solid #3c78b5;background-color: #D8E4F1;margin: 20px;padding: 0px 6px 0px 6px;}
			.note {border: 1px solid #F0C000;background-color: #FFFFCE;margin: 20px;padding: 0px 6px 0px 6px;}
			.panel {border: 1px solid #ccc;background-color: #FFFFCE;margin: 10px;padding: 0px 6px 0px 6px;}
			.tip {border: 1px solid #090;background-color: #dfd;margin: 20px;padding: 0px 6px 0px 6px;}
			.warning {border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px 6px 0px 6px;}
</style>
		<link type="text/css" rel="stylesheet" href="/help/topic/org.eclipse.emf.compare.doc/help/resources/bootstrap.css"/>
		<link type="text/css" rel="stylesheet" href="/help/topic/org.eclipse.emf.compare.doc/help/resources/custom.css"/>
	</head>
	<body>
		<h1 id="Git_commands_involving_models">Git commands involving models</h1>
		<p>When a user wants to compare or merge EMF models from the git command line interface, the operation is doing in a textual way. 
			If he wants to compare or merge EMF models the needs in a logical way, he needs to do that in an Eclipse environment similar to the one he used to create these models.
			As such, the environment requires some plugins to be installed but it may also requires some preferences to be set, some perspective to be activated etc..
			Among these plugins, there are the mandatory ones that will be use to do the compare/merge operation: EMF Compare and EGit.</p>
		<p>EMF Compare provides additional git commands in order to compare and merge models on the command line. These commands will use an Eclipse as an headless application (no Graphical User Interface) including EMF Compare and Egit to compare models in a logical way. To provisioned such Eclipse environment, the new git commands will call a program using Oomph.</p>
		<p>Oomph 
			<a href="https://wiki.eclipse.org/Eclipse_Oomph_Installer">Oomph</a> is a technology that provisions a set of plugins in an Eclipse IDE, clones Git repositories, binds Git repositories to this IDE, checks projects, sets workspace preferences... The configuration is model driven, with files called Oomph setup model files.
		</p>
		<h2 id="Add_new_Git_commands_in_your_system">Add new Git commands in your system</h2>
		<p>The basics git commands don't allow to compare or merge EMF models in a logical way. Additional git commands must be added to your system. Each git command is a shell script describing its behaviour. So, to add a new git command, a new script has to be developed.
			The new scripts corresponding to the git commands are:</p>
		<ul>
			<li>git logicalmerge: the "models compatible" version of the git merge command</li>
			<li>git logicaldiff: the "models compatible" version of the git diff command</li>
			<li>git logicalmergetool: the "models compatible" version of the git mergtool command</li>
		</ul>
		<p>These scripts must be added on each computer that need to do "models compatible" git operations from command line interface, to enable them.</p>
		<p>You can find the scripts at the following address: 
			<a href="https://hudson.eclipse.org/emfcompare/job/cli-master-nightly/lastSuccessfulBuild/artifact/packaging/org.eclipse.emf.compare.git.pgm.scripts/scripts/">EMF Compare Git Scripts</a>.
		</p>
		<p>Note that the location of these scripts must be on your PATH environment variable. Also, they must have execution permission.</p>
		<p>These scripts will execute a program named 
			<i>emfcompare-git-pgm</i>. You also have to retrieve this program on your system.
			Once retrieved, you will have to export a variable named EMF_COMPARE_GIT_PGM_PATH with the path of folder containing the program 
			<i>emfcompare-git-pgm</i> as value.
		</p>
		<p>You can find the program at the following address: 
			<a href="https://hudson.eclipse.org/emfcompare/job/cli-master-nightly/lastSuccessfulBuild/artifact/packaging/org.eclipse.emf.compare.git.pgm.products/target/products/">EMF Compare Git PGM</a>. Download the one corresponding to your system.
		</p>
		<h2 id="Create_a_setup_file">Create a setup file</h2>
		<h3 id="Installation">Installation</h3>
		<p>The setup file will allow you to configure the headless application used by your command. To create a setup file you need an Eclipse environment with the Setup Model for EMF Compare's Git commands Wizard plugin installed. 
			Add the following p2 repository (update-site) in your update manager (in Eclipse, 
			<i>Help Menu &gt; Install New Software...</i>, 
			<i>Add...</i> button on the top right corner): 

			<a href="https://hudson.eclipse.org/emfcompare/job/cli-master-nightly/lastSuccessfulBuild/artifact/packaging/org.eclipse.emf.compare.git.pgm.update/target/repository/">EMF Compare's Git commands Wizard plugin update-site</a>
		</p>
		<p>Then, select the 
			<i>EMF Compare Git PGM Wizards &gt; EMF Compare Git PGM Oomph Wizard Feature</i> and click on 
			<i>Finish</i>.
		</p>
		<p>This tool requires Oomph 1.0.0 or later. You may need to add the Oomph update site to the list of the available update sites to be able install and/or update Oomph:

			<a href="http://download.eclipse.org/oomph/updates">http://download.eclipse.org/oomph/updates</a>
		</p>
		<h3 id="Basic_usage">Basic usage</h3>
		<p>To create a new setup model for EMF Compare's git commands, select 
			<i>File &gt; New &gt; Other ... &gt; Oomph &gt; Setup Model for EMF Compare's Git commands</i>. Then click 
			<i>Next &gt;</i>.
		</p>
		<p>
			<img align="middle" title="Setup Model for EMF Compare's Git commands wizard" alt="Setup Model for EMF Compare's Git commands wizard" border="0" src="./../images/EMF_Compare_GitPGM_NewWizard_01.png"/>
		</p>
		<p>The first page of the wizard asks you to select the project that will contain the setup model, and name that setup model. Then click 
			<i>Next &gt;</i>.
		</p>
		<p>
			<img align="middle" title="Setup Model for EMF Compare's Git commands wizard" alt="Setup Model for EMF Compare's Git commands wizard" border="0" src="./../images/EMF_Compare_GitPGM_NewWizard_02.png"/>
		</p>
		<p>The last page of the wizard asks you to set:</p>
		<ul>
			<li>The model's root object name.</li>
			<li>The workspace location (absolute or relative to the setup file). If you select the 
				<i>Default</i> checkbox, a workspace will be created in the temporary folder of your system.
			</li>
			<li>The installation location (absolute or relative to the setup file). If you select the 
				<i>Default</i> checkbox, the Eclipse environment will be created in the temporary folder of your system.
			</li>
			<li>The projects to import in the workspace. You have to import in the workspace all project holding 
				<a href="./../developer/logical-model.html#What_is_a_logical_model_.3F" title="./../developer/logical-model.html#What_is_a_logical_model_.3F">interconnected models</a> in the git command you want to execute. The 
				<i>Import All Projects found In Current Repository</i> checkbox is selected by default. If you unchecked it, you will have to specify in the setup model which projects you want to import.
			</li>
		</ul>
		<p>Once all parameters have been set, click 
			<i>Finish</i>.
		</p>
		<p>
			<img align="middle" title="Setup Model for EMF Compare's Git commands wizard" alt="Setup Model for EMF Compare's Git commands wizard" border="0" src="./../images/EMF_Compare_GitPGM_NewWizard_03.png"/>
		</p>
		<p>Once created, you will able to modify the setup model. You can also create a setup model file from scratch if you prefer. This setup model can contains:</p>
		<ul>
			<li>The path (absolute or relative to the setup file) where the workspace will be created. It corresponds to a 
				<i>Variable task</i> in the setup model editor. To create a 
				<i>Variable task</i>, right-click on the 
				<i>Project element</i> (the root element) and then select 
				<i>New Child &gt; Variable</i>. In the Properties View, you have to fill the 
				<i>Name</i> field with the value "workspace.location" and the 
				<i>Value</i> field with the path. If you don't provide such 
				<i>Variable task</i> in your setup model, a workspace will be created in the temporary folder of your system.
			</li>
		</ul>
		<ul>
			<li>The path (absolute or relative to the setup file) where the Eclipse environment will be provisioned. To create an 
				<i>Variable task</i>, right-click on the 
				<i>Project element</i> (the root element) and then select 
				<i>New Child &gt; Variable</i>. In the Properties View, you have to fill the 
				<i>Name</i> field with the value "installation.location" and the 
				<i>Value</i> field with the path. If you don't provide such 
				<i>Variable task</i> in your setup model, the Eclipse environment will be created in the temporary folder of your system.
			</li>
		</ul>
		<ul>
			<li>The paths (absolute or relative to the setup file) of the projects involved in the git command to execute. These projects will be imported in the workspace. First, you have to create a 
				<i>Projects Import task</i>. Right-click on the root element and then select 
				<i>New Child &gt; Projects Import</i>. Then, right-click on the newly created 
				<i>Projects Import task</i> and then select 
				<i>New Child &gt; Source Locator</i>. In the Properties View, you have to fill the 
				<i>Root Folder</i> field with the path of the project to import. If you don't give any projects, then all projects found in the git repository will be imported in the workspace. In the example below, two projects will be imported: 
				<i>/your/project/location</i> and 
				<i>/another/project/location</i>. Note that the 
				<i>Locate Nested Projects</i> allows to import every projects found under the given location."
			</li>
		</ul>
		<p>
			<img align="middle" title="Setup Model for EMF Compare's Git commands wizard" alt="Setup Model for EMF Compare's Git commands wizard" border="0" src="./../images/EMF_Compare_GitPGM_Edit_01.png"/>
		</p>
		<ul>
			<li>The additional plugins to install in the provisioned Eclipse environment. By default, only EMF Compare and EGit are provisioned in the Eclipse environment because it is the minimum and mandatory set of plugins required to execute the git command. But, you may have to add additionnal set of plugins/features. For example, you might need GMF for merging diagrams, UML2 or any specific metamodel implementation, Papyrus, etc... To do that, you have to create a 
				<i>P2 Director task</i>. Right-click on the root element and then select 
				<i>New Child &gt; P2 Director</i>. Then, right-click on the newly created 
				<i>P2 Director task</i> and then select 
				<i>New Child &gt; Repository</i> to add a new repository or 
				<i>New Child &gt; Requirement</i> to add a new plugin/feature. In the example below, the repository 
				<i>
					<a href="http://download.eclipse.org/releases/luna/201406250900">http://download.eclipse.org/releases/luna/201406250900</a>
				</i> allows to add 
				<i>org.eclipse.uml2.feature.group</i> and 
				<i>org.eclipse.papyrus.sdk.feature.feature.group</i> (UML2 and Papyrus). The repository 
				<i>
					<a href="http://download.eclipse.org/modeling/emf/compare/updates/nightly/latest/">http://download.eclipse.org/modeling/emf/compare/updates/nightly/latest/</a>
				</i> has been added. It allows to add the 
				<i>org.eclipse.emf.compare.uml2.feature.group</i> and 
				<i>org.eclipse.emf.compare.diagram.papyrus.feature.group</i> features (EMF compare's extensions to handle UML2 models and Papyrus Diagrams).
			</li>
		</ul>
		<p>
			<img align="middle" title="Setup Model for EMF Compare's Git commands wizard" alt="Setup Model for EMF Compare's Git commands wizard" border="0" src="./../images/EMF_Compare_GitPGM_Edit_02.png"/>
		</p>
		<p>Please visit 
			<a href="http://www.eclipse.org/oomph">Oomph website</a> for more details about Oomph.
		</p>
		<p>You can find an example of setup model file for EMF compare's Git commands here: 
			<a href="http://git.eclipse.org/c/emfcompare/org.eclipse.emf.compare-cli.git/tree/examples/SetupExamples">Setup Example</a>
			This example contains a workspace location to edit, an installation location to edit, and additional plugins to take into account for the git command to execute. These additional plugins are Papyrus, UML2, GMF, and EMF Compare extensions.
		</p>
		<h2 id="Git_diff_command_with_models_:_git_logicaldiff">Git diff command with models : git logicaldiff</h2>
		<p>The logicaldiff command is the "models compatible" version of the git diff command. To see a full description of the git diff command, please visit 
			<a href="http://git-scm.com/docs/git-diff">http://git-scm.com/docs/git-diff</a>.
		</p>
		<p>The command is specified as below:</p>
		<p><span style="background:#dcdcdc">
			git logicaldiff [--git-dir 
			<i>&lt;path&gt;</i>] 
			<i>&lt;setup&gt;</i> 
			<i>&lt;commit&gt;</i> [
			<i>&lt;commit&gt;</i>] [-- 
			<i>&lt;path&gt;</i>]
</span>
		</p>
		<p>To see the changes between a revision and the HEAD revision, you should omit the second commit.</p>
		<p><span style="background:#dcdcdc">
			git logicaldiff [--git-dir 
			<i>&lt;path&gt;</i>] 
			<i>&lt;setup&gt;</i> 
			<i>&lt;commit&gt;</i> [--] [
			<i>&lt;path&gt;</i>...]
</span>
		</p>
		<p>In all cases, 
			<i>&lt;commit&gt;</i>  can refers to a branch name or a commit id.
			In all cases, [-- 
			<i>&lt;path&gt;</i>] option allows to filter the diff command only on files that match the &lt;path&gt;.
			In all cases, [--git-dir 
			<i>&lt;path&gt;</i>] option allows to specify a git repository (if the command is not run inside a repository)
		</p>
		<h3 id="Others_options_available">Others options available</h3>
		<p><span style="background:#dcdcdc"> [--show-stack-trace] </span></p>
		<p>Use this option to display java stack trace in console on error.</p>
		<p><span style="background:#dcdcdc"> [--help (or -h)] </span></p>
		<p>Dispays help for this command.</p>
		<h2 id="Git_merge_command_with_models_:_git_logicalmerge">Git merge command with models : git logicalmerge</h2>
		<p>The logicalmerge command is the "models compatible" version of the git merge command. To see a full description of the git merge command, please visit 
			<a href="http://git-scm.com/docs/git-merge">http://git-scm.com/docs/git-merge</a>.
		</p>
		<p>The command is specified as below:</p>
		<p><span style="background:#dcdcdc">
			git logicalmerge [--git-dir 
			<i>&lt;path&gt;</i>] 
			<i>&lt;setup&gt;</i> 
			<i>&lt;commit&gt;</i>
</span>
		</p>
		<p>Assume the following history exists and the current branch is master:</p>
		<p><span style="background:#dcdcdc"></p>
		<pre>        A---B---C      topic  
       /                      
  D---E---F---G        master 
</pre>
		<p></span></p>
		<p>Then git logicalmerge mySetupModel.setup topic will replay the changes made on the topic branch since it diverged from master (i.e., E) until its current commit &#169; on top of master, and record the result in a new commit along with the names of the two parent commits and a log message from the user describing the changes.</p>
		<p><span style="background:#dcdcdc"></p>
		<pre>        A---B---C       topic  
       /         \             
  D---E---F---G---H     master 
</pre>
		<p></span></p>
		<p>You can also replace the topic branch name by his commit id: </p>
		<p><span style="background:#dcdcdc">
			git logicalmerge 
			<i>mySetupModel.setup</i> 
			<i>87ad5ff</i>
</span>
		</p>
		<p>In all cases, 
			<i>&lt;commit&gt;</i>  can refers to a branch name or a commit id.
			In all cases, [--git-dir 
			<i>&lt;path&gt;</i>] option allows to specify a git repository (if the command is not run inside a repository)
		</p>
		<h3 id="Others_options_available_2">Others options available</h3>
		<p><span style="background:#dcdcdc"> [-m message] </span></p>
		<p>Set the commit message to be used for the merge commit (in case one is created).</p>
		<p><span style="background:#dcdcdc"> [--show-stack-trace] </span></p>
		<p>Use this option to display java stack trace in console on error.</p>
		<p><span style="background:#dcdcdc"> [--help (or -h)] </span></p>
		<p>Dispays help for this command.</p>
		<h2 id="Git_mergetool_command_with_models_:_git_logicalmergetool">Git mergetool command with models : git logicalmergetool</h2>
		<p>The logicalmergetool command is the "models compatible" version of the git mergetool command. To see a full description of the git mergetool command, please visit 
			<a href="http://git-scm.com/docs/git-mergetool">http://git-scm.com/docs/git-mergetool</a>.
		</p>
		<p>Here is the constructions allowed for the git logicalmergetool:</p>
		<p><span style="background:#dcdcdc">
			git logicalmergetool 
			<i>&lt;setup&gt;</i>
</span>
		</p>
		<p>Run logical merge conflict resolution tools to resolve logical merge conflicts. In our case, it will launch an Eclipse platform with all the tools needed to resolve the conflict(s) induced by the merge. To do so, in the Eclipse environment, select the conflicting file(s) and open the contextual menu 
			<i>Team &gt; Merge Tool</i>. Once the conflict has been resolved, add the file to the index (staged area). And then commit.
		</p>
		<h2 id="Git_cherry-pick_with_models_:_git_logicalcherry-pick">Git cherry-pick with models : git logicalcherry-pick</h2>
		<p>The 
			<i>logicalcherry-pick</i> command is the logical version of the git cherry pick command. To see a full description of the git cherry-pick command, please visit 
			<a href="http://git-scm.com/docs/git-cherry-pick">http://git-scm.com/docs/git-cherry-pick</a>.
		</p>
		<p>The command is specified as below:</p>
		<p><span style="background:#dcdcdc">
			git logicalcherry-pick 
			<i>&lt;setup&gt;</i> 
			<i>&lt;commit&gt;...</i>
</span>
		</p>
		<p>Assume the following history exists and the current branch is 
			<i>master</i>:<code><pre>
				  A---B---C topic
				 /
		</p>
		<pre>   D---E---F---G master,HEAD</pre></code>
</pre>
		<p>Then <code>git logicalcherry-pick mySetupModel.setup A B C</code> will pick A,B and C commits on top of the current HEAD (in the order defined by the command).<code><pre>
				  A---B---C topic
				 /</p>
		<pre>   D---E---F---G---A---B---C master,HEAD</pre></code>
</pre>
		<p>In all cases, 
			<i>&lt;commit&gt;</i>  can refers to a branch name or a commit id.
		</p>
		<h3 id="Conflicts">Conflicts</h3>
		<h4 id="Resolve_a_conflict">Resolve a conflict</h4>
		<p>If cherry-picking a commit introduces a conflict, you will have to choose how to handle it. The first option is to resolve it by using:</p>
		<p><span style="background:#dcdcdc">
			git logicalmergetool 
			<i>&lt;setup&gt;</i>
</span>
		</p>
		<p>It opens an Eclipse platform in which you will be able to merge the differences using the merge tool (see 
			<a href="#Git_mergetool_command_with_models_:_git_logicalmergetool">Git mergetool command with models : git logicalmergetool</a>). Once you have resolved all the conflicts, add the related file to the index and close your platform. To do so you can:
		</p>
		<ul>
			<li>Use the contextual menu "Team &gt; Add to Index" </li>
		</ul>
		<dl>
			<dd>
				<img border="0" src="../images/AddToIndexMenu.png"/>
			</dd>
		</dl>
		<ul>
			<li>Drag and drop the files from the "Unstaged changes" area to the "Staged changes" area in the "Git Staging" view . </li>
		</ul>
		<dl>
			<dd>
				<img border="0" src="../images/StagedChanges.png"/>
			</dd>
		</dl>
		<p>By the way, you can notice in the top right corner there is an 
			<b>Abort</b>,
			<b>Skip Commit</b> and 
			<b>Continue</b> button. This simply means that there is a interactive rebase in progress. Indeed, in EGit, cherry-picking commits is equivalent to doing an interactive rebase with only pick actions. From now on, you can either choose to continue with in UI mode (that is to say using those buttons) or go back to command line tool by closing the Eclipse platform. This documentation only describes the mechanism of the command line tool.
		</p>
		<h4 id="Continue">Continue</h4>
		<p>Once you have resolved all the conflicts, please hit:</p>
		<p><span style="background:#dcdcdc">
			git logicalcherry-pick 
			<i>&lt;setup&gt;</i> 
			<i>--continue</i>
</span>
		</p>
		<p>This command will continue an in going cherry-pick. Be careful you have to resolve all conflicts before using this command otherwise you might get the following message:
<code><pre>			fatal: Some files are in conflict:
				project/file.ecore
				project/file2.ecore
			hint: You must edit all merge conflicts and then
			hint: mark them as resolved using git add.</pre></code></p>
		<p>There is a major diffference with the merge workflow. While cherry-picking you should not commit by yourself the files but only add them to the index. If you do, you might receive the following message when you use the 
			<i>--continue</i> option.
<code>
		</p>
		<pre>
No changes detected

If there is nothing left to stage, chances are that something
else already introduced the same changes; you might want to skip
this patch using git logicalcherry-pick --quit
</pre>
		<p></code></p>
		<p>You can simply use the 
			<i>--quit</i> option to continue your cherry-pick operation (see 
			<a href="#Quit">Quit option</a>).
		</p>
		<h3 id="Abort">Abort</h3>
		<p>A second solution while encountering a conflict is to abort the whole cherry-pick operation. To do so please hit:</p>
		<p><span style="background:#dcdcdc">
			git logicalcherry-pick 
			<i>&lt;setup&gt;</i> 
			<i>--abort</i>
</span>
		</p>
		<p>It reverts all the commits already cherry-picked to retrieve the state before the cherry-pick command.</p>
		<h3 id="Quit">Quit</h3>
		<p>The last solution you have while facing a conflict would be to "skip" the current commit and go on with the remaining commits. To do so please hit:</p>
		<p><span style="background:#dcdcdc">
			git logicalcherry-pick 
			<i>&lt;setup&gt;</i> ''--quit'
</span>
		</p>
		<p>The 
			<i>--quit</i> option is quite different than the 
			<i>--quit</i> option of the cherry-pick command in CGit. Instead of quitting an in going cherry-pick, it skips the current commit. Indeed, as mentionned above, in EGit a cherry-pick is replaced by a interactive rebase. This is why the 
			<i>--quit</i> option is more like the 
			<i>--skip</i> option of an interactive rebase.
		</p>
		<h3 id="Others_options_available_3">Others options available</h3>
		<p><span style="background:#dcdcdc"> [--git-dir 
			<i>&lt;path&gt;</i>]  </span>
		</p>
		<p>To specify the .git folder of a repository. This can be use to execute a command outside a git repository.</p>
		<p><span style="background:#dcdcdc"> [--show-stack-trace] </span></p>
		<p>Use this option to display java stack trace in console on error.</p>
		<p><span style="background:#dcdcdc"> [--help (or -h)] </span></p>
		<p>Dispay help for this command.</p>
		<p><span style="background:#dcdcdc"> [--debug (or -d)] </span></p>
		<p>Give the opportinity to connect a remote debugger to the logical cherry-pick application (using port 8123).</p>
		<h2 id="Git_rebase_with_models_:_git_logicalrebase">Git rebase with models : git logicalrebase</h2>
		<p>The 
			<i>logicalrebase</i> command is the logical version of the git rebase command. To see a full description of the git rebase command, please visit 
			<a href="http://git-scm.com/docs/git-rebase">http://git-scm.com/docs/git-rebase</a>.
		</p>
		<p>The command is specified as below:</p>
		<p><span style="background:#dcdcdc">
			git logicalrebase 
			<i>[&lt;upstream&gt;]</i> 
			<i>[&lt;branch&gt;]</i>
</span>
		</p>
		<p><span style="background:#dcdcdc"> [&lt;upstream&gt;]</span></p>
		<p>Optional parameter used to reference the target commit on top of which the branch 
			<i>[&lt;branch&gt;]</i> will be rebased. It can either be the name of a branch, the id of a commit or the name of tag. If only one parameter is given, the software will consider it to be the upstream parameter and set 
			<i>[&lt;branch&gt;]</i> to 
			<i>HEAD</i>.
		</p>
		<p>Assume the following history exists and the current branch is 
			<i>topic</i>:<code><pre>
				       A---B---C topic, HEAD
				      /
		</p>
		<pre>   D---E---F---G master</pre></code>
</pre>
		<p>Then <code>git rebase mySetupModel.setup master</code> will rebase the branch 
			<i>topic</i> on top of 
			<i>master</i>.<code><pre>
		</p>
		<pre>   D---E---F---G---A---B---C master, topic, HEAD</pre></code>
</pre>
		<p><span style="background:#dcdcdc"> [&lt;branch&gt;]</span></p>
		<p>Optional parameter used to reference what is going to be rebased. It can either be the name of a branch, the id of a commit or the name of tag.</p>
		<p>For example, assume the following history exists and the current branch is 
			<i>master</i>:<code><pre>
				       A---B---C topic
				      /
		</p>
		<pre>   D---E---F---G master, HEAD</pre></code>
</pre>
		<p>Then <code>git rebase mySetupModel.setup master topic</code> will checkout the branch 
			<i>topic</i> and the rebase it on top of 
			<i>master</i>.<code><pre>
		</p>
		<pre>   D---E---F---G---A---B---C master, topic, HEAD</pre></code>
</pre>
		<p>Hint to remember the parameter order:</p>
		<ul>
			<li><code>git rebase mySetupModel.setup master</code> = Rebase on 
				<i>master</i> the HEAD
			</li>
			<li><code>git rebase mySetupModel.setup master topic</code> = Rebase on 
				<i>master</i> the branch 
				<i>topic</i>
			</li>
			<li><code>git rebase mySetupModel.setup master topic</code> equivalent to <code>git rebase mySetupModel.setup master</code> if HEAD is on same commit than topic.</li>
		</ul>
		<p>If you do not specify any branch, <code>git rebase mySetupModel.setup</code> will try to rebase the current branch on top of its remote tracking branch (see branch.&lt;name&gt;.remote and branch.&lt;name&gt;.merge options in 
			<a href="http://git-scm.com/docs/git-config" title="http://git-scm.com/docs/git-config">git-config</a>).
		</p>
		<p>For example, assume the following history exists. The current branch is 
			<i>master</i> which tracks the remote branch 
			<i>origin/master</i>:<code><pre>
		</p>
		<pre>          A---B---C origin/master
        /
   D---E---F---G master, HEAD</pre></code>
</pre>
		<p>Then <code>git rebase mySetupModel.setup</code> will rebase 
			<i>master</i> on top of 
			<i>origin/master</i>.<code><pre>
		</p>
		<pre>   D---E---A---B---C---F---G master, origin/master, HEAD</pre></code>
</pre>
		<h3 id="Conflicts_2">Conflicts</h3>
		<h4 id="Resolve_a_conflict_2">Resolve a conflict</h4>
		<p>If rebasing a commit introduces a conflict, you will have to choose how to handle it. The first option is to resolve it by using:</p>
		<p><span style="background:#dcdcdc">
			git logicalmergetool 
			<i>&lt;setup&gt;</i>
</span>
		</p>
		<p>It opens an Eclipse platform in which you will be able to merge the differences using the merge tool (see 
			<a href="#Git_mergetool_command_with_models_:_git_logicalmergetool">Git mergetool command with models : git logicalmergetool</a>). Once you have resolved all the conflicts, add the related file to the index and close your platform. To do so you can:
		</p>
		<ul>
			<li>Use the contextual menu "Team &gt; Add to Index" </li>
		</ul>
		<dl>
			<dd>
				<img border="0" src="../images/AddToIndexMenu.png"/>
			</dd>
		</dl>
		<ul>
			<li>Drag and drop the files from the "Unstaged changes" area to the "Staged changes" area in the "Git Staging" view . </li>
		</ul>
		<dl>
			<dd>
				<img border="0" src="../images/StagedChanges.png"/>
			</dd>
		</dl>
		<p>By the way, you can notice in the top right corner there is an 
			<b>Abort</b>,
			<b>Skip Commit</b> and 
			<b>Continue</b> button. This simply means that there is a interactive rebase in progress. Indeed, in EGit, even a normal rebase operation is equivalent to doing an interactive rebase with only pick actions. From now on, you can either choose to continue with in UI mode (that is to say using those buttons) or go back to command line tool by closing the Eclipse platform. This documentation only describes the mechanism of the command line tool.
		</p>
		<h4 id="Continue_2">Continue</h4>
		<p>Once you have resolved all the conflicts, please hit:</p>
		<p><span style="background:#dcdcdc">
			git logicalrebase 
			<i>&lt;setup&gt;</i> 
			<i>--continue</i>
</span>
		</p>
		<p>This command will continue an in going rebase. Be careful you have to resolve all conflicts before using this command otherwise you might get the following message:
<code><pre>			fatal: Some files are in conflict:
				project/file.ecore
				project/file2.ecore
			hint: You must edit all merge conflicts and then
			hint: mark them as resolved using git add.</pre></code></p>
		<p>There is a major diffference with the merge workflow. While rebasing you should not commit by yourself the files but only add them to the index. If you do, you might receive the following message when you use the 
			<i>--continue</i> option.
<code>
		</p>
		<pre>
No changes - did you forget to use 'git add'?

If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git logicalrebase --continue".
If you prefer to skip this patch, run "git logicalrebase --skip" instead.
To check out the original branch and stop rebasing, run "git logicalrebase --abort".
</pre>
		<p></code></p>
		<p>You can simply use the 
			<i>--skip</i> option to continue your rebase operation (see 
			<a href="#Skip">Skip option</a>).
		</p>
		<h3 id="Abort_2">Abort</h3>
		<p>A second solution while encountering a conflict is to abort the whole rebase operation. To do so please hit:</p>
		<p><span style="background:#dcdcdc">
			git rebase 
			<i>&lt;setup&gt;</i> 
			<i>--abort</i>
</span>
		</p>
		<h3 id="Skip">Skip</h3>
		<p>The last solution you have while facing a conflict, would be to "skip" the current commit and go on with the remaining commits to rebase. To do so please hit:</p>
		<p><span style="background:#dcdcdc">
			git rebase 
			<i>&lt;setup&gt;</i> 
			<i>--quit</i>
</span>
		</p>
		<h3 id="Others_options_available_4">Others options available</h3>
		<p><span style="background:#dcdcdc"> [--git-dir 
			<i>&lt;path&gt;</i>]  </span>
		</p>
		<p>To specify the .git folder of a repository. This can be use to execute a command outside a git repository.</p>
		<p><span style="background:#dcdcdc"> [--show-stack-trace] </span></p>
		<p>Use this option to display java stack trace in console on error.</p>
		<p><span style="background:#dcdcdc"> [--help (or -h)] </span></p>
		<p>Dispay help for this command.</p>
		<h2 id="Git_pull_with_models_:_git_logicalpull">Git pull with models : git logicalpull</h2>
		<p>The 
			<i>logicalpull</i> command is the logical version of the git pull command. To see a full description of the git pull command, please visit 
			<a href="http://git-scm.com/docs/git-pull">http://git-scm.com/docs/git-pull</a>.
		</p>
		<p>The command is specified as below:</p>
		<p><span style="background:#dcdcdc">
			git logicalpull 
			<i>&lt;setup&gt;</i>
</span>
		</p>
		<p>Assume the following history exists and the current branch is master:</p>
		<p><span style="background:#dcdcdc"></p>
		<pre>        A---B---C      master on origin  
       /                                 
  D---E---F---G        master            
      ^                                  
      origin/master in your repository
</pre>
		<p></span></p>
		<p>Basically a 
			<i>git logicalpull</i> is a 
			<i>git fetch</i> followed by a 
			<i>git logicalmerge</i> of the fetched branch.
			So 
			<i>git logicalpull mySetupModel.setup</i> will fetch and replay the changes from the remote 
			<i>master</i> branch since it diverged from the local 
			<i>master</i> (i.e., 
			<i>E</i>) until its current commit (
			<i>C</i>) on top of 
			<i>master</i>, and record the result in a new commit along with the names of the two parent commits and a log message from the user describing the changes.
		</p>
		<p><span style="background:#dcdcdc"></p>
		<pre>        A---B---C       origin/master
       /         \             
  D---E---F---G---H     master 
</pre>
		<p></span></p>
		<p>If the command introduces conflicts, you will have to launch the 
			<a href="#Git_mergetool_command_with_models_:_git_logicalmergetool">git logicalmergetool</a> to resolve them.
		</p>
		<h3 id="Others_options_available_5">Others options available</h3>
		<p><span style="background:#dcdcdc"> [--show-stack-trace] </span></p>
		<p>Use this option to display java stack trace in console on error.</p>
		<p><span style="background:#dcdcdc"> [--help (or -h)] </span></p>
		<p>Dispays help for this command.</p>
		<h2 id="Known_bugs_.26_limitations">Known bugs &amp; limitations</h2>
		<h3 id="First_use">First use</h3>
		<p>The first time the product is launched a stack trace is displayed in the console(see below). This error does not prevent the product to be used however it may be misleading for users. After the first launch this error disappears.</p>
		<pre class="source-java">org.osgi.framework.BundleException: Could not resolve module: org.eclipse.equinox.ds [2]
  Unresolved requirement: Import-Package: org.eclipse.equinox.internal.util.event; version="1.0.0"

	at org.eclipse.osgi.container.Module.start(Module.java:434)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1562)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
	at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:242)
	at org.eclipse.osgi.container.Module.doStart(Module.java:571)
	at org.eclipse.osgi.container.Module.start(Module.java:439)
	at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:172)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:393)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:412)
	at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:318)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)

</pre>
		<p>A bug has been reported concerning this error: 
			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=453432">https://bugs.eclipse.org/bugs/show_bug.cgi?id=453432</a>
		</p>
		<h3 id="Merge_tool">Merge tool</h3>
		<p>The merge tool doesn't work correctly on logical models. the problem is known and a patch has been made to fix it.
			Since the problem concerns EGit &amp; EMF Compare, we need to stay EGit team to integrate the following contribution:</p>
		<ul>
			<li>
				<a href="https://git.eclipse.org/r/#/c/36026/">https://git.eclipse.org/r/#/c/36026/</a>
			</li>
		</ul>
		<p>Once integrated, the following EMF Compare contributions will be integrated too:</p>
		<ul>
			<li>
				<a href="https://git.eclipse.org/r/#/c/35541/">https://git.eclipse.org/r/#/c/35541/</a>
			</li>
			<li>
				<a href="https://git.eclipse.org/r/#/c/36025/">https://git.eclipse.org/r/#/c/36025/</a>
			</li>
		</ul>
		<p>Then, the merge tool will work correctly.</p>
		<h3 id="Cherry-pick_empty_commit">Cherry-pick empty commit</h3>
		<p>If you try to cherry-pick a commit that introduces changes that already belong to the worktree, the operation may stop on a dirty state. For example, if you have cherry-picked a commit that belongs to the ancestor tree of HEAD. The characteristics of this dirty state are:</p>
		<ol>
			<li>Wrong position of HEAD.</li>
			<li>Some modified files in the working tree (use 
				<i>git status</i> command).
			</li>
		</ol>
		<p>This problem comes from a EGit/JGit problem (see 
			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=451159" title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=451159">bug 451159</a>).
			A workaround would be to find the previous position of HEAD using the 
			<i>git reflog</i> command. Then, use the 
			<i>git reset --hard {$CommitId}</i>. This will reset HEAD to its previous position (
			<i>Use with caution</i>).
		</p>
	</body>
</html>