Понимание git init

Что такое git init точно? Должен ли я делать это один раз на компьютер или один раз для проекта, который использует git? Я загрузил свой проект git clone и получил его работу, но теперь он сохраняет мой проект и C:/Users/myUser/git, это определенная папка или я могу ее изменить?

Я действительно мало знаю об этой папке, это похоже на локальный репозиторий git или что-то в этом роде, но что "управляет" им или почему он использует этот путь, можете ли вы объяснить это?

Вот что я понимаю, исправьте меня, если я ошибаюсь, нужно получить факты прямо:

  • git init для каждого проекта
  • Папка git в разделе "Пользователи" - это локальное репо, и каждый раз, когда я делаю git commit, эта папка обновляется.
  • Когда я делаю git push, он берет из этого локального репо и помещается в удаленный репозиторий.
  • Когда я хочу обновиться до "HEAD", я просто делаю git pull

Ответы

Ответ 1

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

  • git init для каждого проекта

    Почти правильно. git init используется для начала использования git в проекте, который не находится под git. Для проектов, уже находящихся под git, вы используете git clone.

  • Папка git в разделе "Пользователи" - это локальное репо

    Почти правильно. Фактически папка .git not git. Это происходит из соглашения unix, что все файлы и папки, начинающиеся с точки, считаются скрытыми.

    Во-вторых, папка не находится в папке "Пользователи". Он находится под папкой вашего проекта. Таким образом, папка C:/Users/myUser/ - это один проект. Если это не ваше намерение, вы скорее всего случайно выполнили git init в папке пользователя.

    Каждый проект имеет одну папку .git в корневом каталоге проекта, и это репозиторий проекта. Это одна из причин, по которой git работает так быстро по сравнению с svn или cvs - весь репозиторий обрабатывается на локальном жестком диске без сетевого трафика.

  • Когда я нажимаю git, он берет из этого локального репо и помещает в удаленный

    Правильно, но только для репозиториев, у которых есть пульты дистанционного управления (которые обычно создаются с помощью git clone для копирования удаленного репо).

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

    Команда git clone автоматически настраивает необходимую конфигурацию вашего репо для подключения к удаленному компьютеру. Но вы также можете вручную настроить репо с помощью git init для подключения к удаленному компьютеру.

  • , что "управляет" этим

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

    * Примечание: Удаленные репозитории запускают серверы, поэтому вы можете подключиться к ним. Но технически они не действительно серверы git. Это файловые серверы, из которых git можно загрузить и загрузить.

Ответ 2

Четыре ваших понимания" → более или менее правильные, хотя вам не хватает нескольких деталей.

git init инициализирует (т.е. создает) репозиторий. Каждый проект должен находиться в собственном репозитории.

Если вы загрузили проект с помощью git clone, вам не нужно снова запускать git init.

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

Нажатие и вытягивание могут усложняться, особенно когда вы работаете над проектом с другими, и когда вы используете ветки. Мне не очень понятно написать полное введение в эту тему, поэтому я предлагаю вам прочитать Pro Git для более подробное объяснение.

Ответ 3

git init предназначен только тогда, когда вы создаете свой собственный новый репозиторий с нуля. Он превращает каталог в пустой репозиторий git.

Когда вы используете git clone для клонирования существующего репозитория в новый, git init не требуется и не требуется.

Ответ 4

#!bin/bash
DATE=`date +%m%d%Y.%H%M%S`
TARGET="$1.$DATE"
DIR=`pwd`


function batch_convert() {
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
batch_convert $1"/"$file
else
dos2unix $1"/"$file
#echo $1"/"$file
fi
done
}

##################

echo $TARGET
cd $DIR/DCW
git pull
cd ../
batch_convert DCW
cp -R DCW tmp/$TARGET
cd tmp/$TARGET
find . -type d -name "*git*"| xargs -n20 rm -rf



for db in `cat $DIR/tmp/$TARGET/Dblist` ; do
        echo "********** DB IS $db *******"
       for dbfolder in `find * -maxdepth 0 -type d` ;do
    echo `ls -a`
        echo "***** DBFolder is  $dbfolder *****"
    if [ ! $dbfolder = $db ];then
    cp -R $dbfolder $db
    find $db -name "*.ctl"| xargs -I '{}' mv '{}' $db/${db}.ctl
    fi
    done
done
cd ../
tar -cf $TARGET.tar $TARGET