Когда вы используете git, как вы перемещаете точный рабочий каталог на удаленный компьютер? - PullRequest
5 голосов
/ 23 января 2009

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

В какой-то момент я хочу повторно запустить локальный репозиторий, подключить его к удаленному и, в конечном итоге, перенести мой локальный рабочий каталог на удаленный сервер в том виде, в каком он есть (то есть я хочу, чтобы все добавленные / удаленные файлы будут такими же в пульте)

Как бы мне этого добиться?

Вот мое текущее решение, которое мне не нравится (и может работать не во всех случаях).

git init

git remote add origin [some_url]

git add. # добавляет все файлы в рабочий каталог

git commit -m "добавление файлов"

(На данный момент моя текущая идея заключается в следующем:

  • сделать ветку,

  • получить пульт в него,

  • 'ветка git diff master> my_patch'

  • применить этот патч к ветке,

  • толчок от ветви к пульту,

  • тянуть в мастер,

  • и убить ветку.)

Ясно, что моя идея довольно сложна и безобразна. Есть идеи?

Ответы [ 4 ]

9 голосов
/ 23 января 2009

Примерно так (если вы начинаете с потерянного момента .git)?

# Make the current directory a git repository.
# This puts you on a master branch with no commits.
git init

# Add a reference to the remote repository.
git remote add origin urlurlurl

# Fetch the remote refs.
git fetch

# Without touching the working tree, move master branch
# from nowhere onto the remote master.
git reset origin/master

# Stage all changes between the new index and the current tree.
git add -A

# Make a commit of these changes.
git commit -m "New working tree as a patch on remote master"
3 голосов
/ 23 января 2009

Не думаю, что в вашем случае необходимо создавать новую ветку. Вот мой ответ: Сделайте следующее в своем текущем локальном поврежденном репо:

git init
git add .
git commit -m 'add files'  #create the local master branch
git remote add myproj [some_url]
git fetch myproj  
git branch -r  #check the remote branches
git diff master..myproj/master  #view the diffs between your local and remote repos
#now you are sure there is no conflict,
#so you merge the remote to your local master branch
git pull myproj master  
git push myproj  #push your local master branch to remote
#now your upstream and downstream is sync'ed
1 голос
/ 23 января 2009

Вот мое текущее решение (допустим, я уже нахожусь в каталоге, содержащем текущие файлы, но не получаю git-репо)

git clone -n [git_url] tmp_git_dir
mv tmp_git_dir/.git .
rm -rf tmp_git_dir
git add .
git commit -a -m "commit message"

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

Интересно - есть ли способ клонировать git-репо в текущий каталог (в основном я просто хочу, чтобы каталог .git был на месте в текущем каталоге, чтобы мне не приходилось выполнять mv и rm)? *

0 голосов
/ 23 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...