User Tools

Site Tools


wiki:development:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
wiki:development:git [2011/08/09 08:05]
morty [Maintenance]
wiki:development:git [2011/11/02 21:46]
sunweaver wiki:git renamed to wiki:development:git (Namespace cleanup)
Line 102: Line 102:
 ; do git clone git://code.x2go.org/$REP; done ; do git clone git://code.x2go.org/$REP; done
 </code> </code>
 +
 +
  
 ===== Maintenance ===== ===== Maintenance =====
Line 152: Line 154:
  
 Unused feature, may come later... Unused feature, may come later...
 +
 +
 +===== Backyard =====
 +
 +<note>Is this really needed??!</note>
 +
 +==== Reverting Merge Commits ====
 +
 +If you forget to run ''git-pull'' before modifying code files you will run into merge problems when committing your changes.
 +
 +There is nothing bad about merge commits apart from the fact that the X2go Git system won't allow them being pushed to the server :-/.
 +
 +Thus, you probably want to avoid merge commits right from the beginning. However, from time to time it occurs that you crunch your Git log with a merge commit. This is how such a thing can happen:
 +
 +  * change a file
 +  * commit it locally
 +  * push it to X2go Git
 +  * find that the push operation gets rejected :-(
 +  * then run ''git-pull'' instead
 +  * and then uuups... realize: the ''git-pull'' fetched in some code for the same file, I have just been working on...) -> you probably forgot to run a ''git-pull'' before starting to work on that particular file...
 +
 +One possible solution for this is //cherry-picking//. Here is an example (presuming that your are working on the master branch):
 +
 +<code>
 +# make a temporary backup copy of the master branch
 +$ git checkout -b master-bak-tmp
 +
 +# go back to master branch
 +$ git checkout master
 +
 +# and reset it to that refspec where local Git and server's Git were known to be still in sync
 +$ git reset --hard <last-refspec-known-to-be-identical-with-server>
 +
 +# then take a look at the log of your old local master branch
 +$ git log master-bak-tmp
 +
 +# now cherry-pick your local changes individually from the master-bak-tmp branch (where refspec-1 ... refspec-n are the commit hashes of each commit):
 +$ git cherry-pick <refspec-1>
 +$ git cherry-pick <refspec-2>
 +...
 +$ git cherry-pick <refspec-n>
 +
 +# finally drop the tmp backup of old master
 +$ git branch -D master-bak-tmp
 +</code>
 +
 +==== Pushing to X2go Git ====
 +
 +Whenever your local X2go Git project is in an acceptable state for the community, feel free to push the code to the X2go Git server:
 +
 +<code>
 +$ git push
 +</code>
 +
 +<note>
 +When working on master's HEAD do not wait __too__ long before pushing them to the server as it may happen that others work on master's HEAD as well.
 +
 +Keeping back code for too long can result in code conflicts (changes in the same code block of the same file by two different developers).
 +</note>
 +
 +The update scripts of X2go Git will shout warnings at you while pushing. These warnings relate to
 +
 +  * whitespaces found at the end of lines
 +  * tabs found in the file (for Python: no tabs, for Bash, Perl, C++, etc. tabs are wanted, so you can ignore these if not coding Python)
 +  * no \newline at end of file
 +
 +You may consider silencing those warnings before committing the next time...
  
  
  
wiki/development/git.txt ยท Last modified: 2020/05/28 22:43 by danger89