Gitリポジトリディレクトリの場所を変更します。


200

Git / Github for Windowsで、次のディレクトリを持つリポジトリがある場合、リポジトリC:\dir1\dir2ファイルをに移動するにはどうすればよいC:\dir1ですか?明らかにファイルを物理的にコピーして貼り付けることができますが、Git側で何をする必要がありますか?

このリポジトリはGitHubにあり、Git BashとGitHub for Windowsを使用しています。


1
この回答を見てください。別のフォルダや別のコンピュータに移動する場合も同じです。
rekenerd 2012

回答:


234

作業ディレクトリの内容全体(隠し.gitディレクトリを含む)をコピーするだけです。これにより、作業ディレクトリ全体が新しいディレクトリに移動し、GitHubのリモートリポジトリには影響しません。

GitHub for Windowsを使用している場合は、上記の方法でリポジトリを移動できます。ただし、アプリケーションでリポジトリをクリックすると、リポジトリを見つけることができません。これを解決するには、!の付いた青い円をクリックし、[検索]を選択して、新しいディレクトリを参照します。


3
しかし、GitHub For Windowsがローカルリポジトリを追跡する方法はどうでしょうか?そのためにはいくつかの設定が必要です。

3
Windowsでこれを行ったとき、新しいリポジトリを作成する必要がありました。
472084 2013

1
@Jleagle、この回答が投稿されてから変更されている可能性があります。私は見て、必要に応じて私の答えを更新します。
俳優2013

2
それはあなたに新しいレポを作成するように頼むべきではありません:それが起こった場合、あなたは明らかにgitファイル(おそらく隠されたもの)を逃しました。私に起こった、そして私が再び試みたとき、私はいくつかを逃したことに気づいた。
フアン

1
私は勝利です。フォルダーを手動で新しい場所に移動した後、Git GUIアプリを再度開き、プロジェクトフォルダーを手動で再配置しました。このように私にとってはうまくいきます。
kuncevic.dev 2015

42

私は質問がわからないので、ここに2つの答えがあります:

リポジトリを移動したい場合:

リポジトリ全体を(その.gitディレクトリとともに)コピーするだけです。

.git構造には絶対パスがなく、移動を妨げるものがないので、移動後は何もする必要がありません。githubへのすべてのリンク(を参照.git/config)は以前と同様に機能します。

リポジトリ内でファイルを移動したい場合:

ファイルを移動するだけです。次に、にリストされている変更を追加しますgit status。次commitは必要なことをします。あなたはファイルが複製されないことを喜んで学ぶでしょう:gitでファイルを移動することはほとんど費用がかかりません。


1
しかし、GitHub For Windowsがローカルリポジトリを追跡する方法はどうでしょうか?そのためにはいくつかの設定が必要です。

@ user596075それは.gitディレクトリにあります。
OrangeDog 2015

24

を使用している場合GitHub Desktopは、次の手順を実行します。

  1. 閉じるGitHub Desktopと、現在のディレクトリパスにファイルを開いている他のすべてのアプリケーション。
  2. 上記のようにディレクトリ全体を新しいディレクトリの場所に移動します。
  3. GitHub Desktop青色(!)の「リポジトリーが見つかりません」アイコンを開いてクリックします。次にダイアログが開き、「ロケート...」ボタンが表示されます。このボタンを押すと、新しい場所へのパスを指定できるポップアップが開きます。

8

質問にはGit for Windowsが関係していますが、これはVisual Studio Tools For Git(VS 2012の拡張機能、VS 2013のネイティブサポート)を検索する場合でも最上位の結果のようです。

上記のソリューションをガイドとして使用して、Visual Studio Gitツールを使用すると、ローカルでリポジトリ(またはすべてのリポジトリのディレクトリ構造全体)を非常に簡単に移動できると判断しました。

1)Visual Studioを閉じます。2)Repoフォルダーを新しい場所に移動します。3)Visual Studioを開きます。チームエクスプローラーを開きます。「接続」ビューに切り替えます(上部のプラグアイコン)。3a)リポジトリに古いパスが引き続き表示される場合は、[更新]をクリックして強制的に更新します。4)ローカルに移動されたリポジトリは、「ローカルGitリポジトリ」に表示されなくなります。5)[ 追加](新規またはクローンではない)をクリックし、追加するリポジトリフォルダーを選択します。

ステップ5では、実際には検索パスを指定するだけで、検索にはすべてのサブフォルダーが自動的に含まれます。単一のルートの下に複数のリポジトリが編成されている場合(同じ親フォルダーを持つ独立したリポジトリ)、親を選択すると、その下にあるすべてのリポジトリが含まれます。

例:E:\ Repos \ RepoA E:\ Repos \ RepoB E:\ Repos \ RepoC

Visual Studioチームエクスプローラーで、[追加]> "E:\ Repos \"> [追加]を選択すると、3つすべてがローカルリポジトリに返されます。


6

以前の回答はすべて、ディレクトリを移動することができ、.git構造には絶対パスがないと言っているようですが。Cygwinからgitを使用する場合、これは正しくないことがわかりました。

gitリポジトリを移動したとき(実際にはバックアップから復元しましたが、新しいシステムでドライブ構造が変更されたため、別のドライブに復元しました)。次のようなエラーメッセージが表示された

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

私はgrepを使用して、[core]セクションの.git / configファイルで、gitリポジトリの絶対パスを保持する作業ツリー変数であることを確認しました。これを変更すると、問題が解決しました。


4

Visual Studio gitプラグインを使用していて、IISで実行したいWebサイトがいくつかあります。私のために働いた簡単な方法:

  1. Visual Studioを閉じます。

  2. コードを移動する(gitフォルダーなどを含む)

  3. 新しい場所からソリューションファイルをクリックします

これにより、移動された既存のローカルgitファイルを使用して、新しい場所へのマッピングが更新されます。Visual Studioに戻ると、チームエクスプローラーウィンドウに新しい場所のリポジトリが表示されました。


2

Github Desktop for Windowsを使用していますが、リポジトリの場所を移動したいと思っていました。ディレクトリを移動して、ソフトウェアで新しい場所を選択しても問題ありません。しかし、不適切なディレクトリを設定すると、致命的なエラーが発生し、適切なディレクトリに再配置する2番目のチャンスがなくなります。それを修復するために。プロジェクトファイルを不良ディレクトリにコピーし、Githubデスクトップで再調整する必要があります。その後、プロジェクトを別のフォルダーに再度移動して、ソフトウェアに再配置できます。そのためにGithubデスクトップを閉じる必要はありません。ライブでフォルダーをチェックします。

これが誰かを助けることを願っています。


1

これは私にはうまくいきませんでした。リポジトリを(例)c:\ project1 \からc:\ repo \ project1 \に移動しましたが、WindowsのGitに変更が表示されません。

サブモジュールの1つが「gitリポジトリではない」ため、gitステータスにエラーが表示され、古いパスが表示されます。例(IPを保護するために名前が変更された)

致命的:gitリポジトリではありません:C:/project1/.git/modules/subproject/subproject2致命的: 'git status --porcelain'がサブモジュールサブプロジェクトで失敗しました

サブモジュールの.gitファイルを手動で編集して、サブモジュールのリポジトリ(メインのリポジトリの.git / modulesディレクトリにあります)への正しい相対パスを指すようにしました。


1

未来からの報告:2018年4月。

私はMacとWindowsのローカルリポジトリを正規化したかったのですが、最終的には別のローカルフォルダーに置かれていました。

Windows 10クライアントでは、 "Ca n't Find"> "Locate"ルーチンを実行する必要がありました。また、将来の使用のためにオプションのローカル「クローンパス」を更新する必要があります。

Macフォルダーを統合したとき、Githubクライアントはそれらを再び見つけました-私は何もする必要がありませんでした!


0

リポジトリのいずれかを複製するたびにデフォルトのローカルパスをリポジトリに設定するには、リポジトリを一度複製してLocalpath:/ your-pathを設定するだけで、githubがそのパスをデフォルトとして自動的に検出します。


これは元の質問に答えていないようです-おそらくあなたの答えがすでに受け入れられている答えに何かを追加する方法を明確にすることができますか?ありがとう。
rwp

0

よりGitベースのアプローチは、ローカルコピーに変更を加えるcdか、コピーアンドペーストを使用して、ローカルリポジトリからリモートリポジトリにこれらの変更をプッシュすることです。

ローカルリポジトリのステータスを確認しようとすると、実際には再配置されたファイルである「追跡されていない変更」が表示される場合があります。これらの変更を強制的にプッシュするには、次を使用してこれらのファイル/ディレクトリをステージングする必要があります

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

それが役に立てば幸い。

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