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

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

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

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

Q&A

解決済

1回答

433閲覧

git push 入門

yamada_ksks

総合スコア41

Git

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

0グッド

0クリップ

投稿2020/02/24 12:16

git初心者です。

testリポジトリ
┗testフォルダ
┗┗test1.py(masterブランチ)

上記はリモートリポジトリになります。
この時、上記既存のリモートリポジトリ(masterブランチ)のtestフォルダ配下に、test2.pyをpushしたいと考えているのですが、
下記コマンドのやり方であっているかご確認していただきたいです。

①git clone http://~~~~/testリポジトリ
②cd test
③touch test2.py
④git add test2.py
⑤git commit -m
⑥git push origin master

上記①~⑥の手順を合っておりますでしょうか?

また、初めのgit cloneについて、上記既存のリモートリポジトリに新規にファイルなどをpushする際は、
必ずgit cloneを行わなければならないと思っておりますが、こちらは必ずgit cloneを行うのでしょうか?

git cloneを行う際に、リポジトリの中身の容量が多いと、時間がかかるなどのデメリットがあるため、
test2.pyを既存のリモートリポジトリに新規にpushする際に、良いやり方はございますでしょうか?

ご回答のほどよろしくお願い致します。

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

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

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

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

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

hoshi-takanori

2020/02/24 16:32

git では、一つのファイル(または一部のディレクトリ)だけを push することはできません。既存のリポジトリなら、必ずその全体を clone して、ファイルを一つ追加して、commit および push する必要があります。(push の際には実際に追加・変更したファイルの情報だけが送信されます。) なお、履歴が多すぎて clone に時間がかかる場合は shallow clone という手法もあります。(が、少なくとも最新版のファイル一式を取得することにはなります。)
yamada_ksks

2020/02/25 03:57

なにか日本語でのドキュメントや参考になるサイトはございますでしょうか?
yamada_ksks

2020/02/25 05:45

git では、一つのファイル(または一部のディレクトリ)だけを push することはできません。既存のリポジトリなら、必ずその全体を clone して、ファイルを一つ追加して、commit および push する必要があります。(push の際には実際に追加・変更したファイルの情報だけが送信されます。) 上記より二つご質問です。 ①その全体を clone こちらは業務で同じリポジトリで作業を複数の人が行っている場合などで、実際に新規にそのリポジトリにファイルやフォルダを追記するときはたは、とえ量が膨大だとしても、git cloneを行い、pushを行うのでしょうか? 上記の解釈が正しければ、ファイルやフォルダをリモートリポジトリに新規にpushする際は誰も作業を行っていない時間にGUIから追加するほうがよろしいでしょうか? ②push の際には実際に追加・変更したファイルの情報だけが送信されます こちらはgit commit したものだけがリモートリポジトリへpushされるため、 cloneよりは時間はかからないといった解釈でお間違いないでしょうか?
hoshi-takanori

2020/02/25 06:22

①継続してそのリポジトリに対して作業する場合、最初に一度 clone したら、次からは必要に応じてそれを最新の状態に更新するのですが、この場合も変更されたファイルだけを取ってくるので、clone より時間はかかりません。一時的にそのリポジトで作業する場合は、全体を clone することになりますね。 また、並行作業に関しては、git では各作業者が(作業内容ごとに)ブランチというものを作って作業して、ある程度作業がまとまった段階でマージすることになります。ブランチで作業している間は、他の作業者とは全く無関係に作業を行い、マージの際に他の作業者の成果とすり合わせることになります。 ブランチによる作業のイメージはこちらをどうぞ。 https://backlog.com/ja/git-tutorial/stepup/12/ ②はい。
yamada_ksks

2020/02/25 06:47

cloneも2回目以降は差分でcloneを行うので一番初めの時と比べれば早く対応できるといった形で承知しました。すいません、こちらでのご回答だとベストアンサーができないです。。。
hoshi-takanori

2020/02/25 09:00

お役に立てればそれで十分です。バージョン管理の中でも、特に git は概念が難しくて大変だと思いますが、頑張ってください。
guest

回答1

0

ベストアンサー

コマンドの流れについては、大方問題ないと思います、
ただ、⑤つめやbranchについても考えていた方がいいのかな、と。

気になったところ

引用テキスト⑤git commit -m "コミットメッセージ"

-mオプションは、コミットメッセージを書くためのものです。addした内容についてなるべく簡潔にわかりやすく書くと良いと思います。

・またご存知だと思いますが、gitにはブランチという概念があります。
なので、作業ブランチを作成して、ファイルの追加/修正などを行うのが一般的かな、っと思いました。
masterブランチ, releaseブランチ, developブランチなどに分けて、開発はdevelopブランチから各作業ごとにブランチを作成することが多いように思います。(その後、変更内容に問題なければdevelopにmergeし、release, masterと随時mergeしていくような感じです。チームによって流れは異なるので、はっきりとは言えません。)

git cloneを行う際に、リポジトリの中身の容量が多いと、時間がかかるなどのデメリットがあるため、

test2.pyを既存のリモートリポジトリに新規にpushする際に、良いやり方はございますでしょうか?

こちらについてはgithubでしたら、「create new file」というボタンがあり、それを押せばファイルを追加できます。(gitlabにもあった覚えがあります)

投稿2020/02/24 13:06

編集2020/02/24 14:24
hayato7

総合スコア1135

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

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

yamada_ksks

2020/02/25 03:59

「create new file」で作成する旨ありがとうございます。 ではローカルリポジトリからリモートリポジトリにpushする際に、一部をpushすることはできないでしょうか?必ず、git cloneをしなければ、同期できないでしょうか? なにか日本語でのドキュメントや参考になるサイトはございますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問