Intelligent and Interactive Systems

User Tools

Site Tools


collab: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
collab:git [2011/07/23 12:05]
c7031019 [ssh config] grammar
collab:git [2018/09/03 19:35] (current)
Line 1: Line 1:
 ====== Git ====== ​ ====== Git ====== ​
-Git is an extremely powerful and flexible revision control system, and using it effectively requires adherence to conventions. 
  
-===== Usage Policy =====+Git is an extremely powerful and flexible revision control system, and using it effectively requires adherence to conventions.
  
-Here is the proposal; comments and adjustments are welcome.+===== IIS Repository Policy =====
  
   * A distinct tree / a repository - is maintained for each independent (software, paper, ...) project.   * A distinct tree / a repository - is maintained for each independent (software, paper, ...) project.
-  * For each project, the mainline (master) tree is hosted ​here at the iis uibk servers.+  * For each repository, the mainline (master) tree is hosted ​on the git.uibk.ac.at server.
   * Contributors develop locally and maintain their own trees, and push (or request to pull) only generally-useful,​ tried-and-proven patch sets into the main tree.   * Contributors develop locally and maintain their own trees, and push (or request to pull) only generally-useful,​ tried-and-proven patch sets into the main tree.
   * Where appropriate,​ multiple external developers can exchange patches among each others before committing to the mainline.   * Where appropriate,​ multiple external developers can exchange patches among each others before committing to the mainline.
Line 13: Line 12:
  
  
 +Please adhere to basic guidelines for [[git-usage]].
 ===== Basic Workflow ===== ===== Basic Workflow =====
 +
  
 {{ :​collab:​git-usage.png?​300|git std. usage}} {{ :​collab:​git-usage.png?​300|git std. usage}}
Line 19: Line 20:
 Retrieve an %%IIS%% Git tree for you to work on: Retrieve an %%IIS%% Git tree for you to work on:
  
-  git clone ssh://iis.uibk.ac.at:2222/projects/​git/​PROJECTNAME+  git clone https://git.uibk.ac.at/​iis-XXXX/​PROJECTNAME 
 +   
 +''​PROJECTNAME''​ will typically include a path portion.
  
 Prepend the hostname with ''​USERNAME@''​ if your Git username does not match your local username. Prepend the hostname with ''​USERNAME@''​ if your Git username does not match your local username.
  
-Now make your edits. ​ To see the status of your files with respect to your repository, do ''​git status''​.+Now make your edits. ​ To see the status of your files with respect to your repository, do
 + 
 +  ​git status
  
 For each reasonable unit of changes, tell Git that you want to keep it, and then commit it to your local tree: For each reasonable unit of changes, tell Git that you want to keep it, and then commit it to your local tree:
Line 36: Line 41:
 At this point you are free to delete your local Git tree. At this point you are free to delete your local Git tree.
  
-In the meantime, you can retrieve updates from the %%IIS%% master tree with ''​git pull''​.+In the meantime, you can retrieve updates from the %%IIS%% master tree with
 + 
 +  ​git pull
  
 For more information,​ see the [[http://​gitref.org/​|Git Reference]] and [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​everyday.html|Everyday Git]]. For more information,​ see the [[http://​gitref.org/​|Git Reference]] and [[http://​www.kernel.org/​pub/​software/​scm/​git/​docs/​everyday.html|Everyday Git]].
 +
 +A ''​git pull''​ will automatically merge any edits other people have pushed in the meantime. ​ However, this will fail if such edits happened in the same section of a file as the changes you are trying to push.  In this case, ''​git pull''​ will signal a merge conflict, which needs to be resolved by hand.
 +
 +[[http://​www.rosipov.com/​blog/​use-vimdiff-as-git-mergetool/​|Here]] you may find a nice tutorial on how you can do merging by using vimdiff (you should be able to use vim for using it).
 +
 +
 +
 +
 +===== Understanding Git =====
 +
 +[[http://​eagain.net/​articles/​git-for-computer-scientists/​|Here]] is an excellent and brief explanation of Git's internal representation and how it supports user-level interactions. ​ Very useful to understand Git.
 +
 +
 +Two key distinctions from Subversion (SVN) are
 +
 +  * the //staging area// ("​index"​) where you define the changes to be commited. (SVN commits directly from the working directory.)
 +  * the //​distributed//​ nature. Commits are done to the local clone of the repository. Sharing your changes requires explicit action, e.g., ''​git push''​. (SVN commits directly to a central repository.)
  
  
 ===== More Advanced Hints ===== ===== More Advanced Hints =====
  
-==== git revisions ​====+==== Git Revisions ​====
  
 The following diagram is an example '​commit'​ view of a master tree (w.o. branches). The following diagram is an example '​commit'​ view of a master tree (w.o. branches).
Line 49: Line 73:
  
 {{ :​collab:​git_revisions_without_branches.png?​400|git revisions wo branches}} {{ :​collab:​git_revisions_without_branches.png?​400|git revisions wo branches}}
-==== Creating a New Git Project ==== 
  
-To create a shared Git repository, [[intranet:​systems:​docs:​git-ssh#​creating_a_shared_git_repository|initialize it on the lab server]]. ​ Then, [[#​basic_workflow|clone and populate]] it.+  ​
  
-To create your personal Git repository for your own, local use only: +==== Textmode Tool For Git ====
- +
-  cd PROJECTROOT +
-  git init --shared +
-  git add . +
-  git commit -m "​initial import"​ +
- +
-===== textmode tool for git ====+
 a nice (commandline) tool for viewing commits, logs, diffs and other changes is tig. to install tig on a debian based machine a nice (commandline) tool for viewing commits, logs, diffs and other changes is tig. to install tig on a debian based machine
-  ​aptitude ​install tig+  ​apt install tig
 change into the git working directory and start change into the git working directory and start
   tig   tig
  
-===== Patches ​=====+==== Patches ====
  
 Generate Patches and use Peer-to-peer patch exchanges ((example taken from http://​linuxwireless.org/​en/​developers/​Documentation/​git-guide)) Generate Patches and use Peer-to-peer patch exchanges ((example taken from http://​linuxwireless.org/​en/​developers/​Documentation/​git-guide))
Line 82: Line 98:
  
  
-==== ssh config ​====+==== ssh Config ​====
  
 You could also create an ssh config file in your home-directory to shorten the git commands: You could also create an ssh config file in your home-directory to shorten the git commands:
Line 90: Line 106:
 Host iis Host iis
     HostName iis.uibk.ac.at     HostName iis.uibk.ac.at
-    Port 2222+    Port 22
     User username     User username
     #​IdentityFile ​ ~/​.ssh/​PRIVATEKEYFILE ​     #​IdentityFile ​ ~/​.ssh/​PRIVATEKEYFILE ​
Line 100: Line 116:
   git clone ssh://​iis/​projects/​git/​projectname   git clone ssh://​iis/​projects/​git/​projectname
  
 +{{tag>​git Usage}}
  
  
collab/git.1311415502.txt.gz · Last modified: 2018/09/03 14:57 (external edit)