#!/bin/bash
#set -x
#Please pass document library path
SOURCE='/crypto/home/hl/tmp/stackexchange/dir_groups/source'
DEST='/crypto/home/hl/tmp/stackexchange/dir_groups/target'
declare -a target_dir_indexes
cd "$SOURCE" || exit 1
for dir in *; do
test "$DEBUG" = 'yes' && echo "$dir"
test -d "$dir" && ! test -L "$dir" || continue
if ! [[ "$dir" =~ ^(0|[1-9][0-9]*)$ ]]; then
echo "error: dir name '${dir}'; skipping"
continue
fi
target_index=$((dir/50000))
if [ "$dir" -gt 0 ]; then
if [ $((dir%50000)) -eq 0 ]; then
((target_index--))
fi
fi
target_dir_name=$(((target_index+1)*50000))
target_dir_path="${DEST}/${target_dir_name}"
# avoid unneccessary calls to mkdir or the VFS
if [ -z "${target_dir_indexes[target_index]}" ]; then
mkdir -p "$target_dir_path"
target_dir_indexes[target_index]=1
fi
echo "${dir} is moved to ${target_dir_name}"
mv -i "$dir" "$target_dir_path"
done
Я думаю, вам нужно использовать команду git clone <dir_project1>
, чтобы сначала клонировать главный проект, а затем использовать git checkout -b <new_branch_name>
для создания новой ветки и работы с файлом клонированного проекта с выбранной веткой.
Чтобы проверить, какая ветка выбрана, запустите git checkout
это отобразит список всех доступных веток (звездочка укажет, в какой ветке вы сейчас работаете)
После того, как вы проверили новую ветку, вы можете начать вносить изменения в каталог вашего проекта.Все изменения, сделанные сейчас, выполняются через только что созданную ветку. Таким образом, вы не будете изменять свою основную ветку, пока не протестируете и не будете на 100% уверены, что хотите зафиксировать/объединить свои изменения в основную ветку. (мы доберемся до этой части ближе к концу)
После того, как вы каким-либо образом изменили каталог, (добавив файл или изменив существующий файл/каталог ), используйте команду git add <insert_file_here.txt>
, чтобы git понял, что вы внесли изменения в этот файл.
Затем вы должны зафиксировать изменения, чтобы навсегда сохранить их в этой ветке. Обычно перед вашей первой фиксацией вы должны использовать git config
, который будет содержать ваше имя пользователя или адрес электронной почты, чтобы указать, кто вносит эти изменения.
бывший:git config --global user.email EMAIL
git config --global user.name “FULL NAME"
Но в данном случае, поскольку все это локально и кажется, что вы будете единственным, кто будет работать с этими файлами, вы можете пропустить этот шаг и сделать свой первый локальный коммит:
git commit -m «Первый черновик файла project.txt»
(-m используется для описания вносимых вами изменений, которые отобразятся, если вы запуститеgit diff <filename>
)
Теперь вместо использования push/pull (, которое в основном используется для удаленных репозиториев )для локальной конфигурации git, вы можете просто использовать команду git merge
.
Перед попыткой слияния вы должны сначала извлечь основную ветку, поскольку вы не можете слить основную ветку, находясь в репозиториях клонов.
git checkout master
git merge dir_project1
Мне удалось найти способ отправить сообщение в локальную ветку, если вы предпочитаете делать это таким образом:
git push. dir_project1:master