gitリポジトリから1つのファイルのみをまばらにチェックアウトする方法は?


444

gitリポジトリから1つのファイルだけをチェックアウトするにはどうすればよいですか?


8
チェックアウトとはどういう意味ですか?リモートリポジトリから1つのファイルのみのコピーを取得しますか?
Cascabel

2
問題のリポジトリがgitwebを使用している場合は、そこから直接ファイルをダウンロードできます。以下で説明しようとしているように、あなたが求めているのは、実際には標準のgit操作ではありません。
Cascabel 2010年


Chrome拡張機能GitHub Mateを使用できます。ファイルアイコンをクリックしてダウンロードできます。
カムソング

回答:


251

もともと私は2012年に言及しましたgit archiveJared Forsyth回答Robert Knight回答を参照)、git1.7.9.5(2012年3月)以降、Paul Brannan回答

git archive --format=tar --remote=origin HEAD:path/to/directory -- filename | tar -O -xf -

ただし、2013年には、リモートのhttps://github.com URLでこれを行うことができなくなりました。
古いページ「リポジトリをアーカイブできますか?」を参照してください

現在(2018年)のページ「GitHubでのコンテンツとデータのアーカイブについて」では、GHTorrentGH Archiveなどのサードパーティサービスの使用を推奨しています。


したがって、ローカルコピー/クローンを処理することもできます。

この回答で述べたように、ベアリポジトリのローカルコピーがある場合は、代わりに次のことを実行できます

git --no-pager --git-dir /path/to/bar/repo.git show branch:path/to/file >file

または、最初にリポジトリを複製する必要があります。つまり、完全な履歴を取得する必要があります。-.gitリポジトリ内-作業ツリー内。

  • しかし、それからスパースチェックアウトを実行できます(Git1.7 +を使用している場合):
    • スパースチェックアウトオプションを有効にする(git config core.sparsecheckout true
    • 見たいものを.git/info/sparse-checkoutファイルに追加する
    • 作業ツリーを再読み込みして、必要なものだけを表示する

作業ツリーを再度読み取るには:

$ git read-tree -m -u HEAD

そうすれば、必要なものが正確に含まれる作業ツリーが作成されます(ファイルが1つだけであっても)


Richard Gomesはコメントの中で)「gitリポジトリから単一のディレクトリまたはディレクトリのリストをクローン、フェッチ、またはスパースチェックアウトするにはどうすればよいですか?

履歴のダウンロードを回避し、単一のブランチを取得し、必要なファイルまたはディレクトリのリストを取得するbash関数。


スパースチェックアウトで変更をコミットできますか?
Tilo

2
@Tilo:確かではありませんが、クローンが完全なものであることを考えると、可能であるはずです。
VonC、2012年

3
これは、他の回答に記載されている「git checkout HASH path-to-file」よりもどのように優れていますか?当時はそれがなかったのですか?
0x6A75616E 2012

2
@juandアイデアは、gitチェックアウトを行う前にすべての作業ツリーをロードする必要がないというものでした。
VonC、2012

2
ところで、git archive今すぐ使用できます。
Jared Forsyth、2013

197

最初に、すべてのファイルのデフォルトのチェックアウトを抑制する-nオプションと各ファイルの最新リビジョンのみを取得する--depth 1オプションを使用して、リポジトリを複製します。

git clone -n git://path/to/the_repo.git --depth 1

次に、必要なファイルだけをチェックアウトします。

cd the_repo
git checkout HEAD name_of_file

7
文字通りこれは単一のファイルをチェックアウトしますが、OPがすべてのファイルを持っているため(そしていずれにしてもチェックアウトは何も実行されないため)、OPが実行したいことではありません。
Cascabel

5
私はこれがうまくいくとは思いません- -n作業ツリーとインデックスが同期してしまいます。つまり、すべてのコンテンツが削除済みとして表示されます。git reset HEADまたはのいずれかでなければなりませんgit checkout HEAD file。また、gitのしくみをよく理解していない限り、この時点でリポジトリを操作することは非常に困難です。
Cascabel 2010年

2
そして、DanielElliottのようなOPとOOPが本当にファイル(レポではなく)を必要とする場合、rm -rf .gitNickMooreのスクリプトに別のファイルを追加すると、複製されたレポのすべての痕跡がクリーンアップされ、使いにくいレポが置かれているというJefromiの懸念が和らぐでしょう。今日のポスト受信フックを作成して別のポスト受信フックのバージョンを自動的に更新するという課題のように、いくつかのアプリケーションにとって私にとって非常に便利です。
ホブ2012

6
これは、受け入れられているよりもはるかに良い答えです。読み続けてよかった。
Eric Uldall 2014年

6
この答えが最適です(ただしgit、この種の作業には最適ではありません)。この回答は、この質問、またはこの他の一般的な質問、および他の多くの質問にも有効です:に変更name_of_fileしてくださいname_of_folder。最近(2014年代)のGitは、repo-ownerにサブモジュールを提供し、repoユーザーにフレンドリーないくつかのporを提供します。
Peter Krauss

108

gitリポジトリのコピーを既に持っている場合は、aを使用しgit logてファイルのバージョンをいつでもチェックアウトして、ハッシュID(たとえば3cdc61015724f9965575ba954c8cd4232c8b42e4)を見つけ、次のように入力するだけです。

git checkout hash-id path-to-file

これが実際の例です:

git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /var/www/css/page.css

12
ハッシュだけでなく、タグやブランチ名も使用できます。それらはしばしば簡単です。
ロブ・ケネディ

4
良い解決策。しかし、path-to-fileがディレクトリであり、current HEADに特定のファイルが含まれているが含まれてtargetいない場合(またはその逆)、これはファイルを正しく更新しません。処理する方法はありますか?
MasterMind 2018年

2
シンプルで優れています。ありがとう!
Kerem atam

エラー:pathspec。パスはローカルPC上のパスですか、リモートPC上のパスですか?
ポールマッカーシー

1
@PaulMcCarthy-ローカル
techexpert

60

通常git、最初の回答で提案されているように、リポジトリ全体をダウンロードせずにファイルを1つだけダウンロードすることはできません。これは、Gitが(CVS / SVNのように)思ったとおりにファイルを保存しないためですが、プロジェクトの履歴全体に基づいてファイルを生成します。

ただし、特定のケースにはいくつかの回避策があります。以下のためのプレースホルダを、以下の実施例userprojectbranchfilename

GitHub

wget https://raw.githubusercontent.com/user/project/branch/filename

GitLab

wget https://gitlab.com/user/project/raw/branch/filename

GitWeb

サーバー-GitWebGitを使用している場合は、例を試してみてください(正しいパスに変更してください)。

wget "http://example.com/gitweb/?p=example;a=blob_plain;f=README.txt;hb=HEAD"

drupalcode.orgのGitWeb

例:

wget "http://drupalcode.org/project/ads.git/blob_plain/refs/heads/master:/README.md"

googlesource.com

ドキュメント化されていない機能があり、base64でエンコードされたバージョンのrawファイルをダウンロードできます。

curl "https://chromium.googlesource.com/chromium/src/net/+/master/http/transport_security_state_static.json?format=TEXT" | base64 --decode

他の場合では、GitリポジトリがWebインターフェースを使用しているかどうかを確認してください。

それは、任意のWebインターフェイスを使用していない場合は、次のような外部のサービスにあなたのコードをプッシュするために検討することができるGitHubののBitbucketなど。ミラーとして使用します。

wgetインストールしていない場合は、curl -O (url)代わりに試してください。


2
そして私がgithubを使用しない場合?
ズールー

59
次に、このメソッドを使用しないでください。
アラン

4
gitが「プロジェクトの全履歴に基づいて[ファイル]を生成する」という声明には反対します。gitはファイルの状態のスナップショットをハッシュツリーの形式で保存すると言う方が正しいでしょう。確かに発生はありません。
Jay Sullivan、

3
この答えは、私が(削除をコミットせずに)単に私が意図的にいくつかの他の人と一緒にローカルで削除したいというファイルを復元しようとしていたので、私にとって最も有用であったが、他の人はまだいなかった一方で、後でそれが必要だったことを決めた
rshdevを

8
あなたはGitで簡単なことをしたいときの沈没感を知っています。SOでそれがどのように行われるかを確認し、答えの途中で脳が止まり、すべてがぼやけて悲しくなります。次に、下にスクロールして、この見事なwget答えとシンプルさの戻り、そして幸福を見つけます。ありがとう。
pgr



29

今できます!これはグーグルでの最初の結果なので、これを最新の状態に更新したいと思いました。git 1.7.9.5の登場によりgit archive、リモートホストから単一のファイルを取得できるコマンドができました。

git archive --remote=git://git.foo.com/project.git HEAD:path/in/repo filename | tar -x

完全な回答はこちらhttps://stackoverflow.com/a/5324532/290784


@Benubirdそれはあなたのリポジトリのホスト名です。githubの場合(githubがアーカイブコマンドをサポートしていた場合、最後に確認しませんでした)github.com
Jared Forsyth

これはちょうど私のために働いたが、私は一人でブランチ(またはもしrefname)を指定した場合にのみ、例えばHEADmasterではありませんHEAD:directory
ストームベータ2016

3
これは私にとってbitbucketで機能しました:git archive --remote=git@bitbucket.org:user/repo branch:path/to file | tar -x
Dave

24

GIT 1.7.2.2での作業

たとえば、ブランチがbranch1branch32のリモートsome_remoteがあるとします

特定のファイルをチェックアウトするには、次のコマンドを呼び出します。

git checkout remote/branch path/to/file

一例として、このようなものになります

git checkout some_remote/branch32 conf/en/myscript.conf
git checkout some_remote/branch1 conf/fr/load.wav

このチェックアウトコマンドは、ファイル構造conf / enおよびconf / fr全体を、これらのコマンドを呼び出す現在のディレクトリにコピーします(もちろん、以前にgit initを実行したと想定しています)


5
しかし、あなたはgit fetch some_remote前に走る必要がありますね?
phihag 2013年

15

非常にシンプル:

git checkout from-branch-name -- path/to/the/file/you/want

これはfrom-branch-nameブランチをチェックアウトしません。あなたはあなたがいるブランチにとどまり、その単一のファイルだけが指定されたブランチからチェックアウトされます。

これは、マンページの関連部分です git-checkout

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...
       When <paths> or --patch are given, git checkout does not switch
       branches. It updates the named paths in the working tree from the
       index file or from a named <tree-ish> (most often a commit). In
       this case, the -b and --track options are meaningless and giving
       either of them results in an error. The <tree-ish> argument can be
       used to specify a specific tree-ish (i.e. commit, tag or tree) to
       update the index for the given paths before updating the working
       tree.

このブログ投稿から私にこれを教えてくれたAriejan de Vroomへの帽子のヒント。


4
クールではありませんが、最初にクローンを作成する必要があります。
Antoniossss

8

git clone --filter Git 2.19から

このオプションは実際にはサーバーからほとんどの不要なオブジェクトのフェッチをスキップします:

git clone --depth 1 --no-checkout --filter=blob:none \
  "file://$(pwd)/server_repo" local_repo
cd local_repo
git checkout master -- mydir/myfile

サーバーは次のように構成する必要があります。

git config --local uploadpack.allowfilter 1
git config --local uploadpack.allowanysha1inwant 1

v2.19.0の時点ではサーバーのサポートはありませんが、ローカルでテスト済みです。

TODO:--filter=blob:noneすべてのblobをスキップしますが、すべてのツリーオブジェクトをフェッチします。しかし、通常のリポジトリでは、これはファイル自体に比べて小さいはずなので、これで十分です。質問:https : //www.spinics.net/lists/git/msg342006.html開発者--filter=tree:0は、それを行うための作業中であると回答しました。

--depth 1既にが意味していることを覚えておいて--single-branchください。Gitで単一のブランチを複製するにはどうすればよいですか。

file://$(path)git cloneプロトコルの悪意を克服するために必要です:相対パスでローカルgitリポジトリを浅くクローンする方法は?

の形式--filterは、に記載されていman git-rev-listます。

この機能をサポートするために、Gitリモートプロトコルが拡張されました。

Gitツリーのドキュメント:

試してみる

#!/usr/bin/env bash
set -eu

list-objects() (
  git rev-list --all --objects
  echo "master commit SHA: $(git log -1 --format="%H")"
  echo "mybranch commit SHA: $(git log -1 --format="%H")"
  git ls-tree master
  git ls-tree mybranch | grep mybranch
  git ls-tree master~ | grep root
)

# Reproducibility.
export GIT_COMMITTER_NAME='a'
export GIT_COMMITTER_EMAIL='a'
export GIT_AUTHOR_NAME='a'
export GIT_AUTHOR_EMAIL='a'
export GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000'
export GIT_AUTHOR_DATE='2000-01-01T00:00:00+0000'

rm -rf server_repo local_repo
mkdir server_repo
cd server_repo

# Create repo.
git init --quiet
git config --local uploadpack.allowfilter 1
git config --local uploadpack.allowanysha1inwant 1

# First commit.
# Directories present in all branches.
mkdir d1 d2
printf 'd1/a' > ./d1/a
printf 'd1/b' > ./d1/b
printf 'd2/a' > ./d2/a
printf 'd2/b' > ./d2/b
# Present only in root.
mkdir 'root'
printf 'root' > ./root/root
git add .
git commit -m 'root' --quiet

# Second commit only on master.
git rm --quiet -r ./root
mkdir 'master'
printf 'master' > ./master/master
git add .
git commit -m 'master commit' --quiet

# Second commit only on mybranch.
git checkout -b mybranch --quiet master~
git rm --quiet -r ./root
mkdir 'mybranch'
printf 'mybranch' > ./mybranch/mybranch
git add .
git commit -m 'mybranch commit' --quiet

echo "# List and identify all objects"
list-objects
echo

# Restore master.
git checkout --quiet master
cd ..

# Clone. Don't checkout for now, only .git/ dir.
git clone --depth 1 --quiet --no-checkout --filter=blob:none "file://$(pwd)/server_repo" local_repo
cd local_repo

# List missing objects from master.
echo "# Missing objects after --no-checkout"
git rev-list --all --quiet --objects --missing=print
echo

echo "# Git checkout fails without internet"
mv ../server_repo ../server_repo.off
! git checkout master
echo

echo "# Git checkout fetches the missing file from internet"
mv ../server_repo.off ../server_repo
git checkout master -- d1/a
echo

echo "# Missing objects after checking out d1/a"
git rev-list --all --quiet --objects --missing=print

GitHubアップストリーム

Git v2.19.0での出力:

# List and identify all objects
c6fcdfaf2b1462f809aecdad83a186eeec00f9c1
fc5e97944480982cfc180a6d6634699921ee63ec
7251a83be9a03161acde7b71a8fda9be19f47128
62d67bce3c672fe2b9065f372726a11e57bade7e
b64bf435a3e54c5208a1b70b7bcb0fc627463a75 d1
308150e8fddde043f3dbbb8573abb6af1df96e63 d1/a
f70a17f51b7b30fec48a32e4f19ac15e261fd1a4 d1/b
84de03c312dc741d0f2a66df7b2f168d823e122a d2
0975df9b39e23c15f63db194df7f45c76528bccb d2/a
41484c13520fcbb6e7243a26fdb1fc9405c08520 d2/b
7d5230379e4652f1b1da7ed1e78e0b8253e03ba3 master
8b25206ff90e9432f6f1a8600f87a7bd695a24af master/master
ef29f15c9a7c5417944cc09711b6a9ee51b01d89
19f7a4ca4a038aff89d803f017f76d2b66063043 mybranch
1b671b190e293aa091239b8b5e8c149411d00523 mybranch/mybranch
c3760bb1a0ece87cdbaf9a563c77a45e30a4e30e
a0234da53ec608b54813b4271fbf00ba5318b99f root
93ca1422a8da0a9effc465eccbcb17e23015542d root/root
master commit SHA: fc5e97944480982cfc180a6d6634699921ee63ec
mybranch commit SHA: fc5e97944480982cfc180a6d6634699921ee63ec
040000 tree b64bf435a3e54c5208a1b70b7bcb0fc627463a75    d1
040000 tree 84de03c312dc741d0f2a66df7b2f168d823e122a    d2
040000 tree 7d5230379e4652f1b1da7ed1e78e0b8253e03ba3    master
040000 tree 19f7a4ca4a038aff89d803f017f76d2b66063043    mybranch
040000 tree a0234da53ec608b54813b4271fbf00ba5318b99f    root

# Missing objects after --no-checkout
?f70a17f51b7b30fec48a32e4f19ac15e261fd1a4
?8b25206ff90e9432f6f1a8600f87a7bd695a24af
?41484c13520fcbb6e7243a26fdb1fc9405c08520
?0975df9b39e23c15f63db194df7f45c76528bccb
?308150e8fddde043f3dbbb8573abb6af1df96e63

# Git checkout fails without internet
fatal: '/home/ciro/bak/git/test-git-web-interface/other-test-repos/partial-clone.tmp/server_repo' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

# Git checkout fetches the missing directory from internet
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1/1), 45 bytes | 45.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)
Receiving objects: 100% (1/1), 45 bytes | 45.00 KiB/s, done.

# Missing objects after checking out d1
?f70a17f51b7b30fec48a32e4f19ac15e261fd1a4
?8b25206ff90e9432f6f1a8600f87a7bd695a24af
?41484c13520fcbb6e7243a26fdb1fc9405c08520
?0975df9b39e23c15f63db194df7f45c76528bccb

結論:を除くすべてのblob d1/aが欠落しています。たとえばf70a17f51b7b30fec48a32e4f19ac15e261fd1a4d1/bチェックアウト後、そこにはありませんd1/

とも欠落しroot/rootmybranch/mybranchいることに注意してください。ただし--depth 1、欠落ファイルのリストには表示されません。を削除すると--depth 1、見つからないファイルのリストに表示されます。


2
いいですね、そのオプションを見逃していたに違いありません。+1
VonC 2018

7

あなたはそれを行うことができます

git archive --format=tar --remote=origin HEAD | tar xf -
git archive --format=tar --remote=origin HEAD <file> | tar xf -

6

すでに提供されているものの2つのバリエーション:

git archive --format=tar --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -O -xf -

そして:

git archive --format=zip --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | funzip

これらは、ファイルを標準出力に書き込みます。


6

ファイル名が123.txtであるとすると、これは私にとってはうまくいきます:

git checkout --theirs  123.txt

ファイルがディレクトリA内にある場合は、正しく指定してください。

git checkout --theirs  "A/123.txt"

4

gitでは、ファイルを更新する前に「チェックアウト」することはありません。これが目的のようです。

clearcaseやcsvなどの多くのシステムでは、ファイルを変更する前に「チェックアウト」する必要があります。Gitはこれを必要としません。リポジトリのクローンを作成してから、リポジトリのローカルコピーに変更を加えます。

ファイルを更新したら、次のことができます。

git status

変更されたファイルを確認する。あなたがindex最初にコミットしたいものを追加します(indexチェックインされるリストのようなものです):

git add .

または

git add blah.c

次に、git status変更されたファイルindexと、コミットまたはチェックインの準備ができているファイルを示します。

リポジトリのコピーにファイルをコミットするには、次のようにします。

git commit -a -m "commit message here"

マニュアルやガイドへのリンクについては、gitウェブサイトをご覧ください。


1
そして、あなたの目標は、この単一のファイルにパッチを適用して戻ってそれを提出することであるならば、あなたはどちらかプッシュする必要があります(おそらく、あなたがこのプロジェクトのためにプッシュアクセス権を持っていない?)、または使用のgit format-patch提出のためのパッチを作成するために、(git format-patch -1パッチを作成します。最新のコミットのみ)。
Cascabel 2010年

おかげで、それはClearcaseからGitに来る良い説明でした
Kolob Canyon

4

以下は、gitリポジトリ内の特定のファイルのみをプルおよびプッシュするための完全なソリューションです。

  1. まず、特別なヒントを使用してgitリポジトリのクローンを作成する必要があります–チェックアウトなし
git clone --no-checkout <git url>
  1. 次のステップは、次のコマンドを使用して、インデックス内のステージされていないファイルを削除することです。
git reset
  1. これで、次のコマンドを使用して、変更するファイルのプルを開始できます。
git checkout origin/master <path to file>
  1. リポジトリフォルダには、すぐに編集を開始できるファイルが含まれています。編集後は、わかりやすい一般的な一連のコマンドを実行する必要があります。
git add <path to file>
git commit -m <message text>
git push

追加情報については、リンクも参照してください。


1

集中型バージョン管理のアイデアを引き継ごうとしているようですが、本来gitはそうではなく、配布されています。gitリポジトリを操作する場合は、それを複製します。その後、持っているすべての作業ツリーの内容の、そして全てのシングルからだけではなく、単一のファイルまたはスナップショットは、コミットの歴史の(まあ、少なくとも、すべてが現在のブランチの先端に至るまでを)。

 git clone /path/to/repo
 git clone git://url/of/repo
 git clone http://url/of/repo

1

リモートGitリポジトリの特定のブランチから特定のファイルが必要な場合、コマンドは次のとおりです。

git archive --remote=git://git.example.com/project.git refs/heads/mybranch path/to/myfile |tar xf -

残りは@VonCの答えから導き出すことができます:

masterブランチの特定のファイルが必要な場合は、次のとおりです。

git archive --remote=git://git.example.com/project.git HEAD path/to/myfile |tar xf -

タグから特定のファイルが必要な場合:

git archive --remote=git://git.example.com/project.git mytag path/to/myfile |tar xf -

Mother Corp.は、自動化されたHTTP / Sアクセスを禁止することを決定しました!この手法を使用すると、全体をチェックアウトせずに、リポジトリから単一のファイルを自動的に取得できます。ありがとうございました。
JS。

0

ここにリストされている私にとって何がうまくいったのかわかりませんので、誰かが私の状況にある場合はそれを含めます。

私の状況では、おそらく10,000ファイルのリモートリポジトリがあり、Linuxシステム用のRPMファイルをビルドする必要があります。RPMのビルドには、すべてのgitクローンが含まれています。RPMビルドを開始するために必要なのは1つのファイルだけです。必要なことを行うソースツリー全体を複製できますが、必要なものが1つだけの場合、これらのファイルをすべてダウンロードするにはさらに2分かかります。説明したgitアーカイブオプションを使用しようとしたところ、「致命的:プロトコルでサポートされていない操作」が発生しました。サーバーで何らかのアーカイブオプションを有効にする必要があるようです。私のサーバーは、物事を成し遂げることを難しくしているように見える官僚的な凶悪犯によって維持されています。

私が最後に行ったのは、bitbucketのWebインターフェイスにアクセスして、必要な1つのファイルを表示することでした。リンクを右クリックしてファイルの未加工のコピーをダウンロードし、表示されたポップアップから「ショートカットのコピー」を選択しました。物事を自動化する必要があり、Linuxサーバーにブラウザーインターフェイスがないため、生のファイルをダウンロードすることはできませんでした。

議論のために、それはURLをもたらしました:

https://ourArchive.ourCompany.com/projects/ThisProject/repos/data/raw/foo/bar.spec?at=refs%2Fheads%2FTheBranchOfInterest

最初にサインインする必要があったため、このファイルをbitbucketリポジトリから直接ダウンロードできませんでした。少し掘り下げた後、これはうまくいったことがわかりました:Linuxの場合:

echo "myUser:myPass123"| base64
bXlVc2VyOm15UGFzczEyMwo=

curl -H 'Authorization: Basic bXlVc2VyOm15UGFzczEyMwo=' 'https://ourArchive.ourCompany.com/projects/ThisProject/repos/data/raw/foo/bar.spec?at=refs%2Fheads%2FTheBranchOfInterest' > bar.spec

この組み合わせにより、他のすべてを構築するために必要な1つのファイルをダウンロードできました。


0

私はこの回答を、正式なチェックアウトまたは同様のローカル操作を行う代わりに追加します。Gitプロバイダーのウェブインターフェースにアクセスできると仮定すると、特定の目的のコミットで任意のファイルを直接表示できる場合があります。たとえば、GitHubでは次のようなものを使用できます。

https://github.com/hubotio/hubot/blob/ed25584f/src/adapter.coffee

以下ed25584fは、対象のコミットのSHA-1ハッシュの最初の8文字で、その後にソースファイルへのパスが続きます。

同様に、Bitbucketで次のことを試すことができます。

https://bitbucket.org/cofarrell/stash-browse-code-plugin/src/06befe08

この場合、ソースURLの最後にコミットハッシュを配置します。


-1

ファイルをダウンロードするだけでよい場合は、Gitでチェックアウトする必要はありません。

GitHub Mateの方がはるかに簡単です。これはChrome拡張機能であり、ファイルアイコンをクリックしてダウンロードできます。またオープンソース


7
git!=github
jan groth

-3

ファイルのローカルバージョンを編集していて、中央サーバーで維持されている元のバージョンに戻したい場合は、Git Extensionsを使用して簡単にこれを実現できます。

  • ファイルは変更されているため、最初はコミットのマークが付けられます
  • ファイルツリーメニューでファイルを選択(ダブルクリック)
  • 単一ファイルのリビジョンツリーが一覧表示されます。
  • ツリーのトップ/ヘッドを選択し、右クリックして名前を付けて保存
  • ファイルを保存して、変更されたローカルバージョンのファイルを上書きします。
  • これで、ファイルのバージョンが正しくなり、コミット対象としてマークされなくなります。

かんたん!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.