質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

BitBucket

BitBucketは無料のリポジトリ管理ホスティングサービスです。 MercurialとGitのVCSに対応しています。プライベートリポジトリを、制限なく作成することが可能です。

Q&A

解決済

3回答

26726閲覧

git push できない

退会済みユーザー

退会済みユーザー

総合スコア0

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

BitBucket

BitBucketは無料のリポジトリ管理ホスティングサービスです。 MercurialとGitのVCSに対応しています。プライベートリポジトリを、制限なく作成することが可能です。

1グッド

0クリップ

投稿2018/08/16 07:57

前回質問したときにブランチはローカルできるものだといわれたので
ローカルで develop からブランチをきって作業してたんですが
この状態でリモート bitbucket の同じブランチ名に push するのはどすればいいのでしょうか

ただ push しただけでは
fatal: The current branch test has no upstream branch.
To push the current branch and set the remote as upstream, use
といわれてしまって

リモートでも bitbucket からブランチをきったところ
hint: Updates were rejected because the tip of your current branch is behind
となって push できません

追記:

毎回 git の質問をしてもサイトをよんで勉強しろって回答くるのですが

入門サイトもあちこちのサイトで10回以上読み返しているんですが
pull merge checkout fetch をどういう場合に使うのかが全くわからないです
というよりサイトどおりコマンドうっても毎回何かコンフリクトがおきてうまくいかず
すべて clone からやり直すはめになります

ほんとに申し訳ないですがわかりやすく教えてくれるか おすすめのサイトを紹介していただけないでしょうか

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Udomomo

2018/08/16 08:24

私もそうでしたが、超初心者レベルのときは回答一つでスッキリ解決するわけではないんですよね...サイトではなく、プロが書いた入門向けの本を一冊読んでみる方がいいかもしれません。gitはこの本がとてもわかりやすいです。https://www.amazon.co.jp/dp/B071D4D6XX
ku__ra__ge

2018/08/16 11:39 編集

gitを理解するための資料として [怖くないgit] https://www.slideshare.net/kotas/git-15276118 をおすすめします。ページ数が多そうに見えますが、すごく読みやすいのでまず最初の20ページほどパラパラ読んでみましょう。
guest

回答3

0

ベストアンサー

エラーメッセージに答えが書いてあるじゃないですか。拒絶反応せずにGoogle翻訳にぶちこんでください。

というかなんかエラーメッセージが省略されていますが

$ git push fatal: The current branch develop has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin hoge

こんな感じだったんじゃないですか?

ほーら、もうやるべきことまんま書いてあるじゃないですか(ちなみに--set-upstream-uでも等価)


やるべきことは完璧に理解できたと思うので、理由を解説していきましょう。

gitにはgitサーバー(GitHubとか)とremoteとlocal(適当な用語がないのでこう呼ぶことにします、手元に存在しているbranch群のこと)の3人の登場人物が居ます。

cloneしてきたときに最初にlocal作られるbranch以外のlocal branchは何もしないとremoteのbranchと紐付いていません。紐付いていないということは当然pullもpushもできません。

紐付けるにはいくつか手段がありますが

  1. git push -uでpushと同時に紐付ける
  2. git checkout -b <local branch name> <remote name>/<remote branch name>のようにlocakにbranchを作ってcheckoutするときに紐付ける
  3. git branch -uで紐付ける

が一般的でしょう。

投稿2018/08/16 09:59

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/16 11:20 編集

いつもリモートというか bitbucket 上のUIからブランチを作って checkout をしてたので 2 になるんでしょうか 前回の質問(https://teratail.com/questions/140423)でブランチはローカルでするものっていわれたので今回ローカルで先にブランチを作ったので push にオプションをつければよかっただけなのですね よくわからないままリモートでもブランチを作ったので当然ブランチのコミット履歴が違うので push できなかったってことなのかな… 次機会があれば試してみたいと思います 丁寧にわかりやすく説明していただいてありがとうございました
yumetodo

2018/08/16 14:59

普通ローカルでbranchは切るというのはそのとおりですね。最終的に投げるbranch以外にも自分のためにbranchを切ったりとかは普通にやるので、そんなのいちいちremoteに上げません。 そもそも投げる前にgit rebase -iとかでcommitを並び替えたりくっつけたりすることがままあるので、作業ミスったときに復旧しやすいようにbranch切ったりもしますし。 branchなんてバカスカどんどんどんと切って切りまくるものです。
yumetodo

2018/08/16 15:07

前回の質問の方にも思うところをコメントしておきました。
退会済みユーザー

退会済みユーザー

2018/08/17 02:42

なるほどです push で紐付けるか checkout で紐付けるかはどちらもコマンド1つで可能で、リモート側に先にブランチができるかどうかの違いだけってことでしょうか リモートでブランチをきった場合、他の人がいま作業中のブランチがあるということが先にわかるかわりに、途中で作業を中断してしまうといつまでも作業途中のリモートブランチがたまってしまう ローカルでブランチをきった場合作業がおわると突然リモートにブランチができるのでいろんな人が一気にさわってしまうとマージに苦労する可能性があるかわりに、必ずFIXされたブランチだけがあがるのでリモートには無駄なブランチができにくいという感じなのですね
yumetodo

2018/08/17 03:23

まあそのへんはProjectの方針にもよりますけどねぇ。
guest

0

ただ push しただけでは
fatal: The current branch test has no upstream branch.
To push the current branch and set the remote as upstream, use

対応するブランチがサーバーに無いので、上げる先のブランチを教えて
と言っています。
なので、pushにサーバーのブランチを指定してやります。

bash

1$ git fetch 2$ git checkout -b feature/mywork origin/develop 3(ソース編集) 4$ git push origin feature/mywork

リモートでも bitbucket からブランチをきったところ
hint: Updates were rejected because the tip of your current branch is behind
となって push できません

状況がよく分かりませんが。
ブランチを作っでローカルで作業している間にサーバーのブランチで誰かがコミットした場合とかに
こうなります。

通常、サーバーでブランチを作る場合はこういう手順で行います。

bash

1$ git fetch 2$ git checkout feature/mywork 3(ソース編集) 4$ git push

pull merge checkout fetch をどういう場合に使うのかが全くわからないです

既に読まれてるかもしれませんが、この辺りはいかがでしょう?
【Git】リモートからの取得とリモートへの反映で行っていること(fetch,pull,push)

投稿2018/08/16 09:58

aquaS

総合スコア191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/16 11:20

怖いので試してないんですが > git checkout -b feature/mywork origin/develop これだとリモートの develop に 上書きしちゃうことにならないんでしょうか? develop からブランチをきってそこで自分だけの修正をして push してプルリクエストをだすとリーダーさんがmergeしてくれるっていうシステムになってるみたいです そのへんも人によってGITの運用が違うせいでなかなか入門サイトよんでも理解できない理由なんでしょうか ご紹介いただいたサイトを土日にでも読んで勉強させていただきます ありがとうございました
ku__ra__ge

2018/08/16 11:32

> これだとリモートの develop に 上書きしちゃうことにならないんでしょうか? git checkout --help と打てばその答えは表示されます。 まずgitの説明を読みましょう。そのほうが質問するよりも素早く問題を解決できます。
aquaS

2018/08/16 11:37 編集

> > git checkout -b feature/mywork origin/develop > これだとリモートの develop に 上書きしちゃうことにならないんでしょうか? ならないです。 このコマンドは、 ・origin/developを元にfeature/myworkをローカルに作る ・feature/myworkをcheckoutする ということを行っています。 > develop からブランチをきってそこで自分だけの修正をして push してプルリクエストをだすとリーダーさんがmergeしてくれるっていうシステムになってるみたいです であれば、回答の2番目に書いた以下手順で行う必要が有ります。 $ git fetch $ git checkout feature/mywork (ソース編集) $ git push ちなみに、git fetchはサーバーで作られたブランチやコミットを自分のPCに取り込むということをしています。 その取り込んだブランチをcheckoutして編集してコミットしたものを、pushでサーバーの同名ブランチ(feature/mywork)に反映しています。
退会済みユーザー

退会済みユーザー

2018/08/16 11:42

やっぱりその手順が正しいのですね 今回先にローカルでブランチつくっちゃったのですが 次回からもリモート側でつくって checkout するようにします 丁寧にありがとうございました
guest

0

他にも色々運用ルールが有りそうだから、
リーダーさんとかに手順を確認された方がよろしいかと思いますよ。

投稿2018/08/16 11:56

aquaS

総合スコア191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問