Git: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Description ==
<languages />
[[Category:Software]]
<translate>
== Description == <!--T:1-->
[https://en.wikipedia.org/wiki/Git Git] is a distributed, fast and secure source code management tool. The official Git website is [http://gitscm.org gitscm.org]. The Git software was initially created by  [http://en.wikipedia.org/wiki/Linus_Torvalds Linus Torvalds] for the Linux project and the current maintainer is [http://en.wikipedia.org/wiki/Junio_Hamano Junio Hamano]. The development of Git itself is performed on the  [https://git.wiki.kernel.org/index.php/Main_Page kernel.org] platform.
[https://en.wikipedia.org/wiki/Git Git] is a distributed, fast and secure source code management tool. The official Git website is [http://gitscm.org gitscm.org]. The Git software was initially created by  [http://en.wikipedia.org/wiki/Linus_Torvalds Linus Torvalds] for the Linux project and the current maintainer is [http://en.wikipedia.org/wiki/Junio_Hamano Junio Hamano]. The development of Git itself is performed on the  [https://git.wiki.kernel.org/index.php/Main_Page kernel.org] platform.


== Operating Principle ==
== Operating principle == <!--T:2-->
Contrary to older source code management tools, Git works in a distributed way. This means that developers do not depend on a central repository to commit their changes. Each Git repository contains the full history of the project. Each Git object (changeset, file, directory) is the leaf of a tree with multiple branches. Developing a project with Git is based on a model in which one branch corresponds to one feature. Many revisions of the feature may be archived before the branch gets merged with the main trunk. For a detailed explanation of branch development, we recommend reading [http://nvie.com/posts/a-successful-git-branching-model/ this page].
Contrary to older source code management tools, Git works in a distributed way. This means that developers do not depend on a central repository to commit their changes. Each Git repository contains the full history of the project. Each Git object (changeset, file, directory) is the leaf of a tree with multiple branches. Developing a project with Git is based on a model in which one branch corresponds to one feature. Many revisions of the feature may be archived before the branch gets merged with the main trunk. For a detailed explanation of branch development, we recommend reading [http://nvie.com/posts/a-successful-git-branching-model/ this page].


One especially interesting technique is ''cherry-picking'', which is essentially taking part of a branch and merging it with another one. [http://technosophos.com/content/git-cherry-picking-move-small-code-patches-across-branches This page] describes how to use this technique with Git.
<!--T:3-->
One especially interesting technique is ''cherry-picking'', which is essentially taking part of a branch and merging it with another one.  


== Basic usage ==
== Basic usage == <!--T:4-->
Generally, a project developer must be able to:
Generally, a project developer must be able to:


<!--T:5-->
# clone or create the repository;
# clone or create the repository;
# make changes;
# make changes;
Line 15: Line 20:
# push changes toward the original repository.
# push changes toward the original repository.


<!--T:6-->
Since Git is distributed, there may not be an authoritative repository.
Since Git is distributed, there may not be an authoritative repository.


== Summary of commands ==
== Summary of commands == <!--T:7-->
{| class="wikitable"  
{| class="wikitable"  
|+ Basic commands
|+ Basic commands
Line 55: Line 61:




<!--T:8-->
{| class="wikitable"  
{| class="wikitable"  
|+ Commands to explore changes
|+ Commands to explore changes
Line 80: Line 87:




<!--T:9-->
{| class="wikitable"  
{| class="wikitable"  
|+ Commands for branches, tags and remote repositories
|+ Commands for branches, tags and remote repositories
Line 102: Line 110:




<!--T:10-->
{| class="wikitable"  
{| class="wikitable"  
|+ Commands for patches
|+ Commands for patches
Line 118: Line 127:




<!--T:11-->
{| class="wikitable"  
{| class="wikitable"  
|+ Other commands
|+ Other commands
Line 136: Line 146:
|}
|}


== Creating or cloning a repository ==
== Creating or cloning a repository == <!--T:12-->
The first step usually is to create your own repository, or to clone an existing one.
The first step is usually to create your own repository, or to clone an existing one.


<!--T:13-->
To create a repository:
To create a repository:
{{Command| git init my-project}}
{{Command| git init my-project}}


<!--T:14-->
To clone a repository:
To clone a repository:
{{Command | git clone git://github.com/git/git.git}}
{{Command | git clone git://github.com/git/git.git}}


== Commiting a change ==
== Commiting a change == <!--T:15-->
When the repository is ready, you change directory and edit the file
When the repository is ready, you change directory and edit the file.
{{Commands
{{Commands
| cd my-project
| cd my-project
Line 152: Line 164:
}}
}}


When work is done, you add the file:
<!--T:16-->
When work is done, you add the file
{{Command| git add file.txt}}
{{Command| git add file.txt}}
and commit the change
and commit the change
{{Command| git commit }}
{{Command| git commit }}


It is then possible to push changes to the origin repository with:
<!--T:17-->
{{Command| git push origin master}}
It is then possible to push changes to the origin repository with
{{Command| git push origin main}}


In the above command, ''origin'' is the remote repository and ''master'' is the current branch that will be pushed.
<!--T:18-->
In the above command, ''origin'' is the remote repository and ''main'' is the current branch that will be pushed.


== Hosting Git repositories ==
You might have to use <tt>git push origin master</tt> for older git repositories.
== Hosting Git repositories == <!--T:19-->
[http://github.com GitHub] and [http://bitbucket.org Bitbucket] are two of the main Git repository hosting services. They are both available for commercial projects as well as free projects.
[http://github.com GitHub] and [http://bitbucket.org Bitbucket] are two of the main Git repository hosting services. They are both available for commercial projects as well as free projects.
</translate>

Latest revision as of 22:27, 8 July 2022

Other languages:

Description

Git is a distributed, fast and secure source code management tool. The official Git website is gitscm.org. The Git software was initially created by Linus Torvalds for the Linux project and the current maintainer is Junio Hamano. The development of Git itself is performed on the kernel.org platform.

Operating principle

Contrary to older source code management tools, Git works in a distributed way. This means that developers do not depend on a central repository to commit their changes. Each Git repository contains the full history of the project. Each Git object (changeset, file, directory) is the leaf of a tree with multiple branches. Developing a project with Git is based on a model in which one branch corresponds to one feature. Many revisions of the feature may be archived before the branch gets merged with the main trunk. For a detailed explanation of branch development, we recommend reading this page.

One especially interesting technique is cherry-picking, which is essentially taking part of a branch and merging it with another one.

Basic usage

Generally, a project developer must be able to:

  1. clone or create the repository;
  2. make changes;
  3. commit changes;
  4. push changes toward the original repository.

Since Git is distributed, there may not be an authoritative repository.

Summary of commands

Basic commands
Command Description
git config Configures git
git init Creates a new repository
git clone Clones an existing repository
git add Adds a file or directory to a repository
git rm Deletes a file or directory from the repository
git commit Commits changes to the repository
git push Pushes commited changes to a different repository
git pull Pulls changes from a different repository and merges them with your own repository
git fetch Fetches changes from a different repository without merging them to yours
git merge Merges changes to the repository


Commands to explore changes
Command Description
git blame Gives the origin of each change
git log Displays changes history
git diff Compares two versions
git status Displays status of the current files
git show Displays various git objects
git cat-file Displays the content, type or size of objects


Commands for branches, tags and remote repositories
Command Description
git branch Manages development branches
git tag Manages version tags
git remote Manages remote repositories
git checkout Checks out a branch or a path
git reset Changes the head of a branch


Commands for patches
Command Description
git format-patch Creates a patch
git am Applies a patch
git send-email Sends a patch by email


Other commands
Command Description
git bisect Used to diagnose problems
git gc Collects garbage objects
git rebase Rebases history of the repository
git grep Searches for content

Creating or cloning a repository

The first step is usually to create your own repository, or to clone an existing one.

To create a repository:

Question.png
[name@server ~]$  git init my-project

To clone a repository:

Question.png
[name@server ~]$  git clone git://github.com/git/git.git

Commiting a change

When the repository is ready, you change directory and edit the file.

[name@server ~]$ cd my-project
[name@server ~]$ nano file.txt


When work is done, you add the file

Question.png
[name@server ~]$  git add file.txt

and commit the change

Question.png
[name@server ~]$  git commit

It is then possible to push changes to the origin repository with

Question.png
[name@server ~]$  git push origin main

In the above command, origin is the remote repository and main is the current branch that will be pushed.

You might have to use git push origin master for older git repositories.

Hosting Git repositories

GitHub and Bitbucket are two of the main Git repository hosting services. They are both available for commercial projects as well as free projects.