2008-11-28 41 views
5

问题:Git的愁楚:编辑窗口上,现在瓦特/ Linux上出现问题

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' 

我能做些什么,以重回正轨?

UPDATE:请看看一个更清晰的画面下(无讽刺意)

(我认为这个问题是一个我经常遇到,那个狮身人面像的文件是与平台相关的,和我不知道如何跳过他们在拉。)

[email protected]:~$ cd Rails/nutrograph/ 
[email protected]:~/Rails/nutrograph$ git rm nutrograph/ 
fatal: pathspec 'nutrograph/' did not match any files 
[email protected]:~/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 [email protected]: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. 
[email protected]:~/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 
[email protected]:~/Rails/nutrograph$ mkdir backup 
[email protected]:~/Rails/nutrograph$ cd backup/ 
[email protected]:~/Rails/nutrograph/backup$ git clone [email protected]: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. 
[email protected]:~/Rails/nutrograph/backup$ script/server 
bash: script/server: No such file or directory 
[email protected]:~/Rails/nutrograph/backup$ cd nutrograph/ 
[email protected]:~/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 
[email protected]:~/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) 

[email protected]:~/Rails/nutrograph/backup/nutrograph$ git merge origin/master 
Already up-to-date. 
[email protected]:~/Rails/nutrograph/backup/nutrograph$ git pull 
Already up-to-date. 
[email protected]:~/Rails/nutrograph/backup/nutrograph$ cd ../.. 
[email protected]:~/.local/share/Trash/files$ cd 
[email protected]:~$ cd Rails/nutrograph/ 
[email protected]:~/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) 

[email protected]:~/Rails/nutrograph$ git merge orgin 
orgin - not something we can merge 
[email protected]:~/Rails/nutrograph$ git merge orgin/master 
orgin/master - not something we can merge 
[email protected]:~/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 
[email protected]:~/Rails/nutrograph$ git reset --hard 
HEAD is now at 1925d73 got rid of "Nutrition Facts" in view 
[email protected]:~/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 
[email protected]:~/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 
[email protected]:~/Rails/nutrograph$ git pull 
Already up-to-date. 
[email protected]:~/Rails/nutrograph$ git rebase origin/master 
vendor/plugins/haml/init.rb: needs update 
[email protected]:~/Rails/nutrograph$ git pull 
Already up-to-date. 
[email protected]:~/Rails/nutrograph$ git pull origin/master 
fatal: 'origin/master': unable to chdir or not a git archive 
fatal: The remote end hung up unexpectedly 
[email protected]:~/Rails/nutrograph$ git rebase origin/master 
vendor/plugins/haml/init.rb: needs update 
[email protected]:~/Rails/nutrograph$ rm vendor/plugins/haml/init.rb 
[email protected]:~/Rails/nutrograph$ rm vendor/plugins/haml/init.rb 
rm: cannot remove `vendor/plugins/haml/init.rb': No such file or directory 
[email protected]:~/Rails/nutrograph$ haml --rails . 
Directory ./vendor/plugins/haml already exists, overwrite [y/N]? y 
Haml plugin added to . 
[email protected]:~/Rails/nutrograph$ git rebase origin/master 
vendor/plugins/haml/init.rb: needs update 
[email protected]:~/Rails/nutrograph$ git fetch origin 
[email protected]:~/Rails/nutrograph$ git merge origin/master 
Already up-to-date. 
[email protected]:~/Rails/nutrograph$ git rebase origin/master 
vendor/plugins/haml/init.rb: needs update 
[email protected]:~/Rails/nutrograph$ git pull 
Already up-to-date. 
[email protected]:~/Rails/nutrograph$ 

这其实不是一个换行符问题,因为我设置电子文本编辑器来使用UNIX风格的行结束符。在这一点上,我不知道问题是什么,只是我需要一个解决方案。

你是否忽略了我运行`git reset --hard'?

回答

10

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

git config core.autocrlf true 

这将转换从LF行尾成CRLF在Windows,并再次打开git add。如果没有这个,git认为你将整个文件的行尾从LF更改为CRLF,这很可能导致合并冲突。

此外,您的描述听起来像您可能试图在双启动情况下在Windows和Linux之间共享相同的工作存储库。由于上述原因,我不会推荐这个。为每个操作系统使用单独的存储库。

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所以未来的git拉的这个回购会自动合并所有远程更改。有了这些,你的pull就可以工作了。

将远程存储库克隆到子目录中很好地解决了这个问题,因为克隆确实设置了配置,以便从您的linux系统中进行拉取。作为'orgin'的拼写错误'origin'可能掩盖了事实,即您的拉动将起作用。

如果这对你有意义,我建议你删除脚本到启动Rails,以便更容易关注你的其他问题。