2017-03-11 31 views
0

私はgitを初めて使っています。私はgitのオープンソースプロジェクトに貢献しています。私はそれをフォークし、支店を作った。そのアンドロイドプロジェクト。それから私はそれをクローンしてローカルコピーを作成し、それをフォルダに保存しました。私は、アンドロイドスタジオでそれを開いた必要なchanges.Thenを作った私は次のようでした。この時点でコミットをgitにプッシュできません

git add <the file name where i made changes>

git commit -m <message>

i」を変更がコミットされている場所へとまだ混乱していますか?私は自分のコンピュータに保存されているローカルのコピーでそれを仮定します。そして、私はそれをプッシュしようと、それは私にエラーを与える:

git push upstream master 
Username for 'https://github.com': Midhun07 
Password for 'https://[email protected]': 
remote: Permission to opendatakit/collect.git denied to Midhun07. 
fatal: unable to access 'https://github.com/opendatakit/collect.git/': The requested URL returned error: 403 

しかし、ここでopendatakit/collect.gitは、Gitが変更をプッシュしようとしているところです。しかし、私はupstream/masterではなく、masterに変更をプッシュしたいと思います。しかし、私がしようとしたときgit push masterそれは私に次のエラーを与える。

fatal: 'master' does not appear to be a git repository 
fatal: Could not read from remote repository. 

また、上流/マスターと比較して、私のマスターブランチの後ろに9つのコミットがあるという別の問題があります。私はすべて混乱している。私を案内してください。

+0

*「私はマスターに変更をプッシュしたい」*変更はローカルブランチにプッシュされません。すでに 'master'にいる場合、' git commit'はそのブランチに対して新しいコミットを作成します。他に何もする必要はありません。別のブランチにいる場合は、 'git merge'を使って変更を' master'ブランチにマージすることができます。基本を知るにはhttps://git-scm.com/book/en/v2を読むことをお勧めします。 –

+0

@FelixKling私は、そのブランチに新しいコミットが作成されていないことを確認しました。 – Midhun

答えて

1

upstreamは、あなたがフォークした元のプロジェクトです。 https://github.com/opendatakit/collectです。 プロジェクトの保守担当者だけがそれを押すことができます。

ローカル変更をGitHubにプッシュしたい場合は、 https://github.com/Midhun07/collectをフォークにプッシュします。 origin、 ではなく、upstreamとする必要があります。ローカルのGitのリポジトリに

git push origin master 

At this point I am still confused as to where are the changes committed?

:だからあなたにコマンドを変更します。 この点があなたには明らかでない場合は、learnもう少し動かす必要があります。 他の人が(からフォーク)あなたはそれと同期前回9つのコミットを追加しました:

I also one another problem of my master branch being behind by 9 commits as compared to upstream/master. I' am all confused. please guide me.

これは、元のプロジェクトは進化してきたことを意味します。 あなたがリベースすることができ、あなたの地元のクローン、 でそれらのコミットを取得したい場合:

git fetch upstream master 
git rebase upstream/master 

は競合があるかもしれない、注意してください。 Git bookでは、競合のリベースと解決の詳細を読むことができます。

0

Githubの典型的なシナリオはこうです。

  1. 公開リポジトリが見つかりました。 github.com/opendatakit/collect
  2. コピーをフォークします。これで自分のコピーが作成されました。 github.com/Midhun07/collect
  3. コンピューターにクローンして作業します。デフォルトでは、gitはリポジトリのリモート名をoriginとします。
  4. 通常、フォークしたプロジェクトの2番目のリモートを追加し、名前をupstreamとします。

これは私があなたがここでやったことを推測していることです(特にGithubを見ていると、正確にこれを行ったようです)。

あなたはGithubのopendatakitのコピーに書き込む権限を持っていません。だからこそあなたは自分のコピーを最初に作りました。

あなたがする必要があることは、フォークしたコピーにプッシュすることです。

git push origin master 

あなたが持っている別のものをリモコン見ることができ、どのようなURLを彼らはremoteコマンドを使用して、にプッシュしようとします。

git remote -v 

これはおそらくこのように見えます。

origin [email protected]:Midhun07/collect.git (fetch) 
origin [email protected]:Midhun07/collect.git (push) 
upstream https://github.com/opendatakit/collect.git (fetch) 
upstream https://github.com/opendatakit/collect.git (push) 
+0

その情報をありがとう。 'git remote -v'コマンドを入力すると、私はこれを得ます: '上流\t https://github.com/opendatakit/collect.git(フェッチ) ' '上流\t https://github.com/opendatakit /collect.git(プッシュ) ' 原産地については言及していません。それは起源が設定されていないことを意味しますか? – Midhun

+0

@Midhunはい、あなたは1つを追加する必要があります。 'git remote add origin ' –