Questions tagged [git]

Gitはオープンソースの分散型バージョン管理システム、ないしその実装プログラムのこと。 git コマンド自身の使い方などを質問するときにこのタグを使います。

Linux Torvalds によって開発された、オープンソースの分散バージョン管理システムです。各開発者の手元に完全なレポジトリのクローンを用意し、それを push/pull 操作によって同期していくモデルです。

その構成上、基本的に特別な中央サーバープログラムは存在しないので、(もちろん、特定のレポジトリを中央レポジトリとして取り扱うことはできる) 質問は git 自体のコマンドの使い方についてになります。 git サーバーを提供しているサービスについての質問は、おそらくよりふさわしいタグが存在するだろうと考えられます。 例: , .

参考リンク

371 questions
22
votes
1 answer

Git のマージで「共通の祖先」は何故必要ですか?

この記事で下記の記述がありましたが 各ブランチが指すふたつのスナップショットとそれらの共通の先祖との間で三方向のマージを行いました。 ここでよくわからないのは、なぜマージするために、「共通の祖先」が必要なのかです。 2つのブランチの最後のコミットをマージすれば済む話だと思っていましたが、「共通の祖先」はどこで必要ですか??不思議です。
yaquawa
  • 321
  • 1
  • 4
18
votes
1 answer

gitにおいて、リモートリポジトリのHEADは、何のためにあるのでしょうか?

ローカルリポジトリのHEADは、チェックアウトされている現在の作業対象を示していると思います。 しかし、リモートリポジトリのHEAD(例えばorigin/HEAD)は、何を表しているのかがわかりません。 これは、何のためにあるのでしょうか?
鈴木太郎
  • 265
  • 1
  • 3
  • 6
16
votes
4 answers

gitで拡張子のない実行ファイルを無視する方法

一般的にLinuxの実行可能ファイルには拡張子をつけないので.gitignoreで一括して無視することができません。.gitignoreに個々の実行可能ファイルのパスを書くという方法は、あまりスマートではない気がします。 もっとスマートな方法はあるでしょうか。.gitignoreでfileコマンドの実行結果を使う、あるいは、拡張子のないバイナリファイルは無視する、等の記述ができても良いのかなとも思います。 スクリプトを書いて.gitignoreを自動生成する等も考えられますが、そうではなく、gi…
YoshikuniJujo
  • 388
  • 3
  • 11
12
votes
3 answers

肥大化したGitリポジトリにおいて歴史の粒度を落とさずにサイズを減らすには

gitを使ってウェブサービス運用を続けていたら年月を重ねたせいかGitリポジトリが肥大化して数ギガバイトを超えるほどに成長しました。 リポジトリの内訳としてはプログラム、画像等のリソース、テキストの設定ファイル等です。 尚、コミット数は数万以上あり、ブランチも多くあるとします。 この大きくなってしまったリポジトリを毎回Cloneするのはとても時間がかかるのでどうにかしたいと考えます。 条件としては なるべく過去の歴史を捨てずに保持したい 画像リソースは外部に移動してもよい といった場合にどの…
chobie
  • 305
  • 1
  • 2
  • 8
11
votes
2 answers

git fetch に、 --prune がオプションなのは何故?

スタックオーバーフロー向けなのか分かりませんが。質問してみます。 私は、いつもgit config --global fetch.prune…
Norikaz Ishii
  • 1,111
  • 6
  • 27
10
votes
1 answer

git rm --cached 後に git add -Aするとファイルのパーミッションが変わる

あるファイルを、 git rm --cached text.php としてステージから削除したあとに、 git add -A として、 git diff とすると、 old mode 100644 new mode 100755 と出てきました。色々ぐぐって [core] filemode =…
Yusuke Higaki
  • 349
  • 2
  • 11
10
votes
2 answers

Gitでブランチを付け替えるにはどうしたらよいでしょうか?

Gitのブランチをコミット番号を変えずに付け替えたい場合はどうすれば良いでしょうか? (rebaseを用いると画像中のA,Bのコミットの番号が変わってしまうので、それを変えずに付け替える方法がありますでしょうか?) ※ 上記画像で、「A」「B」となっているものは、コミット番号を表します。 追記 git rebase branchAで意図通りの付け替えが可能でした。 しかし、git push -u origin…
hir0ku
  • 474
  • 1
  • 6
  • 14
10
votes
2 answers

Gitで行が削除されたコミット番号を知る方法

Gitであるファイルから1行削除されていることは認識できたのですが、該当行がどのコミットで消えたのか知るコマンドはありますか? コミットをバイナリーサーチで目Grepしていけばいづれたどりつけるのですが....
shingo.nakanishi
  • 6,307
  • 6
  • 56
  • 95
10
votes
5 answers

gitで複数のファイルを一括で移動またはリネームする方法を教えてください

gitリポジトリ内の全erbファイルをhamlにリネームしたいです。(例: index.html.erb => index.html.haml) 以下のようなコマンドで一つずつリネームするのは大変です。 $ git mv app/views/pages/index.html.erb app/views/pages/index.html.haml また、こんなコマンドが使えるかなと思ったのですが、無理でした。 $ git mv app/views/**/*.erb…
Junichi Ito
  • 6,641
  • 3
  • 21
  • 38
9
votes
1 answer

Git のフックスクリプトで、単なる commit か merge commit かを区別出来るのか?

実現したいことは、あるブランチで直接 commit することを禁止し、他のブランチからの merge commit のみを許すことです。例えば、 Gitflow で運用した時に develop ブランチへの直接 commit を禁止して、 feature や release ブランチなどからの merge commit だけを認めることを開発メンバに強要したいといったケースです。 コミット前にチェックするための仕掛けとして pre-commit…
umejam
  • 93
  • 6
9
votes
2 answers

Gitでコミットをなかったことにしたい

Gitでmasterブランチで作業しています。 下図の1〜3の順番にコミットをした後、2をチェックアウトして新しく「bugifx」ブランチを切って4をコミットしました。 さて、ここで3の内容をなかったことにしてmasterを1→2→4という状態にしたいのですが、どのようにすれば良いのでしょうか?
niu
  • 2,000
  • 6
  • 34
  • 44
8
votes
3 answers

特定のコミットに対して、それが対象のブランチへ、どのマージコミットでマージされたかを判定するには?

あるトピックブランチ上のコミット A が、特定のブランチ B (eg. develop) へマージされているとします。 このコミットAがブランチBへマージされた際のマージコミットがどれであるかを判定したいのですが、これはどうやったら実現できますでしょうか。 追記: コミットAがブランチBへマージされるマージコミットとは、ブランチBからfirst parent のみを辿って得られる歴史の上で、一番最古の、コミットAの子孫であるマージコミットのことです。
Yuki Inoue
  • 16,805
  • 19
  • 80
  • 196
7
votes
1 answer

ソースを取得せずにgit logだけしたい

あるリポジトリのgit logだけが見たい場合 git clone リポジトリ git log とソース自体は欲しくないのですがcloneをしています。 ソース量が多いリポジトリですとlogを見たいだけなのにローカルの容量を開けなければならなかったり、取得に時間がかかってしまうので、 logだけ見る方法はありませんでしょうか。
stack_user
  • 496
  • 4
  • 18
7
votes
1 answer

git statusでcopiedとなる操作は?

https://git-scm.com/docs/git-status 上記公式ドキュメントのヘルプに記載されている、git status -sで表示されるc(copied)というステータスはどんな操作をした時に発生するものでしょうか? ファイルを複製すると発生するのかと思い、 以下操作をしてみましたが発生しませんでした。 1.file1を作成(中身は適当) 2.git add file1 3.git commit file1 -m…
hiro
  • 1,074
  • 2
  • 10
  • 19
7
votes
3 answers

gitでバイナリ―ファイルを処理したい場合の方法とは?

gitで動画などを使ってしまうとsourcetreeが肥大化して動かなくなることがあります。 ネットで検索するとgitmediaがいいと書いてありますが、どのように解決しているのでしょうか。
1
2 3
11 12