Git Woes: отредактировано на windows, теперь с проблемами на linux - PullRequest
5 голосов
/ 29 ноября 2008

Проблема:

edited files on windows, using git-bash, to fix IE7 problems

committed, pushed to github repo

booted back into linux

pulled from repo

merge conflict in dozens of files

used 'git reset --hard'

Что я могу сделать, чтобы вернуться на правильный путь?

ОБНОВЛЕНИЕ: пожалуйста, посмотрите на следующее для более ясной картины (никакой иронии не предполагается)

(Я думаю, что проблема, с которой я часто сталкиваюсь, заключается в том, что файлы sphinx зависят от платформы, и я не знаю, как их пропустить при извлечении.)

jess@home:~$ cd Rails/nutrograph/
jess@home:~/Rails/nutrograph$ git rm nutrograph/
fatal: pathspec 'nutrograph/' did not match any files
jess@home:~/Rails/nutrograph$ git pull
remote: Counting objects: 29, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 15 (delta 11), reused 0 (delta 0)
Unpacking objects: 100% (15/15), done.
From git@github.com:shalunov/nutrograph
   1925d73..1ed7f46  master     -> origin/master
Updating 1925d73..1ed7f46
TODO: needs update
app/models/data_link.rb: needs update
app/models/footnote.rb: needs update
app/models/static_chart.rb: needs update
app/views/food_description/index.haml: needs update
app/views/food_description/titles.haml: needs update
app/views/site/about.html.erb: needs update
app/views/static_page/_random_foods.haml: needs update
app/views/static_page/index.haml: needs update
app/views/static_page/show.haml: needs update
app/views/static_page/sweet-potato-cooked-boiled-without-skin: needs update
config/development.sphinx.conf: needs update
config/environment.rb: needs update
db/migrate/10_create_food_comparisons.rb: needs update
db/sphinx/development/food_description_core.spa: needs update
db/sphinx/development/food_description_core.sph: needs update
db/sphinx/development/food_description_core.spl: needs update
public/static_pages/beans-snap-green-cooked-boiled-drained-with-salt: needs update
public/static_pages/butter-salted: needs update
public/static_pages/cheese-muenster: needs update
public/static_pages/sweet-potato-cooked-boiled-without-skin: needs update
test/fixtures/data_links.yml: needs update
test/fixtures/footnotes.yml: needs update
test/fixtures/static_charts.yml: needs update
test/unit/static_chart_test.rb: needs update
vendor/plugins/haml/init.rb: needs update
error: Entry 'app/views/static_page/index.haml' not uptodate. Cannot merge.
jess@home:~/Rails/nutrograph$ l
app/     CSV_files/  doc/  log/            public/   README.rdoc  spec/     test/  TODO             vendor/
config/  db/         lib/  Nutrograph.pdf  Rakefile  script/      stories/  tmp/   utf8_general_ci
jess@home:~/Rails/nutrograph$ mkdir backup
jess@home:~/Rails/nutrograph$ cd backup/
jess@home:~/Rails/nutrograph/backup$ git clone git@github.com:shalunov/nutrograph.git
Initialized empty Git repository in /home/jess/Rails/nutrograph/backup/nutrograph/.git/
remote: Counting objects: 2346, done.
remote: Compressing objects: 100% (2025/2025), done.
remote: Total 2346 (delta 958), reused 996 (delta 146)
Receiving objects: 100% (2346/2346), 19.74 MiB | 373 KiB/s, done.
Resolving deltas: 100% (958/958), done.
Checking out files: 100% (867/867), done.
jess@home:~/Rails/nutrograph/backup$ script/server
bash: script/server: No such file or directory
jess@home:~/Rails/nutrograph/backup$ cd nutrograph/
jess@home:~/Rails/nutrograph/backup/nutrograph$ script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/servers/mongrel.rb:57:in `initialize': No such file or directory - /home/jess/Rails/nutrograph/backup/nutrograph/log/development.log (Errno::ENOENT)
    from /usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/servers/mongrel.rb:57:in `open'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/servers/mongrel.rb:57
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:355:in `new_constants_in'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/dependencies.rb:510:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/server.rb:39
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/server:3
jess@home:~/Rails/nutrograph/backup/nutrograph$ git merge
usage: git-merge [options] <remote>...
   or: git-merge [options] <msg> HEAD <remote>

    --stat                show a diffstat at the end of the merge
    -n                    don't show a diffstat at the end of the merge
    --summary             (synonym to --stat)
    --log                 add list of one-line log to merge commit message
    --squash              create a single commit instead of doing a merge
    --commit              perform a commit if the merge succeeds (default)
    --ff                  allow fast forward (default)
    -s, --strategy ...    merge strategy to use
    -m, --message ...     message to be used for the merge commit (if any)

jess@home:~/Rails/nutrograph/backup/nutrograph$ git merge origin/master
Already up-to-date.
jess@home:~/Rails/nutrograph/backup/nutrograph$ git pull
Already up-to-date.
jess@home:~/Rails/nutrograph/backup/nutrograph$ cd ../..
jess@home:~/.local/share/Trash/files$ cd
jess@home:~$ cd Rails/nutrograph/
jess@home:~/Rails/nutrograph$ git merge
usage: git-merge [options] <remote>...
   or: git-merge [options] <msg> HEAD <remote>

    --stat                show a diffstat at the end of the merge
    -n                    don't show a diffstat at the end of the merge
    --summary             (synonym to --stat)
    --log                 add list of one-line log to merge commit message
    --squash              create a single commit instead of doing a merge
    --commit              perform a commit if the merge succeeds (default)
    --ff                  allow fast forward (default)
    -s, --strategy ...    merge strategy to use
    -m, --message ...     message to be used for the merge commit (if any)

jess@home:~/Rails/nutrograph$ git merge orgin
orgin - not something we can merge
jess@home:~/Rails/nutrograph$ git merge orgin/master
orgin/master - not something we can merge
jess@home:~/Rails/nutrograph$ git rebase orgin/master
TODO: needs update
app/views/static_page/index.haml: needs update
config/development.sphinx.conf: needs update
config/environment.rb: needs update
db/sphinx/development/food_description_core.spa: needs update
db/sphinx/development/food_description_core.sph: needs update
vendor/plugins/haml/init.rb: needs update
jess@home:~/Rails/nutrograph$ git reset --hard
HEAD is now at 1925d73 got rid of "Nutrition Facts" in view
jess@home:~/Rails/nutrograph$ git pull
Updating 1925d73..1ed7f46
Fast forward
 app/views/layouts/application.haml |   25 +++++++++++--------------
 app/views/static_page/index.haml   |    6 +++---
 nutrograph                         |    1 +
 public/javascripts/tabs.js         |    4 +++-
 public/stylesheets/sass/site.sass  |   16 +++++++++-------
 public/stylesheets/site.css        |   14 ++++++++------
 6 files changed, 35 insertions(+), 31 deletions(-)
 create mode 160000 nutrograph
jess@home:~/Rails/nutrograph$ script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).
** Rails signals registered.  HUP => reload (without restart).  It might not work well.
** Mongrel 1.1.5 available at 0.0.0.0:3000
** Use CTRL-C to stop.


Processing SiteController#index (for 127.0.0.1 at 2008-11-28 16:45:38) [GET]
  Session ID: aa0ab6213969dc2ce78472f9c5f57258
  Parameters: {"action"=>"index", "controller"=>"site"}
  SQL (0.000153)   SET NAMES 'utf8'
  SQL (0.000077)   SET SQL_AUTO_IS_NULL=0
  StaticPage Columns (0.000841)   SHOW FIELDS FROM `static_pages`
 .
 .
 .
 .
Rendering template within layouts/application
Rendering static_page/index
Completed in 0.69965 (1 reqs/sec) | Rendering: 0.34820 (49%) | DB: 0.26384 (37%) | 200 OK [http://localhost/4000-beef-round-top-round-separable-lean-only-trimmed-to-quarter-inch-fat-select-cooked-braised]
^C** INT signal received.
Exiting
jess@home:~/Rails/nutrograph$ git pull
Already up-to-date.
jess@home:~/Rails/nutrograph$ git rebase origin/master
vendor/plugins/haml/init.rb: needs update
jess@home:~/Rails/nutrograph$ git pull
Already up-to-date.
jess@home:~/Rails/nutrograph$ git pull origin/master
fatal: 'origin/master': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
jess@home:~/Rails/nutrograph$ git rebase origin/master
vendor/plugins/haml/init.rb: needs update
jess@home:~/Rails/nutrograph$ rm vendor/plugins/haml/init.rb 
jess@home:~/Rails/nutrograph$ rm vendor/plugins/haml/init.rb 
rm: cannot remove `vendor/plugins/haml/init.rb': No such file or directory
jess@home:~/Rails/nutrograph$ haml --rails .
Directory ./vendor/plugins/haml already exists, overwrite [y/N]? y
Haml plugin added to .
jess@home:~/Rails/nutrograph$ git rebase origin/master
vendor/plugins/haml/init.rb: needs update
jess@home:~/Rails/nutrograph$ git fetch origin
jess@home:~/Rails/nutrograph$ git merge origin/master
Already up-to-date.
jess@home:~/Rails/nutrograph$ git rebase origin/master
vendor/plugins/haml/init.rb: needs update
jess@home:~/Rails/nutrograph$ git pull
Already up-to-date.
jess@home:~/Rails/nutrograph$ 

На самом деле это не проблема перевода строки, так как я установил в текстовом редакторе e конец строки в стиле Unix. но на данный момент я не знаю, в чем проблема, просто мне нужен раствор.

Вы игнорируете, что я запустил `git reset --hard '??

Ответы [ 2 ]

9 голосов
/ 29 ноября 2008

Похоже, вам нужно установить параметры окончания строки в Windows:

git config core.autocrlf true

Это преобразует окончания строк из LF в CRLF в Windows и обратно в git add. Без этого git считает, что вы изменили окончание строк всего файла с LF на CRLF, что может вызвать конфликты слияния.

Кроме того, ваше описание звучит так, как будто вы пытаетесь использовать один и тот же рабочий репозиторий между Windows и Linux в ситуации двойной загрузки. Я не рекомендовал бы это по вышеуказанной причине. Используйте отдельные репозитории для каждой ОС.

1 голос
/ 29 ноября 2008

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

Я предполагаю, что вы создали это хранилище в своей системе Linux, затем загрузили его в GitHub и затем клонировали в свою систему Windows. Когда вы клонируете репо, Git устанавливает некоторые параметры конфигурации, чтобы он знал, как сделать git pull позже, но когда вы создаете удаленный репозиторий, вы должны установить их вручную. (Это не ясно задокументировано где-либо, что я видел.)

После создания репозитория GitHub вы могли установить в своей системе Linux:

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

Они настраивают git, чтобы будущие git pull из этого репозитория автоматически объединяли все удаленные изменения. С их помощью ваш pull сработал бы.

Клонирование удаленного репозитория в подкаталог решило это очень хорошо, потому что клонирование установило конфиги так, чтобы вытягивание работало из вашей системы Linux. Неправильное написание слова «origin» как «orgin» могло скрыть тот факт, что ваша тяга сработает.

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

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