Commit ccdd66d0 authored by Achilleas Pipinellis's avatar Achilleas Pipinellis

Merge branch 'docs/ssot-git-topics' into 'master'

SSoT audit fixes for some topics in git section

Closes #61512

See merge request gitlab-org/gitlab-ce!28966
parents 95d1e2da 9b2c39c6
...@@ -5,14 +5,20 @@ level: beginner ...@@ -5,14 +5,20 @@ level: beginner
article_type: user guide article_type: user guide
date: 2017-05-15 date: 2017-05-15
description: 'This article describes how to install Git on macOS, Ubuntu Linux and Windows.' description: 'This article describes how to install Git on macOS, Ubuntu Linux and Windows.'
type: howto
last_updated: 2019-05-31
--- ---
# Installing Git # Installing Git
To begin contributing to GitLab projects To begin contributing to GitLab projects,
you will need to install the Git client on your computer. you will need to install the Git client on your computer.
This article will show you how to install Git on macOS, Ubuntu Linux and Windows. This article will show you how to install Git on macOS, Ubuntu Linux and Windows.
Information on [installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
is also available at the official Git website.
## Install Git on macOS using the Homebrew package manager ## Install Git on macOS using the Homebrew package manager
Although it is easy to use the version of Git shipped with macOS Although it is easy to use the version of Git shipped with macOS
...@@ -21,7 +27,7 @@ we recommend installing it via Homebrew to get access to ...@@ -21,7 +27,7 @@ we recommend installing it via Homebrew to get access to
an extensive selection of dependency managed libraries and applications. an extensive selection of dependency managed libraries and applications.
If you are sure you don't need access to any additional development libraries If you are sure you don't need access to any additional development libraries
or don't have approximately 15gb of available disk space for Xcode and Homebrew or don't have approximately 15gb of available disk space for Xcode and Homebrew,
use one of the aforementioned methods. use one of the aforementioned methods.
### Installing Xcode ### Installing Xcode
...@@ -40,11 +46,12 @@ for the official Homebrew installation instructions. ...@@ -40,11 +46,12 @@ for the official Homebrew installation instructions.
With Homebrew installed you are now ready to install Git. With Homebrew installed you are now ready to install Git.
Open a Terminal and enter in the following command: Open a Terminal and enter in the following command:
```bash ```sh
brew install git brew install git
``` ```
Congratulations you should now have Git installed via Homebrew. Congratulations you should now have Git installed via Homebrew.
Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md). Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md).
## Install Git on Ubuntu Linux ## Install Git on Ubuntu Linux
...@@ -55,16 +62,30 @@ it is recommended to use the built in package manager to install Git. ...@@ -55,16 +62,30 @@ it is recommended to use the built in package manager to install Git.
Open a Terminal and enter in the following commands Open a Terminal and enter in the following commands
to install the latest Git from the official Git maintained package archives: to install the latest Git from the official Git maintained package archives:
```bash ```sh
sudo apt-add-repository ppa:git-core/ppa sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update sudo apt-get update
sudo apt-get install git sudo apt-get install git
``` ```
Congratulations you should now have Git installed via the Ubuntu package manager. Congratulations you should now have Git installed via the Ubuntu package manager.
Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md). Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md).
## Installing Git on Windows from the Git website ## Installing Git on Windows from the Git website
Browse to the [Git website](https://git-scm.com/) and download and install Git for Windows. Browse to the [Git website](https://git-scm.com/) and download and install Git for Windows.
Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md). Next read our article on [adding an SSH key to GitLab](../../../ssh/README.md).
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
one might have when setting this up, or when something is changed, or on upgrading, it's
important to describe those, too. Think of things that may go wrong and include them here.
This is important to minimize requests for support, and to avoid doc comments with
questions that you know someone might ask.
Each scenario can be a third-level heading, e.g. `### Getting error message X`.
If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->
# Git documentation ---
type: index
---
# Git
Git is a [free and open source](https://git-scm.com/about/free-and-open-source) Git is a [free and open source](https://git-scm.com/about/free-and-open-source)
distributed version control system designed to handle everything from small to distributed version control system designed to handle everything from small to
very large projects with speed and efficiency. large projects with speed and efficiency.
[GitLab](https://about.gitlab.com) is a Git-based fully integrated platform for [GitLab](https://about.gitlab.com) is a Git-based fully integrated platform for
software development. Besides Git's functionalities, GitLab has a lot of software development. Besides Git's functionalities, GitLab has a lot of
...@@ -11,64 +15,71 @@ powerful [features](https://about.gitlab.com/features/) to enhance your ...@@ -11,64 +15,71 @@ powerful [features](https://about.gitlab.com/features/) to enhance your
We've gathered some resources to help you to get the best from Git with GitLab. We've gathered some resources to help you to get the best from Git with GitLab.
More information is also available on the [Git website](https://git-scm.com).
## Getting started ## Getting started
- [Git concepts](../../university/training/user_training.md#git-concepts) The following resources will help you get started with Git:
- [Git Basics](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics)
- [Git on the Server - GitLab](https://git-scm.com/book/en/v2/Git-on-the-Server-GitLab)
- [How to install Git](how_to_install_git/index.md) - [How to install Git](how_to_install_git/index.md)
- [Start using Git on the command line](../../gitlab-basics/start-using-git.md) - [Start using Git on the command line](../../gitlab-basics/start-using-git.md)
- [Command Line basic commands](../../gitlab-basics/command-line-commands.md) - [Command Line basic commands](../../gitlab-basics/command-line-commands.md)
- [GitLab Git Cheat Sheet (download)](https://about.gitlab.com/images/press/git-cheat-sheet.pdf) - [GitLab Git Cheat Sheet (download)](https://about.gitlab.com/images/press/git-cheat-sheet.pdf)
- Commits - Commits:
- [Revert a commit](../../user/project/merge_requests/revert_changes.md#reverting-a-commit) - [Revert a commit](../../user/project/merge_requests/revert_changes.md#reverting-a-commit)
- [Cherry-picking a commit](../../user/project/merge_requests/cherry_pick_changes.md#cherry-picking-a-commit) - [Cherry-picking a commit](../../user/project/merge_requests/cherry_pick_changes.md#cherry-picking-a-commit)
- [Squashing commits](../../workflow/gitlab_flow.md#squashing-commits-with-rebase) - [Squashing commits](../../workflow/gitlab_flow.md#squashing-commits-with-rebase)
**Third-party references:** ### Concepts
- [Getting Started - Git website](https://git-scm.com) The following are resources about version control concepts:
- [Getting Started - Version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
- [Getting Started - Git Basics](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics)
- [Getting Started - Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [Git on the Server - GitLab](https://git-scm.com/book/en/v2/Git-on-the-Server-GitLab)
### Concepts - [Git concepts](../../university/training/user_training.md#git-concepts)
- [Why Git is Worth the Learning Curve](https://about.gitlab.com/2017/05/17/learning-curve-is-the-biggest-challenge-developers-face-with-git/)
- [The future of SaaS hosted Git repository pricing](https://about.gitlab.com/2016/05/11/git-repository-pricing/)
- [Git website topic about version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
- [GitLab University presentation about Version Control](https://docs.google.com/presentation/d/16sX7hUrCZyOFbpvnrAFrg6tVO5_yT98IgdAqOmXwBho/edit?usp=sharing)
- Article (2017-05-17): [Why Git is Worth the Learning Curve](https://about.gitlab.com/2017/05/17/learning-curve-is-the-biggest-challenge-developers-face-with-git/) ## Git tips
- Article (2016-05-11): [The future of SaaS hosted Git repository pricing](https://about.gitlab.com/2016/05/11/git-repository-pricing/)
- GLU Course (Presentation): [About Version Control](https://docs.google.com/presentation/d/16sX7hUrCZyOFbpvnrAFrg6tVO5_yT98IgdAqOmXwBho/edit?usp=sharing)
## Exploring Git The following resources may help you become more efficient at using Git:
- [Git Tips & Tricks](https://about.gitlab.com/2016/12/08/git-tips-and-tricks/) - [Git Tips & Tricks](https://about.gitlab.com/2016/12/08/git-tips-and-tricks/)
- [Eight Tips to help you work better with Git](https://about.gitlab.com/2015/02/19/8-tips-to-help-you-work-better-with-git/) - [Eight Tips to help you work better with Git](https://about.gitlab.com/2015/02/19/8-tips-to-help-you-work-better-with-git/)
## Troubleshooting Git ## Troubleshooting Git
If you have problems with Git, the following may help:
- [Numerous _undo_ possibilities in Git](numerous_undo_possibilities_in_git/index.md) - [Numerous _undo_ possibilities in Git](numerous_undo_possibilities_in_git/index.md)
- Learn a few [Git troubleshooting](troubleshooting_git.md) techniques to help you out. - Learn a few [Git troubleshooting](troubleshooting_git.md) techniques
## Branching strategies ## Branching strategies
- [GitLab Flow](https://about.gitlab.com/2014/09/29/gitlab-flow/)
**Third-party references:**
- [Git Branching - Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) - [Git Branching - Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
- [Git Branching - Branching Workflows](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows) - [Git Branching - Branching Workflows](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows)
- [GitLab Flow](https://about.gitlab.com/2014/09/29/gitlab-flow/)
## Advanced use ## Advanced use
The following are advanced topics for those who want to get the most out of Git:
- [Custom Git Hooks](../../administration/custom_hooks.md) - [Custom Git Hooks](../../administration/custom_hooks.md)
- [Git Attributes](../../user/project/git_attributes.md) - [Git Attributes](../../user/project/git_attributes.md)
- Git Submodules: [Using Git submodules with GitLab CI](../../ci/git_submodules.md#using-git-submodules-with-gitlab-ci) - Git Submodules: [Using Git submodules with GitLab CI](../../ci/git_submodules.md#using-git-submodules-with-gitlab-ci)
## API ## API
- [Gitignore templates](../../api/templates/gitignores.md) [Gitignore templates](../../api/templates/gitignores.md) API allow for
Git-related queries from GitLab.
## Git LFS ## Git LFS
The following relate to Git Large File Storage:
- [Getting Started with Git LFS](https://about.gitlab.com/2017/01/30/getting-started-with-git-lfs-tutorial/) - [Getting Started with Git LFS](https://about.gitlab.com/2017/01/30/getting-started-with-git-lfs-tutorial/)
- [GitLab Git LFS documentation](../../workflow/lfs/manage_large_binaries_with_git_lfs.md) - [GitLab Git LFS documentation](../../workflow/lfs/manage_large_binaries_with_git_lfs.md)
- [Git-Annex to Git-LFS migration guide](../../workflow/lfs/migrate_from_git_annex_to_git_lfs.md) - [Git-Annex to Git-LFS migration guide](../../workflow/lfs/migrate_from_git_annex_to_git_lfs.md)
- Article (2015-08-13): [Towards a production quality open source Git LFS server](https://about.gitlab.com/2015/08/13/towards-a-production-quality-open-source-git-lfs-server/) - [Towards a production quality open source Git LFS server](https://about.gitlab.com/2015/08/13/towards-a-production-quality-open-source-git-lfs-server/)
---
type: howto
---
# Troubleshooting Git # Troubleshooting Git
Sometimes things don't work the way they should or as you might expect when Sometimes things don't work the way they should or as you might expect when
...@@ -9,7 +13,7 @@ with Git. ...@@ -9,7 +13,7 @@ with Git.
'Broken pipe' errors can occur when attempting to push to a remote repository. 'Broken pipe' errors can occur when attempting to push to a remote repository.
When pushing you will usually see: When pushing you will usually see:
``` ```text
Write failed: Broken pipe Write failed: Broken pipe
fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly
``` ```
...@@ -39,14 +43,15 @@ There's another option where you can prevent session timeouts by configuring ...@@ -39,14 +43,15 @@ There's another option where you can prevent session timeouts by configuring
SSH 'keep alive' either on the client or on the server (if you are a GitLab SSH 'keep alive' either on the client or on the server (if you are a GitLab
admin and have access to the server). admin and have access to the server).
NOTE: **Note:** configuring *both* the client and the server is unnecessary. NOTE: **Note:**
Configuring *both* the client and the server is unnecessary.
**To configure SSH on the client side**: **To configure SSH on the client side**:
- On UNIX, edit `~/.ssh/config` (create the file if it doesn’t exist) and - On UNIX, edit `~/.ssh/config` (create the file if it doesn’t exist) and
add or edit: add or edit:
``` ```text
Host your-gitlab-instance-url.com Host your-gitlab-instance-url.com
ServerAliveInterval 60 ServerAliveInterval 60
ServerAliveCountMax 5 ServerAliveCountMax 5
...@@ -58,7 +63,7 @@ NOTE: **Note:** configuring *both* the client and the server is unnecessary. ...@@ -58,7 +63,7 @@ NOTE: **Note:** configuring *both* the client and the server is unnecessary.
**To configure SSH on the server side**, edit `/etc/ssh/sshd_config` and add: **To configure SSH on the server side**, edit `/etc/ssh/sshd_config` and add:
``` ```text
ClientAliveInterval 60 ClientAliveInterval 60
ClientAliveCountMax 5 ClientAliveCountMax 5
``` ```
...@@ -83,35 +88,35 @@ to >= 2.9 (see [Broken pipe when pushing to Git repository][Broken-Pipe]). ...@@ -83,35 +88,35 @@ to >= 2.9 (see [Broken pipe when pushing to Git repository][Broken-Pipe]).
Users may experience the following error when attempting to push or pull Users may experience the following error when attempting to push or pull
using Git over SSH: using Git over SSH:
``` ```text
Please make sure you have the correct access rights Please make sure you have the correct access rights
and the repository exists. and the repository exists.
... ...
ssh_exchange_identification: read: Connection reset by peer ssh_exchange_identification: read: Connection reset by peer
fatal: Could not read from remote repository. fatal: Could not read from remote repository.
``` ```
This error usually indicates that SSH daemon's `MaxStartups` value is throttling This error usually indicates that SSH daemon's `MaxStartups` value is throttling
SSH connections. This setting specifies the maximum number of unauthenticated SSH connections. This setting specifies the maximum number of unauthenticated
connections to the SSH daemon. This affects users with proper authentication connections to the SSH daemon. This affects users with proper authentication
credentials (SSH keys) because every connection is 'unauthenticated' in the credentials (SSH keys) because every connection is 'unauthenticated' in the
beginning. The default value is `10`. beginning. The default value is `10`.
Increase `MaxStartups` by adding or modifying the value in `/etc/ssh/sshd_config`: Increase `MaxStartups` by adding or modifying the value in `/etc/ssh/sshd_config`:
``` ```text
MaxStartups 100 MaxStartups 100
``` ```
Restart SSHD for the change to take effect. Restart SSHD for the change to take effect.
## Timeout during git push/pull ## Timeout during git push/pull
If pulling/pushing from/to your repository ends up taking more than 50 seconds, If pulling/pushing from/to your repository ends up taking more than 50 seconds,
a timeout will be issued with a log of the number of operations performed a timeout will be issued with a log of the number of operations performed
and their respective timings, like the example below: and their respective timings, like the example below:
``` ```text
remote: Running checks for branch: master remote: Running checks for branch: master
remote: Scanning for LFS objects... (153ms) remote: Scanning for LFS objects... (153ms)
remote: Calculating new repository size... (cancelled after 729ms) remote: Calculating new repository size... (cancelled after 729ms)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment