Git удалить файл из добавления

Обновлено: 04.07.2024

Распространенный вопрос при начале работы с Git: "Как мне запретить Git больше отслеживать файл (или файлы)?" Команда git rm используется для удаления файлов из репозитория Git. Его можно рассматривать как обратную команду git add.

Обзор Git rm

Команду git rm можно использовать для удаления отдельных файлов или набора файлов. Основная функция git rm — удалить отслеживаемые файлы из индекса Git. Кроме того, git rm можно использовать для удаления файлов как из промежуточного индекса, так и из рабочего каталога. Нет возможности удалить файл только из рабочего каталога. Файлы, с которыми выполняются операции, должны быть идентичны файлам в текущем HEAD. Если есть несоответствие между HEAD-версией файла и промежуточным индексом или версией рабочего дерева, Git заблокирует удаление. Эта блокировка представляет собой защитный механизм, предотвращающий удаление незавершенных изменений.

Обратите внимание, что git rm не удаляет ветки. Узнайте больше об использовании веток git

Использование

Указывает целевые файлы для удаления. Значением параметра может быть отдельный файл, список файлов с разделителями-пробелами file1 file2 file3 или групповой файл с подстановочными знаками (~./directory/*).

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

Опция «пробный запуск» — это защитная функция, которая запускает команду git rm, но не удаляет файлы. Вместо этого он выведет, какие файлы он бы удалил.

Опция -r является сокращением от "рекурсивный". При работе в рекурсивном режиме git rm удалит целевой каталог и все содержимое этого каталога.

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

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

Это приводит к тому, что команда завершается со статусом 0 sigterm, даже если нет подходящих файлов. Это код состояния уровня Unix. Код 0 указывает на успешный вызов команды. Параметр --ignore-unmatch может быть полезен при использовании git rm как части более крупного сценария оболочки, который должен корректно завершаться с ошибкой.

Тихая опция скрывает вывод команды git rm. Обычно команда выводит одну строку для каждого удаленного файла.

Как отменить git rm

Выполнение git rm не является постоянным обновлением. Команда обновит промежуточный индекс и рабочий каталог. Эти изменения не сохранятся до тех пор, пока не будет создана новая фиксация и изменения не будут добавлены в историю коммитов. Это означает, что внесенные здесь изменения можно «отменить» с помощью обычных команд Git.

Сброс вернет текущий промежуточный индекс и рабочий каталог обратно к фиксации HEAD. Это отменит git rm .

Извлечение будет иметь тот же эффект и восстановит последнюю версию файла из HEAD .

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

Обсуждение

Аргумент file>, передаваемый команде, может быть точным путем, подстановочным шаблоном файла или точным именем каталога. Команда удаляет только те пути, которые в настоящее время зафиксированы в репозитории Git.

Подстановка файлов с подстановочными знаками совпадает в каталогах. Важно соблюдать осторожность при использовании подстановочных знаков. Рассмотрим примеры: directory/* и directory*. В первом примере будут удалены все подфайлы каталога/, тогда как во втором примере будут удалены все одноуровневые каталоги, такие как каталог1 каталог2 каталог_независимо от того, что может быть неожиданным результатом.

Объем git rm

Команда git rm работает только с текущей ветвью. Событие удаления применяется только к рабочему каталогу и промежуточным деревьям индексов. Удаление файла не сохраняется в истории репозитория, пока не будет создана новая фиксация.

Зачем использовать git rm вместо rm

Репозиторий Git распознает выполнение обычной команды оболочки rm для файла, который он отслеживает. Он обновит рабочий каталог, чтобы отразить удаление. Он не будет обновлять промежуточный индекс при удалении. Для удаленных путей к файлам необходимо будет выполнить дополнительную команду git add, чтобы добавить изменения в промежуточный индекс. Команда git rm действует как ярлык, поскольку она обновляет рабочий каталог и промежуточный индекс при удалении.

Примеры

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

Обратите внимание, что в этом примере звездочка * экранируется косой чертой; это защита, которая не позволяет оболочке расширять подстановочный знак. Затем подстановочный знак расширяет пути к файлам и подкаталогам в каталоге Documentation/.

В этом примере используется параметр force и используются все файлы с подстановочными знаками git-*.sh. Параметр force явно удаляет целевые файлы как из рабочего каталога, так и из промежуточного индекса.

Как удалить файлы, которых больше нет в файловой системе

Как указано выше в разделе «Зачем использовать git rm вместо rm», git rm на самом деле является удобной командой, которая объединяет стандартную оболочку rm и git add для удаления файла из рабочего каталога и продвижения этого удаления в промежуточный индекс. Репозиторий может оказаться в громоздком состоянии, если несколько файлов были удалены с помощью только стандартной команды оболочки rm.

Если вы намерены записать все явно удаленные файлы как часть следующего коммита, git commit -a добавит все события удаления в промежуточный индекс при подготовке к следующему коммиту.

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

Эта команда создаст список удаленных файлов из рабочего каталога и передаст этот список в git rm --cached, который обновит промежуточный индекс.

Сводка Git rm

git rm — это команда, которая работает с двумя основными деревьями управления внутренним состоянием Git: рабочим каталогом и промежуточным индексом. git rm используется для удаления файла из репозитория Git. Это удобный метод, который сочетает в себе эффект команды оболочки rm по умолчанию с git add . Это означает, что он сначала удалит цель из файловой системы, а затем добавит это событие удаления в промежуточный индекс. Это одна из многих команд, которые можно использовать для отмены изменений в Git.

Хотите улучшить этот пост? Предоставьте подробные ответы на этот вопрос, включая цитаты и объяснение того, почему ваш ответ правильный. Ответы без достаточной детализации могут быть отредактированы или удалены.

Я по ошибке добавил файлы в Git с помощью команды:

Я еще не запускал git commit . Есть ли способ отменить это, чтобы эти файлы не включались в фиксацию?


Начиная с Git версии 1.8.4, все приведенные ниже ответы, в которых используется HEAD или head, теперь могут использовать @ вместо HEAD. Посмотрите этот ответ (последний раздел), чтобы узнать, почему вы можете это сделать.

Прежде чем опубликовать новый ответ, учтите, что на этот вопрос уже есть более 25 ответов. Убедитесь, что ваш ответ содержит то, чего нет среди существующих ответов

37 ответов 37

Вы можете отменить git add перед фиксацией с помощью

который удалит его из текущего индекса (списка "в ожидании фиксации") без каких-либо других изменений.

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

В старых версиях Git приведенные выше команды эквивалентны командам git reset HEAD и git reset HEAD соответственно. создал ветку с именем HEAD , что является глупостью, которую вы не должны делать). Это было изменено в Git 1.8.2, поэтому в современных версиях Git вы можете использовать приведенные выше команды даже до того, как сделаете свой первый коммит:

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


Конечно, это не настоящая отмена, потому что, если неправильный git add перезаписал предыдущую незафиксированную версию, мы не сможем ее восстановить. Я попытался прояснить это в своем ответе ниже.

git reset HEAD *.ext, где ext — это файлы с заданным расширением, которые вы хотите удалить. Для меня это были *.bmp и *.zip

@Jonny, индекс (он же промежуточная область) содержит все файлы, а не только измененные файлы. Он «начинает жизнь» (когда вы проверяете фиксацию или клонируете репо) как копию всех файлов в фиксации, на которую указывает HEAD. Таким образом, если вы удаляете файл из индекса ( git rm --cached ), это означает, что вы готовитесь сделать фиксацию, которая удаляет этот файл. git reset HEAD, с другой стороны, скопирует файл из HEAD в индекс, так что следующая фиксация не покажет никаких изменений, внесенных в этот файл.

На самом деле вы можете восстановить перезаписанные ранее подготовленные, но незафиксированные изменения, но не удобным для пользователя способом и не на 100% безопасным (по крайней мере, я не нашел): перейдите в .git/objects, найдите файлы, созданные во время git add you хотите восстановить ( 61/3AF3. -> идентификатор объекта 613AF3.), затем git cat-file -p (может быть, это стоит того, чтобы восстановить несколько часов работы, но также и урок, чтобы чаще совершать коммиты.)

Когда я был новичком в этом, я впервые попробовал

(чтобы отменить все мое первоначальное добавление), только чтобы получить это (не очень) полезное сообщение:

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

  1. перейдите в папку с моим замечательным новым проектом, чтобы опробовать Git, новое новшество
  2. инициализация git
  3. git добавить .
<р>. много дерьмовых прокруток от .

=> Черт, я не хотел все это добавлять.

погуглите "отменить git add"

=> найти переполнение стека — ура

=> фатальный: не удалось разрешить "HEAD" как допустимую ссылку.

Кроме того, выясняется, что в списке рассылки зарегистрирована ошибка, связанная с бесполезностью этого.

И что правильное решение было прямо там, в выводе статуса Git (что, да, я приукрасил как "дерьмо")

И решение действительно состоит в том, чтобы использовать git rm --cached FILE .

Обратите внимание на предупреждения в другом месте: git rm удалит вашу локальную рабочую копию файла, но нет, если вы используете --cached. Вот результат git help rm :

--cached Используйте эту опцию, чтобы отключить и удалить пути только из индекса. Файлы рабочего дерева, независимо от того, изменены они или нет, останутся.

Я продолжаю использовать

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

Хорошо, теперь я вернулся к тому, с чего начал. В следующий раз я воспользуюсь -n для пробного прогона и посмотрю, что будет добавлено:

Я заархивировал все в безопасное место, прежде чем довериться git help rm о том, что --cached ничего не уничтожил (и что, если я ошибся в написании).


Ха. Я следовал этому же процессу. За исключением того, что я сдался и сказал rm -rf .git , git init, потому что я не доверял git rm --cached, чтобы сохранить мою рабочую копию. Это немного говорит о том, что git все еще слишком сложен в некоторых местах. git unstage должна быть стандартной стандартной командой, мне все равно, могу ли я добавить ее в качестве псевдонима.

git rm --cached на самом деле правильный ответ, если это первоначальный импорт в репозиторий. Если вы пытаетесь отменить изменение файла, правильным ответом будет git reset. Люди, говорящие, что этот ответ неверен, думают о другом вопросе.

Это на самом деле будет работать, но только при первой фиксации, когда файла раньше не существовало или когда команда git add добавляла новые файлы, но не вносила изменения в существующие файлы.

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

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

Я считаю, что Git неплохо подталкивает меня к правильным действиям в подобных ситуациях.

Примечание. В последних версиях Git (1.8.4.x) это сообщение изменилось:


Сообщение будет отличаться в зависимости от того, отслеживался ли уже добавленный файл (добавление только сохранило новую версию в кэш - здесь оно покажет ваше сообщение). В другом месте, если файл не был предварительно подготовлен, он будет отображать использование «git rm --cached . », чтобы отменить его.

Отлично! git reset HEAD — единственный, который будет работать, если вы хотите отменить удаление файла

После Git версии 2.23 сообщение снова изменилось. Теперь он говорит git restore --staged . См. мой ответ ниже для обновления.

Для уточнения: git add перемещает изменения из текущего рабочего каталога в область подготовки (индекс).

Этот процесс называется постановкой. Таким образом, наиболее естественной командой для инсценировки изменений (измененных файлов) является очевидная команда:

git add — это просто более простой псевдоним для git stage

Жаль, что нет команд git unstage и git unadd. Релевантный труднее угадать или запомнить, но он довольно очевиден:

Для этого можно легко создать псевдоним:

И, наконец, у нас есть новые команды:

Лично я использую еще более короткие псевдонимы:


На самом деле git stage — это псевдоним для git add , исторической команды как в Git, так и в других SCM.Он был добавлен в декабре 2008 года с фиксацией 11920d28da в «git-репозиторий Git», если можно так сказать.

Я согласен, очень раздражает, что Линус Торвальдс вместо создания симметричных команд просто создал новое слово для другой команды. Для simmetric я имею в виду что-то вроде: commit - uncommit; сцена-несцена. Или ключевое слово UNDO, которое можно использовать для многих команд: git commit X — git UNDO commit x. Кажется естественным, что многие слова приходится учить наизусть. Те, которые используются не так часто, легко забываются. и вот мы все на этой странице

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

Не о чем беспокоиться; файл действительно все еще находится в репозитории, но только как «свободный объект». Он не будет скопирован в другие репозитории (через клонирование, push-уведомление), и пространство в конечном итоге будет восстановлено - хотя, возможно, не очень скоро. Если вы беспокоитесь, вы можете запустить:

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

Итак, что является реальной отменой git add ?

Строго говоря, если не ошибаюсь: ни одного.

git add не может быть отменен — в общем, безопасно.

Давайте сначала вспомним, что на самом деле делает git add:

Если он ранее не отслеживался, git add добавляет его в кеш вместе с его текущим содержимым.

Если уже отслеживался, git add сохраняет текущий контент (моментальный снимок, версию) в кеш. В Git это действие по-прежнему называется «добавить» (а не просто обновить), потому что две разные версии (моментальные снимки) файла рассматриваются как два разных элемента: следовательно, мы действительно добавляем новый элемент. в кеш, чтобы в конечном итоге зафиксировать позже.

В свете этого вопрос несколько двусмыслен:

Я по ошибке добавил файлы с помощью команды.

Сценарий ОП кажется первым (неотслеживаемый файл), мы хотим, чтобы «отмена» удаляла файл (а не только текущее содержимое) из отслеживаемых элементов. Если это так, то можно запустить git rm --cached .

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

Но есть два предостережения.

Во-первых: существует (как указано в ответе) только один сценарий, в котором git reset HEAD не работает, но git rm --cached работает: новый репозиторий (без коммитов). Но, на самом деле, это практически неактуальный случай.

Во-вторых: имейте в виду, что git reset HEAD не может волшебным образом восстановить содержимое ранее кэшированного файла, он просто ресинхронизирует его из HEAD. Если наш ошибочный git add перезаписал предыдущую незафиксированную версию, мы не сможем ее восстановить. Вот почему, строго говоря, мы не можем отменить [*].

Конечно, это не очень критично, если мы просто следуем обычному ленивому рабочему процессу, выполняя «git add» только для добавления новых файлов (случай 1) и обновляя новое содержимое с помощью команды фиксации, git commit -a.

* (Редактировать: приведенное выше практически верно, но все же могут быть некоторые слегка хакерские/запутанные способы восстановления изменений, которые были поставлены, но не зафиксированы, а затем перезаписаны - см. комментарии Йоханнеса Матокика и iolsmit)

git rm используется для удаления файла из репозитория Git. Это удобный метод, который сочетает в себе эффект команды оболочки rm по умолчанию с git add . Это означает, что он сначала удалит цель из файловой системы, а затем добавит это событие удаления в промежуточный индекс.

Кроме того, как удалить файл после добавления git?

Объяснение: после того, как вы поместили нежелательные файлы для отмены, вы можете выполнить git reset . Head — это заголовок вашего файла в локальном файле, а последний параметр — это имя вашего файла. и удалите все файлы вручную или выбрав их все и нажав на кнопку отмены стадии фиксации.

  1. Добавьте все файлы по отдельности или в папке, которые вы хотите удалить из репозитория, но сохранить локально в . гитигнор.
  2. Выполните git rm --cached поместите/здесь/ваш/файл. ext для каждого файла или git rm --cached folder/*, если они находятся в папке.
  3. Зафиксируйте изменения.
  4. Отправить на удаленный сервер.

Как удалить файл из коммита git?

Чтобы удалить файлы из коммитов, используйте команду «git restore», укажите источник с помощью опции «-source» и файл, который нужно удалить из репозитория. В качестве примера давайте представим, что вы редактировали файл в своем последнем коммите в своей «главной» ветке.

Как удалить файлы из архива в git?

Чтобы отключить коммиты в Git, используйте команду «git reset» с параметром «–soft» и укажите хэш коммита. В качестве альтернативы, если вы хотите отменить последнюю фиксацию, вы можете использовать нотацию «HEAD», чтобы легко отменить ее.При использовании аргумента «–soft» изменения сохраняются в вашем рабочем каталоге и индексе.

Удаляет ли git rm файл?

git rm не удалит файл только из вашего рабочего каталога. (Нет возможности удалить файл только из рабочего дерева и при этом оставить его в индексе; используйте /bin/rm, если хотите.)

Как удалить файл из отслеживания Git?

Чтобы удалить файл из Git, вы должны удалить его из отслеживаемых файлов (точнее, удалить его из своей промежуточной области), а затем зафиксировать. Команда git rm делает это, а также удаляет файл из вашего рабочего каталога, чтобы в следующий раз вы не увидели его как неотслеживаемый файл.

Как окончательно удалить файл в Git?

Навсегда удалить любую запись файла из git Получить новый клон репозитория (в пустом/временном пространстве) git clone REPO_LOCATION. Отсоедините его от удаленного источника. git удаленное происхождение rm. Удалите файл и перепишите историю. git filter-branch --index-filter 'git rm --cached --ignore-unmatch FILENAME' HEAD. Удаление мусора и устаревших файлов. ВАЖНО.

Как удалить папку репозитория git?

Как отменить изменение git?

Теперь у вас есть 4 варианта отмены изменений: Удалить файл из текущей фиксации (HEAD): git reset HEAD Удалить все — сохранить изменения: git reset. Отменить все локальные изменения, но сохранить их на потом: git stash. Удалить все навсегда: git reset --hard.

Как отменить отслеживание файла в Git?

Отменить отслеживание файлов, уже добавленных в репозиторий git, на основе файлов . gitignore Шаг 1: Зафиксируйте все свои изменения. Прежде чем продолжить, убедитесь, что все ваши изменения зафиксированы, включая файл . gitignore файл. Шаг 2: Удалите все из репозитория. Чтобы очистить репозиторий, используйте: git rm -r --cached . Шаг 3: Повторно добавьте все. git добавить . Шаг 4: Подтвердить. git commit -m ".gitignore исправить"

Что делает git pull?

Команда git pull используется для извлечения и загрузки содержимого из удаленного репозитория и немедленного обновления локального репозитория в соответствии с этим содержимым. Объединение удаленных исходных изменений в ваш локальный репозиторий — обычная задача в рабочих процессах совместной работы на основе Git.

Как работает git rm?

git rm используется для удаления файла из репозитория Git. Это удобный метод, который сочетает в себе эффект команды оболочки rm по умолчанию с git add . Это означает, что он сначала удалит цель из файловой системы, а затем добавит это событие удаления в промежуточный индекс.

Как отменить фиксацию файла?

Удаление последней фиксации Вы можете увеличить число, чтобы удалить еще больше фиксаций. Если вы хотите «аннулировать» коммиты, но оставить изменения для доработки, удалите «--hard»: git reset HEAD^, который удалит коммиты из ветки и из индекса, но оставит рабочее дерево вокруг.

Что такое git rebase?

Что такое rebase в Git? В Git команда rebase интегрирует изменения из одной ветки в другую. Это альтернатива более известной команде «объединить». Наиболее заметно rebase отличается от слияния тем, что переписывает историю коммитов, чтобы создать прямую, линейную последовательность коммитов.

Что делает git rm cached?

git rm --cached file удалит файл со сцены. То есть при фиксации файл будет удален. git reset HEAD -- файл просто сбросит файл в промежуточной области до состояния, в котором он был при фиксации HEAD, т. е. отменит все изменения, которые вы сделали с ним с момента последней фиксации.

Как использовать Git?

Как удалить файл из удаленной ветки Git?

2 ответа. Извлеките изменения с удаленного компьютера, затем выполните git rm в локальном репозитории, зафиксируйте изменения и снова отправьте их на удаленный сервер. Файлы будут удалены.

Что означает удаление файла из стадии?

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

Команда "rm" поможет вам удалить файлы из репозитория Git. Он позволяет удалить файл не только из репозитория, но и, при желании, из файловой системы.

Удалить файл из файловой системы, конечно, можно легко сделать во многих других приложениях, например. текстовый редактор, IDE или файловый браузер. Но удаление файла из фактического репозитория Git — это отдельная задача, для которой и был создан git rm.

Важные параметры

Имя файла (или нескольких файлов), который вы хотите удалить. Присвоение имени файлу, который вы хотите удалить, может быть таким же простым, как указание имени файла/пути к одному файлу. Но вы также можете указать несколько имен файлов (разделенных пробелами) или даже подстановочный знак (например, test.* ).

--кэшировано

Удаляет файл только из репозитория Git, но не из файловой системы.По умолчанию команда git rm удаляет файлы как из репозитория Git, так и из файловой системы. При использовании флага --cached фактический файл на диске не будет удален.

Рекурсивно удаляет папки. Когда указан путь к каталогу, флаг -r позволяет Git удалить эту папку вместе со всем ее содержимым.

--пробный запуск

На самом деле никакие файлы не удаляются. С этой опцией (или ее сокращенным обозначением -n) вы увидите только те файлы, которые Git должен удалить, но на самом деле файлы не удаляются.

Удаление файлов в Tower

Если вы используете клиент Tower Git, удалить файлы очень просто: выбрав опцию «Переместить в корзину», Tower автоматически пометит файл как «удаленный» в Git. А если вы передумаете, вы можете просто нажать CMD+Z, чтобы восстановить файл!

Примеры использования

Чтобы удалить файл как из репозитория Git , так и из файловой системы, вы можете использовать git rm без каких-либо параметров (кроме имени файла, конечно):

Если вы хотите удалить файл только из репозитория, но оставить его в файловой системе, вы можете добавить флаг --cached:

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

Подробнее

  • Полное описание команды см. в документации Git.
  • Часто задаваемые вопросы о Git и управлении версиями

Получите нашу популярную памятку по Git бесплатно!

Самые важные команды вы найдете на лицевой стороне, а полезные советы — на обратной. Более 100 000 разработчиков скачали его, чтобы сделать Git немного проще.

О нас

Как создатели Tower, лучшего клиента Git для Mac и Windows, мы помогаем более чем 100 000 пользователей в таких компаниях, как Apple, Google, Amazon, Twitter и Ebay, получить максимальную отдачу от Git.

Как и в случае с Tower, наша миссия с этой платформой – помочь людям стать лучшими профессионалами.

Вот почему мы бесплатно предоставляем наши руководства, видеоролики и памятки (об управлении версиями в Git и многих других темах).

© Tower, 2010-2022. Упомянутые названия продуктов и логотипы являются собственностью соответствующих владельцев.

Читайте также: