Git Woes:在windows上编辑,现在在linux上出现问题

时间:2008-11-28 22:55:33

标签: git

问题:

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 个答案:

答案 0 :(得分:9)

听起来你需要在Windows中设置行结束选项:

git config core.autocrlf true

这将在Windows上将行结尾从LF转换为CRLF,然后再在git add上转换回来。如果没有这个,git会认为您将整个文件的行结尾从LF更改为CRLF,这可能会导致合并冲突。

此外,您的描述听起来像是在双启动情况下尝试在Windows和Linux之间共享相同的工作存储库。出于上述原因,我不建议这样做。为每个操作系统使用单独的存储库。

答案 1 :(得分:1)

我不确定你为什么发布这整个成绩单,它确实表明你不仅仅是有线结束问题。也许你认为你遇到的几个问题都有一个原因。

我猜你在linux系统上创建了这个repo,然后将其上传到GitHub,然后克隆到你的Windows系统。当您克隆一个repo时,Git会设置一些配置参数,以便它稍后知道如何执行git pull,但是当您创建一个远程存储库时,您必须手动设置它们。 (在我见过的任何地方都没有明确记录。)

创建GitHub仓库后,您可以在Linux系统上设置:

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

这些配置git,因此来自此repo的未来git pull将自动合并所有远程更改。有了这些,pull就可以了。

将远程存储库克隆到子目录中非常好地解决了这个问题,因为克隆确实设置了配置,以便从您的Linux系统中提取。将'起源'拼错为'orgin'可能已经掩盖了你的拉动会起作用的事实。

如果这对您有意义,我建议您删除成绩单以启动Rails,以便更容易关注您遇到的其他问题。