X



Git 17

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/09/02(水) 12:18:30.39ID:XN0SxNMq
ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。

Git - Fast Version Control System
http://git-scm.com/

◆関連サイト
Pro Git - Table of Contents
http://git-scm.com/book/ja
Git入門
http://www8.atwiki.jp/git_jp/

◆前スレ
Git 15
http://mevius.2ch.net/test/read.cgi/tech/1486239735/
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/
-
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
0751デフォルトの名無しさん
垢版 |
2021/09/07(火) 11:05:48.63ID:+uF9wCX0
特定のバージョンが必要なら一旦それ入れれば良いだけだろ
要は変換できる環境で変換してしまえばできたものを持ってくればそれで良いんだから
0752デフォルトの名無しさん
垢版 |
2021/09/07(火) 12:40:17.05ID:jsklYBqQ
おお、皆さんコメントありがとうございます。

>>749

CVSを無くすことが目的の一つでもあるんです。
で、変更履歴が見れることも必要です。

>>750

SVN経由ですか。
できるなら避けたいですが、ちょっと調べてみます。

>>751

その通りなんですが、CVSからの移行をサブシステムごとに行うので、それなりの期間(多分1年以上)変換できる環境を維持する必要があるんです。


いろいろありがとうございました。
全ての要件を満たしてというのは難しそうですね。
いただいた意見を参考にもうちょっと検討します。
0753デフォルトの名無しさん
垢版 |
2021/09/08(水) 12:26:53.74ID:H9wC4dw3
git cloneする時にsshのurl指定でBranchまで指定する事って出来るの?
-bとか使わないで
0754デフォルトの名無しさん
垢版 |
2021/09/11(土) 03:42:20.13ID:s/DqN445
>>753
それ出来ないと思う
海外サイトで@でブランチ指定とか/でブランチ指定とかでやれるって書いてあるサイトも見つけたけど
実際やって見ても全然上手くいかねぇ
0755デフォルトの名無しさん
垢版 |
2021/09/12(日) 00:33:12.39ID:cVqmkIqS
ガチでない用途、雑多スクリプト集とかは平気で半年コミットしてないのとかあるんですけど
ローカルディレクトリをスキャンして最終編集日 - 最終コミット日の数字が多い順に表示して
いい加減コミットするか編集内容破棄するかしろと警告してくれるツールとかないですか
0757デフォルトの名無しさん
垢版 |
2021/09/13(月) 17:58:18.08ID:ryD/6XDI
リモートのHEADをリモートのdevelopを参照させるようにしたいのですがやり方がさっぱりわかりません。
とても単純なことのように思えるのですがどの方法でやってもSourceTreeなどでクローンするとmaster参照してて困ってます。
origin/HEAD -> origin/master
教えてくださいお願いいたします。
0758デフォルトの名無しさん
垢版 |
2021/09/13(月) 18:04:15.74ID:ryD/6XDI
こうなってます
.git]$ ls
COMMIT_EDITMSG HEAD branches description index logs packed-refs
FETCH_HEAD ORIG_HEAD config hooks info objects refs

というか僕何か勘違いしてるかも。
要はSourceTreeでクローンしたとき最新のコミットをHEADが参照してほしいのです。
そうしないと上に登ってってチェックアウトしないとだから。
0762デフォルトの名無しさん
垢版 |
2021/09/17(金) 18:11:47.26ID:J7t/c3vE
shallow clone(--depth 1)で特定コミットの指定な

git cloneにdepth指定はできるが
同時に指定できるのはタグやブランチ名だけで
SHA1で過去のコミット一つだけみたいな指定はできない

なぜかgit fetchではSHA1指定とdepthの組み合わせが出来るらしい
解せぬ
0763デフォルトの名無しさん
垢版 |
2021/09/22(水) 21:09:14.14ID:E7BplCoS
>>99
番号割り振ればできるだろ、知恵を絞れよ
何のために頭付いてるんだ、大学生にもなってなんだその頭の悪さは
gitのせいか、gitのせいでそんなに頭の悪い人間になってしまったんだな
ようし、gitを禁止します
0764デフォルトの名無しさん
垢版 |
2021/10/06(水) 17:21:18.09ID:k/56VNFd
ブランチ切り忘れてコミットしまくったあとに
過去にさかのぼってブランチを作成して
全部そこで作業していたことにしたいんだけど
どうしたらいいかな?
0766デフォルトの名無しさん
垢版 |
2021/10/06(水) 17:30:20.63ID:WIlNjQ3U
間違ってコミットしまくったブランチをまだpushしてないなら
コミットしまくった最後のコミットで新しいブランチ作って
間違ってコミットしまくったブランチの方を「git reset --hard origin/間違ったブランチ」とかすれば良いだろ?
0771デフォルトの名無しさん
垢版 |
2021/10/14(木) 13:19:16.57ID:kAsx6HNe
知っている方いたら教えてください。

CVSからGitに移行しようとしてます。
開発にはEclipseを使っていて、今はEclipseのプラグインでCVSと連携しています。
Git用にはEGitというプラグインが必要ということはググってわかりました。
EclipseでEGitを使う場合ローカルPCにGitの導入は別途必要ですか?

ネットで見た例だと、EGitで直接GitHubのリポジトリを指定してたんだけど、EGitを使えばリモートのリポジトリに直接アクセスすることになって、ローカルにリポジトリは作らない(なので、Gitの導入は不要)という理解であってますか?

事前に試せる環境がないため、経験者のかたがいれば教えてもらいたいです。
0772デフォルトの名無しさん
垢版 |
2021/10/14(木) 14:14:33.36ID:lQJgPnH3
>>771
gitはローカルリポジトリでコミットしてからリモートリポジトリにプッシュする二段階の仕組みなので、ローカルにgit「クライアント」は必要。(gitクライアントにローカルリポジトリを操作する機能が存在する)
0773デフォルトの名無しさん
垢版 |
2021/10/14(木) 14:23:38.11ID:lQJgPnH3
>>772
ちょっと補足。
Egitは使ったこと無いからは詳しく無いけど、解説とか見るとEgit+eclipseで一通りのgit操作はできるみたい。ただ、gitの仕組みとして(通常の利用方法だと)必ずローカルリポジトリを使うので、ローカルリポジトリ無しでリモートリポジトリを直接操作することはできない。

逆に、gitはリモートリポジトリ無しでローカルリポジトリのみの運用というのができるから、まずはそれで色々と試したら?
0777デフォルトの名無しさん
垢版 |
2021/10/14(木) 14:58:54.76ID:kAsx6HNe
>>772,773,774,775,776

ああ、こんなすぐに親切なレスがいっぱい!!

> ローカルリポジトリ無しでリモートリポジトリを直接操作することはできない。
そうですよね。だからGit本体も必要じゃないかと思ってたんです。

>EGit は Java の Git 実装である JGit を使って動きますので、別途 Git のコマンドラインツールなどを入れる必要はありません。

Gitそのものではないけど、Gitと同じ動きをするJGitが使われているという事ですかね。
それでEclipse+Git関連の記事でもGitのインストールについて特に触れる必要がないと。

で、今時のElipseならEGitもついてくるんですね。Pleiadesのサイト見ましたが、確かにEGitもパッケージされてますね。

JGitでググってみたら紹介してくれたwikipedia以外にも日本語で紹介/解説しているサイトがいろいあるみたいなので、まずはそちらで勉強してみます。

モヤっとしてたのがスッキリしました。

またここで追加質問しちゃうかもしれませんがよろしくお願いします。
0779デフォルトの名無しさん
垢版 |
2021/10/17(日) 09:58:04.13ID:Q0jShLZX
個人で開発してる場合に、subversionと比較してGitのほうが優れていることってどんなことがありますか?
Git使ってみてるんですが、ローカルリポジトリとリモートリポジトリに別れてるのが面倒くさく感じてしまうんです。
0782デフォルトの名無しさん
垢版 |
2021/10/17(日) 13:55:53.46ID:2tMovdDG
個人でやってるならリモートリポジトリを使う必要ないよ
別の場所にバックアップしたいときだけ稀にプッシュしておいてもいいかな程度
Gitはブランチ開発が圧倒的に便利
次バージョンの開発をしながら、ヤバいバグを見つけたらスイッチして現行リリースにパッチを当てるなんて作業がやりやすい
コミット等の操作を間違えたときの復元方法も充実してるからガンガンコミットするスタイルが身についてロスがない
あまりにも小規模な開発しかしてないならGitに移行したところで便利さに気付かないかもね
0783デフォルトの名無しさん
垢版 |
2021/10/17(日) 14:17:13.86ID:4gFBmPmU
svnはもう使わなくなってから何年も立つけど、ローカルブランチ作るのに全コピーが発生する問題は改善されたん?
gitは瞬間的にローカルブランチ作れることが、当時、最大のメリットだと個人的には感じてたけど
0785デフォルトの名無しさん
垢版 |
2021/10/17(日) 15:15:03.36ID:2tMovdDG
svnも物理コピーしてるわけじゃなくポインタをコピーしてるだけだからそこは別にデメリットではないと思う
0789デフォルトの名無しさん
垢版 |
2021/10/20(水) 03:48:00.82ID:fM0zKRFM
--filter=blob:noneでcloneしたレポで久しぶりにpullすると

remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 334 bytes | 334.00 KiB/s, done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 413 bytes | 413.00 KiB/s, done.

が延々続く
.git/configのpromiser=trueとpartialclonefilter=blob:noneを消すと秒で終わる
これは仕様?
0794デフォルトの名無しさん
垢版 |
2021/11/07(日) 12:37:05.54ID:UQcl36Q5
gitとgithubの区別がつかない人がMSアレルギーをこじらせている姿はもう見飽きた
情報のアップデートをできずに屈折した持論を垂れ流すから老害の部類かな
0795デフォルトの名無しさん
垢版 |
2021/11/08(月) 21:23:48.94ID:Tlvj8hhG
それはもはやチテキショウ害なのでは
0796デフォルトの名無しさん
垢版 |
2021/11/11(木) 10:05:05.74ID:SpIFedoW
わろす
0800デフォルトの名無しさん
垢版 |
2021/11/27(土) 18:33:16.18ID:EO01MlFX
プライベートなリポジトリをローカルにcloneしようとしたら
重いファイル(15MB程度)だけ弾かれる・・どうして・・
ちなみに学習済みの.h5ファイル
何か制限緩和するような手続きしないといけないのかな
(ただ、google経由だと全部cloneできた)
全然わからん・・
0801デフォルトの名無しさん
垢版 |
2021/11/30(火) 21:35:19.46ID:a/ltCSu7
10年程昔からの自作のフリーウェアを git で公開しようとしているんだけど
あまり昔の version はもう環境が変わっていて動かない
動くものだけを公開した方が良いのかな
それとも最新のものだけにした方がいいですか
0804デフォルトの名無しさん
垢版 |
2021/12/09(木) 01:56:53.52ID:8VFa9Xh4
gitの変更履歴より細かい単位で変更を戻したいとき、うまい方法はありますかね。
例えば一つのファイルの中で3つの関数を変更してコミットした後、1つの関数だけ
元に戻したくなった場合などに。
0805デフォルトの名無しさん
垢版 |
2021/12/09(木) 06:55:22.90ID:CTJ8MnG2
>>804
その関数を変更した後にコミット
0806デフォルトの名無しさん
垢版 |
2021/12/09(木) 07:23:14.89ID:nPf7xXRe
>>804
git rebase

1
2
3 ← ここで止める
4
5

1
2
3.1
3.2
3.3 ← こんな感じにコミット

git rebase --continue でリベース完了


あと慣れたら 2つの関数だけコミットして、
1つは戻ればいい
0810デフォルトの名無しさん
垢版 |
2021/12/09(木) 08:22:24.08ID:zGaqleE8
>>807
わかりづらいな……試してないけど
…56 3関数commit abc……master
  ここをchechout -b mod

…56 3関数commit abc……master
[mod:2関数commit]
元に戻してcommit amend

…56 3関数commit abc……
mod abc……[master]
masterをchechoutしてmodにrebase

ただし、コミットを他人と共有済みなら混乱の元なので禁止。
0811デフォルトの名無しさん
垢版 |
2021/12/09(木) 08:58:11.54ID:Dni9SPWj
>>804
履歴改変をするわけじゃないんだよね?それならば、
git revert -n でindexに三つの関数の修正を打ち消す修正を持ってきて、git reset -p でindexの余分な修正を取り除いて、git commit
0812804
垢版 |
2021/12/09(木) 09:39:57.87ID:rmYbkO4s
どうも>>804です。プッシュはしてませんのでアメンドないしリセットとしてやり直すことは
可能です(よね?)

なんというか、作業方法なども含めてキレイ&楽にやる方法はどんな感じかなと。
例えばそもそも論だと、最初からこういう場合に備えてコミットを関数1個毎とか細かくしておく?
アメンドないしリセットしてやり直す場合も、どうやって変更を用意しようかなと... もう一回
同じ変更を入力したくはないし危険... とかなんとか。
0813デフォルトの名無しさん
垢版 |
2021/12/09(木) 10:00:49.33ID:z12/cdNE
>>812
だから何をしたいのかはっきりしろ
pushしてないのは分かった
pushしてないローカルな履歴を改変したいのか?
pushしてないローカルな履歴に関数の修整を無効化するコミットを追加したいのか?
0814デフォルトの名無しさん
垢版 |
2021/12/09(木) 10:05:24.50ID:Dni9SPWj
>>812
変更の用意はrevert -nとreset -pでいいだろ
この2つを使えば自分でコードを入力する必要は無い
0817デフォルトの名無しさん
垢版 |
2021/12/09(木) 13:53:35.69ID:CTJ8MnG2
もう面倒くさいから一か所もどしましたってコミットしたらいいやん
0822デフォルトの名無しさん
垢版 |
2021/12/09(木) 15:28:07.01ID:1oFDwxyl
>>812
そもそも論の部分に回答すると、意思決定の基本は発生率とコストを掛け合わせた期待値次第
いちいち細分化しすぎてもYAGNIの法則で言われるような無駄が多くなるだけ
でも後から部分的に採用する可能性もそれなりにあるのであれば分けてコミットしておくことでコストを抑えられる可能性が増す
0823デフォルトの名無しさん
垢版 |
2021/12/09(木) 18:55:14.96ID:lg/9Dj4Y
>>812
そもそも論で言うなら、追加・修正する機能ごとにブランチを切って、完成したブランチを別々にコミットすればいい。gitはブランチが軽量という強みもあるし。

機能をマージするときにコンフリクトを修正する面倒くささはあるけど、見通しは良くなる。
0825デフォルトの名無しさん
垢版 |
2021/12/09(木) 22:51:55.36ID:EKItVGZE
追えてないけど、どれか。
・そもそもコミットきれいにしても結局使わないから作り直さない
・頻繁にコンパイル?して頻繁にコミットしておく
・もう最初から作り直せよ派: git reset $(git merge-base origin/master) → 気に入るコミット作っていく。
・ツールに関数単位で切り出させて、差分をうまいことやる。VisualStudioならこのメソッドをクラス化、みたいなやつがあったような。それ以外は知らん。
0826デフォルトの名無しさん
垢版 |
2021/12/09(木) 23:49:30.01ID:Fvd6f3uE
コミットをセーブ機能だと思うからだめなんだよ
袋だと思え袋
コードを書くたびに適切な袋に入れろ
0828デフォルトの名無しさん
垢版 |
2021/12/10(金) 15:18:37.19ID:dSCEiiiB
最近では、機能ブランチは問題を先送りにしているだけだという批判もある
機能ブランチはすぐにリリースして消せ、作りかけならフィーチャートグルで蓋をしろというスタイルもあるぞ
それは一理あって、実際複数のチームでそれぞれフィーチャーブランチを担当してリリース時に一気にマージするスタイルの大規模サービス開発やってたときには
マージの失敗でトラブルが起こることは日常茶飯事だったね
0829デフォルトの名無しさん
垢版 |
2021/12/11(土) 00:15:15.28ID:L5jxStGt
それは機能ブランチが悪って話じゃなくて、機能ブランチをやたらと長期間分離しておくのが悪って話じゃね
何事もトレードオフだから機能がでかいならイテレーションを小さく取るし、リリースギリギリまでマージしなければ泣きを見るので頃合いを見て合流してテスト始める
互いに影響し合う部分についてはコミュニケーション取りつつ適宜ソースをやり取りしろというのがGitの指針だったと思うし
0831デフォルトの名無しさん
垢版 |
2022/01/12(水) 19:57:57.27ID:IbSx3jpA
こういうコミットをしてたとして

$ git log --oneline

commit_id_5 やっぱり××を復活させる(2021/05/01)
commit_id_4 □□を修正(2021/04/01)
commit_id_3 ××を削除(2021/03/01)
commit_id_2 △△を修正(2021/02/01)
commit_id_1 〇〇を修正(2021/01/01)


「commit_id_3 と commit_id_5 を消して、コミットログをきれいにした状態でリモートブランチにpushする」というようなことは可能ですか?
こういう場合にgit rebaseが使われるんですかね?
0835デフォルトの名無しさん
垢版 |
2022/01/16(日) 00:47:01.30ID:hYWYL0RZ
>>831
俺は作りながら片付ける

作ってる途中で、この修正はこのコミットに含めよう
などと考えならが小さくコミットし
適度なタイミングでrebaseする
0836デフォルトの名無しさん
垢版 |
2022/01/17(月) 06:52:31.08ID:pA35C6jo
>>831
別ブランチでcommitして、masterにまとめてmergeしてpushする、って方法もあるよ
これだとrebaseは不要
0837デフォルトの名無しさん
垢版 |
2022/01/23(日) 09:44:11.74ID:6R0k9GT3
gitもcvs,svnと同じ運命をたどるだろう
私の企業は次世代バージョン管理システムfossilに切り替えました
0839デフォルトの名無しさん
垢版 |
2022/01/24(月) 15:13:36.64ID:TB1mn4oZ
次世代って書いてるけどGitやMercurialと同期だね
統合が特徴みたいだけど、少なくとも統合指向=先進的というのは言えない
昔のMSや古いエンタープライズシステムが通ってきた道
0845デフォルトの名無しさん
垢版 |
2022/02/04(金) 16:53:15.37ID:ldQUlQ88
>>844
gitを業務で使われている方は翻訳に参加してください
0846デフォルトの名無しさん
垢版 |
2022/02/08(火) 12:18:02.21ID:nuxork7Z
ウクライナのGitLabがやばいな
0848デフォルトの名無しさん
垢版 |
2022/03/20(日) 18:56:58.51ID:oCBKTdlK
すみません、git pushをこっそりキャンセルしたく
$ git reset --hard HEAD^; git push -f origin HEAD をしたのですが
To prevent you from losing history, non-fast-forward updates were rejected.
と言われてpushが失敗します。
もしかしてリポジトリの設定でこういう強制pushが禁止されていたりしますかね?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況