Понимание 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