Git extensions руководство пользователя

This is our GIT extensions tutorial for beginners. Here’s what you are going to learn:

  1. Introduction to Git Extensions
  2. Managing Repository
  3. Generating SSH Keys as a One-Time Activity
  4. How to Clone a Repository?
  5. How to Open a Repository?
  6. How to Traverse into the Repository?
  7. How to Track the Changes using Git Extensions?
  8. How to Perform Commit & Push?

Introduction to Git Extensions

GIT Extensions is a distributed version control system enabling a user to robustly manage a collection of source files and the changes made in them. The changes made are shown in the History of changes. Users can make changes by accessing a Central repository called remote repository and committing the changes to it. It implements classic GIT by using GUI (Graphical user interface), basically driven by a set of dedicated commands, hence maintaining the version control system intuitively. So, let us go through a glimpse of functionalities provided by GIT Extensions so that our version control system can be maintained.

Managing Repository

There are many options to manage the repository through GIT Extensions. It includes viewing the committed logs and changes made in comparison to the previous commit, cloning a repository, traversing through the file directory and filtering the committed logs by using custom search input, etc.

GIT Extensions can be downloaded from https://github.com/gitextensions/gitextensions/releases/tag/v2.48.05

Generating SSH Keys as a One-time Activity

SSH Keys should be loaded as a one-time activity. SSH keys can be generated while setting up the GIT Extensions.

In order to use a safe development environment with SSH, you need to get PuTTY installed as a preferred SSH client. PuTTY can be downloaded from http://www.putty.org/

The first thing is to check that Git Extensions is properly configured to use PuTTY, as well as all paths, are given correctly.

In the Remotes Tab just choose Generate or import key to start the key generator.

Configure Git Extensions use PuTTY

Putty Key Generator

It will ask you to move around the mouse in order to generate more random keys. When the key gets generated, save the public and private key in a text file by clicking the Save Public key button.

Save Public Key

Since now you are having a key pair, provide the public key to the Github account by copying the Key from the file which you just saved above at your desired location.

Then open your Github account and click on the profile image, followed by Account settings and going to the SSH Keys tab. Finally, paste the public key over there.

You can create a Github account at https://github.com/join?source=header

Setting up SSH Public Key

Now GitHub will get to know which public key it has to use to decrypt. Now you also need to provide the private key to GitExtensions to encrypt. You will find a Load SSH key button in the clone dialog where you can load the private key in PuTTY authentication.

Note: This is a one-time activity and you don’t need to repeat these steps again.

How to Clone a Repository?

Cloning a repository will create a local copy of the repository being cloned by this action.

It’s possible that the repository you want to clone is located on a network share or is accessible via an internet or intranet connection. You may need to load an SSH key into PuTTY depending on the protocol (http or ssh). You must also indicate the location of the cloned repository and the branch that will be checked out first. If the cloned repository has submodules, they can be initialized with their default values if necessary.

When making a clone, you can create two different sorts of repositories. A personal repository stores all of the histories as well as a functioning copy of the source tree. A central (bare) repository serves as a public repository to which developers push updates that they want to share with others. A central repository holds the entire history but does not have a working directory, unlike personal repositories.

  1. Click the ’Clone repository’ link from the Common Actions section on the left to clone a repository.Clone repository Location
  2. Provide the necessary inputs as Repository to clone (highlighted URL at the top tells which repository needs to be cloned), Destination (local hard drive location), Branch (automatically loaded when the local repository address is provided), and Repository type, and then click ‘Clone’.Adding Clone repository details
  3. The process of cloning starts and the remote files are checked-out to the specified destination i.e. local directory. A green tick mark indicating completion of the process will be displayed.Successful Check out files

Note: A Red Cross mark with respective errors will be displayed too during the occurrence of errors in the process if any.

Errors in Cloning – Troubleshooting

You’ll likely get some issues when cloning a repository. If you’re having trouble cloning a repository, make sure:

  • You can use HTTPS to connect.
  • You have access to the repository you’d like to clone.
  • The default branch that you’d like to clone is still available.

How to Open a Repository?

From the Common Actions section at the left click the ‘Open Repository’ link and give the directory address for opening a repository. Then click the ‘Open’ button as highlighted in the figure.
Figure3

It opens the repository and all committed logs will be shown with an abstract message associated with them, committed user, and the time elapsed when the commit was done (Refer figure). Also, the details like Author, date are shown at the bottom in the commit section.

Repository view

How to Traverse into the Repository?

Initially click the ‘File Tree’ tab. It will show the whole repository in the form of a file tree and intended files and directories can be viewed easily. This is the step-wise procedure to traverse a repository by a user.Using File Tree to traverse a repository

Using libgit2

Let’s have a peek at the source code.

#include <git2.h>

This header file must be included in any program that uses libgit2.

The first step is to use git libgit2 init to get libgit2 and its resources up

int main(int argc, char * argv[])
{
    git_libgit2_init();
   const char * REPO_PATH = "/path/to/your/repo/";
   git_repository * repo = nullptr;
   git_repository_open(&repo, REPO_PATH);

You open a repository with git repository open, which creates an object that you may use in your code to interact with a repository.

git_revwalk * walker = nullptr;
git_revwalk_new(&walker, repo);

The next step is to develop a revision walker, which is an object that iterates over a git repository. The git revwalk new function handles this.

git_revwalk_sorting(walker, GIT_SORT_NONE);

Once we’ve created a revision walker, we’ll need to provide a few parameters to manage the traverse. One example is the sorting mode when iterating over the repository. This is accomplished by invoking git_revwalk_sorting with one of the following values as the second parameter:

GIT SORT NONE – the default reverse chronological order (beginning with the most recent) of commits as in git

GIT SORT NONE – the default reverse chronological order (beginning with the most recent) of commits as in git

GIT SORT TIME – order of commit timestamps

GIT SORT REVERSE – performs commits in reverse order.

An OR can also be used to combine topological and temporal ordering.

It’s worth noting that you don’t need to use this function to set GIT_SORT_NONE because that’s the default setting.

git_revwalk_push_head(walker);

We are now ready to begin the traversal after the setup stage. This is accomplished by the method git revwalk next, which obtains the ID of the next commit to visit.

Calling git_revwalk_push_head changes the root to the HEAD of the repository.

git_oid oid;

    while(!git_revwalk_next(&oid, walker))
    {

Once we have used the commit, it’s time to release the object calling git_commit_free.

git_revwalk_free(walker);
git_repository_free(repo);

We are now ready to begin the traversal after the setup stage. This is accomplished by the method git_revwalk_next, which obtains the ID of the next commit to visit.

git_commit * commit = nullptr;
git_commit_lookup(&commit, repo, &oid);

Once we have an ID, we can use git commit lookup to retrieve a git commit object. This object will be used to retrieve information about the commit.

std::cout   << git_oid_tostr_s(&oid)
                    << " "
                    << git_commit_summary(commit)
                    << std::endl;

This is where we collect the necessary information from the ID and the commit.

After we’ve utilized the commit, we’ll call git_commit_free to release the object.

git_revwalk_free(walker);
git_repository_free(repo);

We can extract the hash of the commit from the ID using git_oid_tostr_s and the short summary of the commit using

git_commit_summary.
git_commit_free(commit);
    }

Then we may call git_revwalk_free to free the revision walker and git_repository_free to free the repository.

git_revwalk_free(walker);
git_repository_free(repo);
git_libgit2_shutdown();
return 0;
}

Finally, we shut down libgit2 with git_libgit2_shutdown.

How to Track the Changes using Git Extensions?

By clicking the ‘Diff’ tab comparison can be made with respect to the previous commit as shown in the figure.

Using Diff tab to track the changes

Press Ctrl+click commits to see all changes between them in the Git Extensions GUI. Because the first pick is handled as the base, choose an older commit first to show the change direction in diff view (additions/deletions) appropriately.

AFAIK, Git Extensions does not offer a GUI option to send a directory diff to an external tool (just file by file); therefore, you must do it from Git shell to obtain all changes at once to Beyond Compare (assuming you have configured it as a diff tool for Git).

git difftool -d <commit1> <commit2>

If you want to compare your current checked-out version to <commit1>, omit <commit2>. For instance, if you are on your local master and use fetch rather than pull

git difftool -d origin/master

will display the modifications that will be made when your local branch is merged with the origin branch.

Note: Newly added lines are marked as ’+’sign and shown with green color and the deleted ones as ’-’ sign and presented with red color.

How to Perform Commit & Push?

This action of committing and then pushing the given code to a remote repository is divided into two operations:

  1. Committing to Local Repository
  2. Committing to Remote Repository

Committing to Local Repository with Git Extensions

This process of committing involves various steps:

  1. To start the process click the ’Commit’ icon.Commit Process
  2. The respective fields are displayed in the newly opened commit window (Refer figure):
    • Working directory files.
    • Staged files.
    • Details of the modifications compared to the respective repo code.
    • Input box for the commit message to be entered by the user.Commit section
      The top left section will show the working directory files which were modified since the last commit:

      1. Click any file from the working directory file list. The files with their modified changes (highlighted in Red and Green) are displayed on the right section. This way we can identify file-wise discrete changes.
      2. When the changes are verified, files can be staged by using the ‘Stage’ option (Refer Figure). These Staged files are ready to commit and provide an easy way for filtering certain files not committed during the previous stage for the users.Staged Files in Commit Window
        Note:
        Users can also Unstage a staged file by using the ‘Unstage’ option opposite to Stage icon.
      3. When the verification and staging of all required files are done, you have to provide a suitable message to show the current commit action. The Commit History screen will show this message. The purpose of committing an action can be easily interpreted in an appropriate message is given.
  3. Commit the files using the ‘Commit’ button. The status of the commit operation is displayed in a dialog window. It will also show all the run-time errors of the process, displaying them with the appropriate stage of the whole process.

Note: Clicking ‘Commit’ lets the files be committed into the local repository and not into the remote repository.

Commit changes

Committing to Remote Repository

‘Push’ action is used to move the files of the local repository into a remote repository. It needs to be ensured by the user that the code which was taken lastly from the remote repository is not modified before you perform push action. There is every possibility that a repository could have been modified when it has been pulled or cloned by another person. This generally happens in a multi-user environment where a lot of branching and merging happens. Hence, it is necessary for a user to perform a Pull before opting for a Pushing action for the committed code.

Pulling the Code

  1. Open the pull Window by clicking on the ‘Pull’ icon as shown in the figure. Provide the remote repo URL and select the remote branch from there.
  2. It is necessary to select the Do Not Merge Option (Do not merge, only fetch remote changes) and ‘Auto Stash’ option.
  3. Lastly, click the ‘Pull’ button.Pull code before pushing
    PullImage

Pushing the Code

As of now, the local repository and the remote repository are in sync, so the user now has to click the ‘Push’ button as shown in the figure so that all the locally committed changes can be pushed to the remote repository.

Figure 11

Push code

We hope that this tutorial helps you in getting familiarized with the use of Git using the tool Git Extensions.

 
 

About the Author

ByteScout Team

ByteScout Team of Writers

ByteScout has a team of professional writers proficient in different technical topics. We select the best writers to cover interesting and trending topics for our readers. We love developers and we hope our articles help you learn about programming and programmers.
 

Git Extensions logo

Git Extensions

Git Extensions is a standalone UI tool for managing git repositories.
It also integrates with Windows Explorer and Microsoft Visual Studio (2015/2017/2019).

Have a question? Come and talk to us: Gitter or send us a tweet @git_extensions

Current Status

v4 // Next Version (build instructions)

  Windows only
Runtime environment MS Windows 7SP1+ // MS .NET 6.0
Development MS VS 2022 (v17.3+), C# 10 // VC++ (inc. ATL for x86/x64 for installer)
Current dev status Build status
Translations

Version 3.x

Windows-only version powered by .NET Framework v4.6.1 with theming support [More…]

  Windows only
Runtime environment MS Windows 7SP1+ // MS .NET Framework 4.6.1+
Development MS VS 2019 (v16.8+), C# 9 // VC++ (inc. ATL for x86/x64 for installer)
Current dev status Build status

Build instructions

Version 2.5x

This stream contains the last cross-platform version running both on Windows (MS .NET Framework) and on Linux/Mac (Mono). [More…]
This stream contains the last cross-platform version running both on Windows (MS .NET Framework) and on Linux/Mac (Mono).
The code is in maintenance mode with no significant active development planned. Only certain bug fixes are currently ported across, however there may be consideration given for certain features to be ported across from the v3.x stream.

For more details please refer to versions comparison.

  Windows Linux/Mac
Runtime environment MS Windows 7SP1+
MS .NET Framework 4.6.1+
Linux / Mac (possible)
Mono 5.0+ (Recommended 5.14.0 or later)
Development MS VS 2015/2017, C#6 MonoDevelop / JetBrains Rider / MS VS for Mac
Current dev status Build status
Translations

Build instructions

Downloads

Download it now or install it with Chocolatey or AppGet.

If you want to update a portable version, you should delete all the files and the subfolders from the existing folder except:

  • GitExtensions.settings
  • WindowPositions.xml
  • User defined themes in folder Themes
Latest Release: v4 [ Download ]
Current dev stream
NB: expect 🦄 🦄 and 🐉 🐉
[ Download ]
Build status
Visual Studio VSIX (2022) [ Download ] or install from Visual Studio via Extensions
Visual Studio VSIX (2015/2017/2019) [ Download ] or install from Visual Studio via Extensions
Visual Studio addin (2010/2012/2013) Included with installer for the 2.x branch. Download and run setup.exe

  • Visual Studio 2010 Addin.zip
  • Visual Studio 2012 Addin.zip
  • Visual Studio 2013 Addin.zip
Visual Studio Code VSIX
Kudos to @pmiossec
[ Download ] or install via VSCode
NB: Please direct all discussions about the VSIX to its own repo.
IntelliJ platform IDEs
Kudos to @DmitryZhelnin
[ Download ] or install via IDE Plugins settings
NB: Please direct all discussions about this plugin to its own repo.
Git Extensions for VS Code
Kudos to @Carl-Hugo

This extension allows users to Browse with Git Extensions from the Explorer and the Editor. It supports a single folder and workspaces. Nothing fancier.

[ Download ] from the Marketplace or install via VS Code
NB: Please direct all discussions about this extension to its own repo.

Conduct

Project maintainers pledge to foster an open and welcoming environment, and ask contributors to do the same.

For more information see our code of conduct.

Shoutouts

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]










Useful Links

  • Website: gitextensions.github.io Git repo
  • Source code: github.com/gitextensions/gitextensions
  • Online manual: git-extensions-documentation.readthedocs.org Git repo
  • Issue tracker: github.com/gitextensions/gitextensions/issues
  • Wiki: github.com/gitextensions/gitextensions/wiki
  • Gitter chat: gitter.im/gitextensions/gitextensions
  • How to visualize Git repository’s history

Во -первых, введение:

GIT Extensions — это инструментарий, чтобы сделать GIT под Windows более интуитивно понятным. Расширения оболочки будут интегрированы в менеджеры ресурсов Windows, а контекстное меню отображается в файлах и каталоге. Существует также расширение Visual Studio, которое может использовать GIT от Visual Studio IDE.

Функция

  • Интеграция Git’s Windows Resourdce Manager
  • Функциональный пользовательский интерфейс GIT
  • 32 -бит и 64 -битная поддержка
  • Расширение Visual Studio (2015-2017)

Специфично в версии 2.5x:

  • Visual Studio (2010-2015)
  • использоватьMonoЗапустить под Linux или Mac OS X
  • Основная функция SVN

Во -вторых, установка

Перед установкой расширений GIT вам необходимо установить GIT для Windows:https://git-scm.com/download/win

допустимыйНа GitHubНайдите установку расширений GIT.

1. Начните установку

2. Диапазон установки

3, целевая папка

4. Выберите опцию для установки

5,Выберите клиент SSH для использования. Западка — это настройки по умолчанию, потому что у него лучшая интеграция Windows, но должна запустить конкурс.

В -третьих, портативный

Расширения GIT также распространяются в виде портативного файла .zip и должны быть только декомпрессированы. Этот программный пакет не предоставляет такие функции, как интеграция Windows Shell и интеграция Visual Studio.

Четыре, настройки

Вы должны установить git: image :: /images/git_missing.png перед началом расширений GIT

Первый выбор — язык (в зависимости от языка установки): .. Image ::/images/install/language.png

Когда GIT Adensions будет запущено в первый раз, все настройки будут проверены. Если расширения GIT необходимо изменить любые настройки, будет отображаться диалоговое окно «Настройки». Все неправильные настройки будут помечены каккрасный(Например, если версия GIT не поддерживается), Orange указывает, что настройки не рекомендуются (например, версия GIT раньше, чем рекомендуемое значение). Вы можете попытаться восстановить свои настройки, нажав на него, нажав на него. При первой установке расширений GIT обычно требуются имя пользователя и адрес электронной почты.

проходитьSettingsизToolsВыберите в параметре меню, вы можете вызвать диалоговое окно «Настройки» в любое время.

Китайские настройки

Конфигурация

Эта страница содержит некоторые настройки, используемые GIT, поэтому ее можно изменить в расширениях GIT.

Если вы используете командную строку GIT, чтобы изменить настройки GIT, вы можете увидеть те же настройки в расширениях GIT. Если вы измените настройки GIT из расширений GIT, вы можете использовать их.git configgit config --get

Конфигурация GIT может быть глобальной конфигурацией или локальной конфигурацией. Глобальная конфигурация подходит для всех хранилищ. Локальная конфигурация будет охватывать глобальную конфигурацию текущего репозитория.

User name

Отправьте и ремонтируйте имя пользователя, отображаемое в программе.

User email

Пользовательская электронная почта отображается в процедурах подачи и ремонта.

Editor

Редактор открылся Git.exe (например, для редактирования для отправки сообщений). Только когда вы называете git.exe из командной строки, используются расширения GIT. По умолчанию GIT будет использовать встроенный редактор.

Mergetool

Используется для решения комбинированных инструментов комбинированных конфликтов. Расширения GIT будут искать общие слияния в вашей системе.

Path to mergetool

Путь инструмента слияния. Расширения GIT будут искать общие слияния в вашей системе.

Mergetool command

GIT используется для запуска команды для запуска инструмента слияния. При выборе слияния расширения GIT попытаются установить его автоматически. Когда git поддерживает Mergetool (например, kdiff3), этоНастройки могут быть сохранены как пустые.

Keep backup (.orig) after merge

Перед изменением для разрешения комбинированного конфликта проверьте, чтобы сохранить состояние исходного файла. См. Настройки конфигурации GIT`mergetool.keepBackup`

Difftool

Различные инструменты используются для отображения различий между исходными файлами. Расширения GIT будут искать общие дифференциальные инструменты в вашей системе.

Path to difftool

Путь инструмента Diff. Расширения GIT будут искать общие дифференциальные инструменты в вашей системе.

DiffTool command

GIT используется для запуска команд инструмента DIFF. Этот параметр должен быть заполнен только тогда, когда GIT не поддерживает инструмент DIFF.

Path to commit template

Путь файла используется для заполнения сообщения отправки, заполненного в диалоговом окне.

Line endings

Checkout/commit radio buttons

Как следует обрабатывать GIT при подписании и подписании файла. Видетьhttps://help.github.com/articles/dealing-with-line-endings/#platform-all

Files content encoding

Кодирование по умолчанию содержимого файла.

Английские настройки

Git

Настройки, используемые GIT, хранятся в файле конфигурации GIT. Global Settings Store.gitconfigВ файле, вызванном в каталоге пользователя. Локальный магазин.gitconfigВ файле хранения.

дорожка

Эта страница содержит настройки, необходимые для доступа к репозиторию GIT. Внешние инструменты будут использоваться для доступа к репозиторию. Для Windows обычно используется «GIT для Windows». Расширения GIT попытаются автоматически настроить эти настройки.

Git

Command used to run git (git.cmd or git.exe)

Расширения GIT должны запускать команды GIT. Установите полную команду для запуска GIT («GIT для Windows»). использоватьBrowseКнопка находит исполняемый файл в файловой системе. (Cygwin Git может быть эффективным, но он не получил официальную поддержку.)

Path to Linux tools (sh).

GIT Extensions использует несколько инструментов Linux. При установке GIT для Windows эти инструменты расположены в каталоге BIN GIT для Windows. использоватьBrowseНайдите каталог в файловой системе. Когда это на пути, оставьте пустым.

Environment

Change HOME

Эта кнопка открывает диалоговое окно, чтобы изменить домашний каталог в нем.

Глобальный файл конфигурации, используемый GIT, будет размещен в домашнем каталоге. В некоторых системах основной каталог не установлен и не указывает на сетевой диск. Расширения GIT попытаются обнаружить лучшие настройки, подходящие для вашей среды. Эта позиция будет использоваться, когда уже есть глобальные файлы конфигурации GIT. Если вам нужно переоценить основной каталог GIT, нажмите кнопку, чтобы изменить эти настройки. В противном случае сохраните этот параметр в качестве значения по умолчанию.Change HOME

Приборная доска

Плата приборов содержит наиболее распространенные задачи, недавно открытые репозитории и зажимы для сбора. Вы можете добавить коллекцию репозитория в группу в «название категории» правой панели.

Вы можете использовать контекст репозиториев для перемещения ближайшего репозитория в зажим для сбора. Выберите новую категорию и добавьте в него репозиторий, или вы можете добавить репозиторий в существующую категорию (например, «токи», показанные ниже).Categories / Add new

Чтобы открыть существующий репозиторий, вам нужно только щелкнуть ссылку на репозиторий или выбрать открытие репозитория (из которого вы можете выбрать репозиторий для открытия из локальной файловой системы).

Чтобы создать новый репозиторий, вы можете выбрать один из следующих вариантов под «публичной операцией».

Создать новый репозиторий

Если вы не хотите обрабатывать существующие проекты, вы можете использовать эту опцию для создания собственного репозитория.

Выберите каталог репозитория в нем. Вы можете создать личный репозиторий или центральную память.

Личный репозиторий выглядит так же, как и обычный рабочий каталог, но есть один.gitКаталог, названный на корневом уровне, который содержит версии Historical Records. Это самый распространенный репозиторий.

Центральное хранилище включает в себя только исторические записи. Поскольку центральная память не имеет рабочего каталога, невозможно подписать пересмотр в центральной памяти. Также невозможно объединить или извлечь изменения в центральной памяти. Тип репозитория может использоваться в качестве общественного репозитория, и разработчики могут продвигать изменения или извлекать и изменять его.

Откройте репозиторий

Откройте существующий GIT Warehouse на файловой системе.

Клон

Вы можете использовать эту опцию для клонирования существующего репозитория.

Клонированный репозиторий может быть разделен в Интернете или репозиторий, подключенный к доступу через Интернет или интранет. Согласно протоколу (HTTP или SSH), вам может потребоваться загрузить ключ SSH в замазку. Вам также необходимо указать позицию создания репозитория клонирования и первоначальную филиал. Если репозиторий клона содержит материалы, эти подмодулы могут быть инициализированы, используя их настройки по умолчанию по мере необходимости.

При клонировании вы можете создать два разных типа хранилища. Индивидуальный репозиторий содержит полную историческую запись, а также содержит копию источника дерева. Центральный (обнаженный) репозиторий используется в качестве репозитория общественного хранилища. Разработчики будут отправлены в общественное хранилище для изменений для других людей. Центральное хранилище содержит полную историческую запись, но не имеет рабочего каталога, такого как личный репозиторий.

Репозиторий клона GitHub

Эта опция позволяет вам

  1. Разделите хранилище на GitHub, чтобы создать его в личном пространстве на GitHub.
  2. Любой репозиторий в личном пространстве на GitHub делает его локальным хранилищем на компьютере.

Вы можете проверить свой личный репозиторий на GitHub, и вы также можете использовать вкладку для поиска репозитория.Search for repositories

Справочный документ GIT:

https://git-extensions-documentation.readthedocs.io/en/latest/getting_started.html

Пару недель назад я написал вступительную статью « Git Explained for Beginners », целью которой было представить Git новичкам на основе базовой структуры дерева Git. Поскольку эта статья оказалась довольно популярной, и поскольку в настоящее время я планирую представить для наших разработчиков .Net эту тему, я решил написать эту статью, используя аналогичный подход, но демонстрируя использование Git из Visual. Студия. 

терминология

Для ознакомления с терминологией Git, пожалуйста, обратитесь к моей предыдущей статье .

Настройка рабочей станции / Visual Studio

В последнее время Microsoft, похоже, признает Git в качестве ценной альтернативы своей проприетарной TFS (Team Foundation Server) тому, что касается контроля версий, и поэтому начала выпускать свое собственное расширение Visual Studio, которое в настоящее время находится в фазе «предварительного просмотра». Вы можете найти его здесь: Visual Studio Tools for Git (Microsoft)

Скотт Хансельман также написал об этом. Я быстро попробовал плагин и, хотя он отлично интегрируется с Visual Studio (в основном, как TFS), он все еще слишком большой бета на мой вкус.

В настоящее время лучшая альтернатива, которую я нашел, — это установить Git Extensions для Windows и Git Source Control Provider Visual Studio Plugin. В следующих разделах рассматриваются соответствующие установки.

Установите Git Extensions для Windows

Первым шагом является загрузка Git Extensions из соответствующего Google Code Repository .

Его мастер установки установит все, что вам нужно для полной настройки Git, установки Git (из git-scm ) в различные инструменты Unix для Git Bash.

После того, как вы все установили, убедитесь, что все записи в контрольном списке Git Extension проходят для беспроблемной работы с Git.

Вы найдете этот контрольный список при открытии приложения Git Extensions, а затем перейдя к Plugins > Settings.

Установка Git Source Control Provider

Git Source Control Provider — это расширение с открытым исходным кодом, которое использует установку Git вашей машины и интегрирует ее в Visual Studio.

Если вы успешно настроили Git (следуя процедуре, упомянутой выше), вы можете продолжить и установить расширение Git Source Control Provider для Visual Studio. Возможно, самый простой способ — через диалоговое окно «Расширения и обновления», в котором вам нужно просто выполнить поиск «git source control».


Установка через механизм расширений и обновлений Visual Studio

В качестве одного из следующих шагов вам нужно правильно установить провайдера исходного кода в Visual Studio, поскольку у вас их может быть больше (например, TFS). Это делается в настройках Visual Studio в разделе «Source Control»:


Конфигурирование провайдера контроля версий

Вы должны увидеть запись «Git Source Control Provider». Выберите это и подтвердите ваши настройки. После этого вы также должны убедиться, что он правильно ссылается на ваши установки Git и Git Extensions:

Настройка вашего ключа SSH

Многие репозитории Git-сервера допускают разные модели аутентификации:

  • через https или
  • путем генерации ключа SSH .

Лично я предпочитаю последнее, так как ненавижу постоянно вводить свои учетные данные.

Чтобы получить руководство по генерации открытого ключа SSH, просто обратитесь к документации по GitHub, которая довольно подробно и хорошо объяснена.

Ну, вот и все, что касается установки. Теперь вы должны быть готовы начать.

Давайте начнем: создайте новый Git-репозиторий

Прежде всего, я просто создаю проект консоли, так как основное внимание здесь уделяется не созданию чего-то приятного и работающего, а скорее демонстрации интеграции Git в Visual Studio. Как только проект создан, мы можем настроить локальный репозиторий Git.

Это можно сделать, щелкнув правой кнопкой мыши по решению и выбрав «Создать Git Repository»:

После этой операции вы должны увидеть репозиторий для успешной настройки:

Более того, вы должны увидеть некоторые файлы, перечисленные в окне ожидающих изменений в Git:


Ожидающие изменения перечислены поставщиком контроля версий Git

Просто щелкните их все, добавьте содержательный комментарий и подтвердите их, нажав кнопку «Подтвердить».

Git SCP (отныне ссылающийся на расширение Git Source Control Provider для VS) предоставляет очень удобный и удобный механизм для просмотра реальной ситуации в вашем Git-репозитории, а именно путем визуализации лежащего в его основе дерева Git. Просто нажмите кнопку «История» …

… В окне «Ожидающие изменения» откроется новое окно с красивым графиком:

Пока что ничего особенного, но это показывает, что наш первоначальный коммит создал примечание, на которое (как и ожидалось) указывают HEAD и master. Нажатие на узел открывает дополнительные детали, такие как задействованные файлы и соответствующие различия.

.gitignore

Важным аспектом, который я не упомянул в предыдущем уроке по Git, является концепция файла .gitignore . Этот файл в основном содержит набор строк, указывающих, какие артефакты должны игнорироваться Git. Обычно это специфичные для IDE файлы или скомпилированные двоичные файлы.

Из коробки Git SCP уже создает тот, который подходит для Visual Studio. В противном случае вы можете обратиться к проекту Gitignore GitHub, который представляет собой набор файлов .gitignore для различных типов IDE и языков программирования.

Создать и зафиксировать новый файл

Просто добавьте новый файл в ваш проект Visual Studio. Я добавил Person.csс некоторым контентом. Вы должны сразу увидеть изменения, перечисленные в окне Pending Changes.

Примечание. Вы можете открыть окно « Ожидающие изменения », щелкнув правой кнопкой мыши проект или файл решения Visual Studio и выбрав «Git (master)», а затем «Ожидающие изменения».

Опять же, как и прежде, выберите файлы, которые вы хотите включить, добавьте содержательный комментарий и зафиксируйте их.

Наше дерево после коммита выглядит так:

Создать (особенность) ветку

Чтобы создать новую ветку, нажмите кнопку « Расширения Git» в окне ожидающих изменений, а затем « Создать ветку».


Создать новую ветку

Это действие откроет новое диалоговое окно, позволяющее вам сначала выбрать точку в истории, с которой вы хотите перейти, а затем указать ее имя:


Выбор деталей новой ветки

Примечание: мы также устанавливаем флажок «Оформить заказ после создания», и сразу же переключаемся на новую ветку. Это как-то похоже на git checkout -b <branch-name>команду на оболочке.

Диалоговое окно подтверждения показывает успешность операции и выполненную команду в оболочке.

Более того, в окне Pending Changes мы теперь видим текущую ветвь, в которой мы находимся, которая является только что созданной «my-feature-branch».


Окно ожидающих изменений отображает текущую активную ветку в своем заголовке

Теперь мы можем изменить существующий файл — скажем, наш Person.cs— и зафиксировать его. Окно Pending Changes точно показывает разницу изменений до того, как мы их передадим


Разница изменений, отображаемых в окне Pending Changes

После внесения изменений дерево продвинулось и обратите внимание, что сейчас masterи my-feature-branchуказывают на разные места. HEADнаходится в нашей ветви функций, поскольку она является текущей активной.

Слияние и разрешение конфликтов

Вернемся к мастеру . Мы можем сделать это — снова — используя кнопку ветви Checkout из меню «Git Extensions».

Мы должны выбрать в masterкачестве нашего филиала и продолжить.

Примечание: есть варианты того, как вы хотите обрабатывать любые локальные изменения, которые еще не были зафиксированы, то есть хранить их.

Дерево Git отражает это переключение на masterветку, так как оно HEADтеперь правильно указывает masterснова.

В этом разделе я хотел бы продемонстрировать, как разрешить конфликт слияния. Чтобы это работало, нам нужно создать еще один коммит, masterкоторый конфликтует с изменениями my-feature-branch. Таким образом, давайте изменим Person.csсоответственно.

Наше дерево теперь более четко отражает существование нашей ветви функций.

Выполнение слияния

Учтите , что мы хотим объединить изменения , сделанные в my-feature-branchк master. Этот процесс инициируется с помощью кнопки Merge из меню Git Extensions.

Откроется диалоговое окно, позволяющее нам указать детали слияния.

Прежде всего, мы выбираем название филиала, которое есть my-feature-branch. Тогда есть два других варианта:

«Держите один ветку , если это возможно (ускоренная перемотка вперед)» — быстрый вперед объясняется следующим

[…] Другими словами, когда вы пытаетесь объединить один коммит с коммитом, который можно получить, следуя истории первого коммита, Git упрощает задачу, перемещая указатель вперед, потому что нет другой работы по слиянию воедино — это называется «перемотка вперед». Git SCM: базовое ветвление и слияние

Очевидно, это работает только тогда, когда нет конфликтов.

«Всегда создавать новый коммит слияния» — это просто создаст новое сообщение коммита, явно указывающее, что что-то было слито.

Как и ожидалось, ускоренная пересылка завершается неудачно, и мы получаем уведомление о конфликте слияния

Окно Pending Changes показывает конфликт слияния

Git SCP спросит вас, нужно ли разрешать или игнорировать конфликты. Если вы ответите положительно, откроется диалоговое окно со всеми конфликтующими файлами.

Нажмите «Начать объединение», чтобы открыть настроенный инструмент объединения. В моем случае это открывает «kdiff3». Это может зависеть от вашей системы, в зависимости от того, как вы настроили установку Git.


Процесс слияния в kdiff3

После того, как вы разрешили все конфликты …

… Вы можете продолжить процедуру фиксации.

Опять же, дерево Git хорошо отражает слияние

Перейти к определенному коммиту

Переход к определенной фиксации довольно прост и может быть выполнен с помощью команды Browse из меню Git Extensions. Это открывает внешний графический интерфейс, визуализирующий дерево Git.

Оттуда вы можете использовать контекстное меню и нажать « Оформить заказ выбранной ревизии».


Режим отдельной головы

В результате вы перейдете в режим отсоединенной головы . На самом деле, посмотрите на дерево:

HEADбольше не указывает на ветку, но на конкретный коммит в истории. Чтобы вернуться назад, вы всегда можете просто выполнить проверку на masterкакой-либо произвольной ветви.

отмена

Откат может быть выполнен по-разному и с разными последствиями.

Файлы, не созданные для фиксации

Отменить локальные изменения, которые еще не были зафиксированы, довольно легко, и это можно сделать, просто щелкнув правой кнопкой мыши измененный файл и выбрав «Отменить изменения файла»

Ой, я забыл включить…

Если вы уже внесли изменения в свой репозиторий и узнаете, что забыли что-то включить в этот же коммит (например, комментарий к этой строке кода)…


Совершенное изменение, которое мы хотим отменить ..

… Тогда Git обладает приятной и удобной функциональностью: команда Amend Last Commit . Просто добавьте забытое изменение и нажмите кнопку.

В результате ваш последний коммит также будет включать эти изменения, не оставляя следов, что вы фактически сделали два разных коммита.

«Вернуть» уже совершенные изменения

Но теперь предположим, что мы хотим вернуться полностью, отменив последнее изменение, которое мы сделали. Мы хотим, однако, явно показать, что «возвращение» изменений.

Обратите внимание , что отмена изменений таким способом настоятельно рекомендуется, если вы уже синхронизировали свои изменения с удаленным репозиторием.

Чтобы использовать функцию «отменить», используйте «Обзор» в меню Git Extensions, щелкните правой кнопкой мыши на коммите, который вы хотите отменить, и выберите « отменить коммит» :

Это внесет изменения, которые вы можете затем внести обратно в репозиторий Git.

Дерево после фиксации отмененных изменений:

Отменить уже совершенные изменения

Давайте посмотрим, что мы делали раньше:

  • мы добавили свойство к Person.cs
  • мы выполнили возврат добавления свойства

По сути, наши двое перекрывают друг друга. Поэтому, если мы находимся в нашем локальном репозитории и не синхронизировали эти изменения с каким-либо удаленным аналогом, мы могли бы подумать о том, чтобы полностью удалить обе фиксации из нашей истории. Это не приносит никакой пользы, кроме ведения домашнего хозяйства. Чтобы это произошло, мы можем использовать команду сброса . Мы выбираем момент времени (т.е. фиксацию), до которого мы хотим сбросить настройки, и нажимаем «Сбросить текущую ветвь сюда»:

У вас будут разные возможности

В этой ситуации я предпочитаю делать полный сброс, так как мне не важно сохранять изменения в каталоге. После сброса наше дерево Git не отслеживает предыдущие коммиты:

Совместное использование / синхронизация вашего репозитория

До сих пор мы работали исключительно с нашим локальным Git-репозиторием. Чтобы опубликовать наш репозиторий , чтобы поделиться им с друзьями, нам нужно отправить его в какое-нибудь удаленное место. Это можно сделать из меню Git Extensions, выбрав команду Push .

Откроется новое диалоговое окно, из которого вы можете выбрать удаленное местоположение.

Если вы еще не настроили какие-либо удаленные местоположения, вы должны сделать это с помощью «Управление удаленными».

Примечание. По соглашению «Git remote», указывающий на репозиторий источника, называется origin .

После успешной настройки пультов вы можете выбрать один из них и нажать на него.

… и успехов!

Теперь файлы находятся в удаленном хранилище, в моем случае на внутреннем сервере GitLab нашей компании:

клонирование

Точно так же ваш товарищ по команде должен выполнить противоположную операцию, а именно загрузить (клонировать) репозиторий, который вы только что открыли, на свою локальную рабочую станцию.

Чтобы клонировать существующий репозиторий, используйте меню Visual Studio и выберите команду « Клонировать репозиторий ».

Откроется диалоговое окно, в котором вы можете ввести URL-адрес хранилища Git, место назначения клона, а также ветку, которую вы хотите оформить (обычно master).

Дерево теперь также показывает ссылки на удаленные аналоги (origin / HEAD и origin / master).

Я хочу перенести проект TFS в Git

Если у вас уже есть проект, размещенный на TFS, и вы хотите перенести его в Git, вы можете использовать инструмент Microsoft git-tf .

Git-TF — это набор кроссплатформенных инструментов командной строки, которые облегчают обмен изменениями между TFS и Git. Git-TF Codeplex

Как описано на сайте проекта, вы можете просто выполнить клонирование вашего TFS-репозитория, например

git tf clone http://myserver:8080/tfs/collectionName $/TeamProjectA/Main --deep

Не забудьте --deepдополнение, чтобы убедиться, что вы копируете всю историю. В противном случае вы просто клонируете последний набор изменений TFS. После того, как вы успешно клонировали репозиторий TFS, вы можете просто добавить пульт дистанционного управления в свой новый репозиторий Git-сервера.

git remote add origin git@mygitserver.com:mygituser/myreponame.git

..и затем выполнить

git push -u origin master

Примечание:-u нужен , как вы публикуете в masterотрасли впервые на пульте ДУ.


Ресурсы и ссылки

  • Git Explained: для начинающих
  • Почему вы должны перейти на Git
  • Абсолютный бесплатный клиент Git
  • SO: Git для начинающих: полное практическое руководство
  • DZone Refcard: Начало работы с Git
  • DZone Refcard: Git-шаблоны и антипаттерны

This tutorial indeed for people who is not familiar with Git and GitHub and make first steps with this this technology. The tutorial contains following steps:

  • Installing Git and Git Extensions
  • Setting up GitHub account ,SSH keys and repository
  • Working with GitHub repository with Git Extensions
  • Cloning public repository from GitHub

Installing Git and Git Extensions

Git Extensions is an open-source project provides graphical user interface for Git that allows you control Git without using the command line. It’s download includes msysgit — implementation of Git for Windows.

Download and run latest build from download page . I use version 2.29 for this tutorial. Follow installation wizard with taking notes below:

When you run installer you get welcome page:

 Go next till you get «Required Software» page:

Since Git Extensions is only graphical tool, it requires Git installed. If you are not sure you have proper git installation, just select option «Install MsysGit». KDiff is a diff/merge tool, not the best one, but free. I recommend you select it as well.

Go next till you get «Select SSH client» page:

Ensure you select «PuTTY». It is an easiest way to work with SSH on Windows.

Go next till you get MsysGit installer running (as part of Git Extensions installation).

Select following settings during installation (it is can be changed after installation).

Finally you get «Complete installation»  page with «Finish» button.

Congratulations! You have Git and Git Extensions installed. Run it!

When you run Get Extensions for fist time, it comes with settings page with error:

Don’t be scared, it is normal for first time. Just click «Repair» and fill missing details 



That’s it. Now you are ready to work with Git repository.

Setting up GitHub account ,SSH keys and repository

Go to https://github.com/signup/free to set up you free account. Registration process is very simple. If you already have GitHub account, skip this step.

Once you have an account at GitHub, log in and go to your account SSH keys configuration page https://github.com/settings/ssh. If you first time here, you have an empty list.

Now it is time to create your SSH key. You may follow instructions from GitHub, but I want to show you my way.

When we installed Git Extensions, we selected «PuTTY» as SSH client and it resulted with helpful  PuTTY utilities was installed. You may find them in C:Program Files (x86)GitExtensionsPuTTY folder (or C:Program FilesGitExtensionsPuTTY on 32bit Windows)

pageant.exe — PuTTY SSH authentication agent,
plink.exe — PuTTY SSH client,
puttygen.exe — PuTTY SSH key generator.

Run puttygen.exe, click «Generate» button and move mouse over black area while progress is displayed.

This way you generated your SSH key.

Now save private key (you may select passphrase (password) if you want). Note: you have to keep you private key in secret.

Copy text from textbox above — it is your public key.  This is what you put into your GitHub account. You can always get this public key by loading your private key in puttygen. (File > Load private key).

Not it is time to come back to GitHub https://github.com/settings/ssh.

Click «Add SSH key», give a name for this key and copy you public key from puttygen.  Click «Add key» —
SSH Keys list shows your newly created key:

Creating repository is very simple. From main page (https://github.com/) click «New repository», fill the form and click «Create repository» — you will get instructions how to set up Git. You may follow this instructions, or follow my way I used to go.

Working with GitHub repository with Git Extensions.

First of all you have to know your repository url. Take it from GitHub instruction page:

Open Git Extensions and click «Clone repository»

Fill repository url and destination. Then click «Load SSH key».

 

Select you previously saved private key and click «Load». It might prompt password, if you set up one when saved the private key. 

Loading SSH key required for authentication against GitHub.

Click «Clone». Git Extensions will create destination directory and initialize local git repository there.

Click «OK» — it prompts with «Open repository» dialog.

Click «Yes» — your newly cloned repository will be opened:

Such screen you will see each time you clone an empty repository. Lets do some changes.

Go to repository directory and create new README text file:

You will see there .git folder.

Don’t modify or delete it

. This is actually Git repository. All files and folders beside are only current checked out branch.

Now go back to Git Extensions and click «Commit». You will get commit dialog:

Our newly created file have no persistency in repository, Click «Stage» to «fix» it.

Now it is ready for commit. Put commit message and click «Commit».

Git Extensions shows this first commit in our local repository (red colored label).

But it is not all. Since this is our local repository, we have to deliver our changes to remote repository at GitHub.

Go to menu «Commands» > «Push». It opens «Push» dialog:

Click «Push». Because there is no master branch in remote repository yet, it opens confirmation dialog:

Click «Yes».

Now Git Extensions shows your remote repository branch (green colored label)

Since we have created master branch in GitHub repository, it’s page doesn’t show Git set up instructions, but all repository related information:

All further commit with this repository are similar to first one. You make changes, stage them, commit and push.

Cloning public repository from GitHub

If you want to clone some public repository from GitHub, you have to follow the same steps as you clone your own repository.  The difference is in  repository url. To obtain repository url go repository page.

There is my repository page for example https://github.com/manishma/IZWebFileManager:

In case you select read only access url, you even don’t need to configure SSH key. (You still need it for read-write access).

Authentication failures and loading SSH key

When you open local repository with Git Extensions and want to update or  push you changes from/to remote GitHub repository,  you might fail into authentication error:

It happens if your SSH key has not been loaded yet. Don’t panic, click «Load SSH key», select your SSH private key and then click «Retry».

Thank you

I hope you find this tutorial helpful.

If you have any questions, please put your comment here.

Понравилась статья? Поделить с друзьями:
  • Руководство по ремонту фрилендер 2 дизель
  • Микролакс инструкция по применению цена в омске
  • Карты таро инструкция для начинающих толкование
  • Инструкция по охране труда для оператора станка плазменной резки
  • Крэт официальный сайт руководство контакты