37233


git・githubを使い始めているのですが、いろいろうまく行かず調べても対処方が見つからない(知識が浅く調べ方が悪い)のでご存知の方アドバイス頂けると幸いです。

目的:今まで複数のPCで別々に開発してきたプログラムフォルダをgithubに入れて共有のようにしたい。  
つまずいているところ:PC1で以下の方法でレポジトリにpushできました。その同じレポジトリにPC2(別PC)のプログラムを同じ方法でpushしたいのですが以下のエラーが出てしまいました。

過程

[code]

    github上にあげたいフォルダまで行く
    git init
    git add .
    git commit -m ""
    git remote add origin https://github.com/…
    git push origin master
    
[/code]

エラー

> To <https://github.com/>….git ! [rejected]  
>  master -> master (non-fast-forward) error: failed to push some refs to  
>  '<https://github.com/>….git' hint: Updates were  
>  rejected because the tip of your current branch is behind hint: its  
>  remote counterpart. Integrate the remote changes (e.g. hint: 'git pull  
>  ...') before pushing again. hint: See the 'Note about fast-forwards'  
>  in 'git push --help' for details.

そもそもgithubの使用目的が正しくない、考え方が違う、手法が違うなどなにかアドバイス頂けると幸いです。


CC BY-SA 3.0
2017-08-15T19:42:59.243
37227
2017-08-16T01:49:11.693
20523
question
git github
2つのPCからフォルダを同じgithubのレポジトリにpushする際のエラー


**短い答え** : エラーメッセージの内容を恐れず読解し、PC2 で `git pull origin master` を実行してみましょう

**長い答え** :

ここでの登場人物として PC1, PC2, GitHub と3者が登場していますね

質問にある、PC1 でGitHub にPush した状態では... PC1, GitHub は同じ版管理状態ですが しかし、PC2
はその変更に対して追従できていません

この状態のまま、PC2 で別の作業を実施し保存した場合、「差分に追従していないのに GitHub にPC2 側の変更をGitHub
に届けようとしている」不完全な版管理状態になります

これではPC1, PC2 どちらかの状態しか維持できなくなってしまいます

そのため 最初に、先に変更された差分を、 `git pull` によってPC2 は取り入れる必要があります


CC BY-SA 3.0
2017-08-15T20:07:00.420
37229
2017-08-15T20:07:00.420
3861
37227
answer


もしかしてPC2の方でも`git init`やってたりします？  
その場合、どんなerrorが出るか試したことないので憶測になりますが...

PC1で

[code]

    git init
    git add .
    git commit -m "適切な変更履歴"
    git remote add origin https://github.com/…
    git push origin master
    
[/code]

とやってあげた後に、PC2ではPC1で上げたrepositoryを取って来てやって...

[code]

    git clone https://github.com/…
    
[/code]

必要な修正を実施。変更をcommitしてpushするのが流れになります。なので、

[code]

    git add .
    git commit -m "適切な変更履歴"
    git push origin master
    
[/code]

だけすれば良いと思います。  
この、PC2でのcloneからpushまでの間に、PC1からgithub上のrepositoryが更新(PC1で新たにpush)されてたら、PC2で

[code]

    git pull origin master
    
[/code]

が必要になるわけです。

* * *

まぁ、ホントはbranch切って作業してやるべきなんですが...  
その辺は、<http://www.backlog.jp/git-guide/> 辺りでも読んでみてください。


CC BY-SA 3.0
2017-08-16T00:51:47.047
37233
2017-08-16T01:49:11.693
2017-08-16T01:49:11.693
2383
2383
37227
answer