2709

Executing the command git clone git@github.com:whatever creates a directory in my current folder named whatever, and drops the contents of the Git repository into that folder:

/httpdocs/whatever/public

My problem is that I need the contents of the Git repository cloned into my current directory so that they appear in the proper location for the web server:

/httpdocs/public

I know how to move the files after I've cloned the repository, but this seems to break Git, and I'd like to be able to update just by calling git pull. How can I do this?

4

19 に答える 19

3822

オプションA:

git clone git@github.com:whatever folder-name

エルゴ、right here使用するために:

git clone git@github.com:whatever .

オプションB:

.gitフォルダも移動します。.gitほとんどのグラフィカルファイルエクスプローラーではフォルダーが非表示になっているため、非表示のファイルを必ず表示してください。

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

1行目はすべての通常のファイルを取得し、2行目はドットファイルを取得します。dotglob(つまりshopt -s dotglob)を有効にすることで1行でそれを行うことも可能ですが、この回答が答える質問をしている場合、それはおそらく悪い解決策です。

さらに良い:

作業コピーを別の場所に保管し、シンボリックリンクを作成します。このような:

ln -s /where/it/is/right/now /the/path/I/want/to/use

あなたの場合、これは次のようになります。

ln -sfn /opt/projectA/prod/public /httpdocs/public

必要に応じてテストするために簡単に変更できます。

ln -sfn /opt/projectA/test/public /httpdocs/public

ファイルを移動せずに。-fn誰かがこれらの行をコピーしている場合に備えて追加されました(-f強制 -nです。既存のリンクや存在しないリンクとの望ましくない相互作用を避けてください)。

それを機能させたいだけの場合はオプションAを使用し、他の誰かがあなたの行ったことを確認する場合はオプションCを使用します。

于 2009-03-16T16:08:24.707 に答える
625

この質問をする多くの人が後になっていると思う例はこれです。gitリポジトリのコンテンツをダンプしたいディレクトリにいる場合は、次のコマンドを実行します。

git clone git@github.com:whatever .

「。」最後に、現在のフォルダーをチェックアウトフォルダーとして指定します。

于 2010-02-25T17:15:14.663 に答える
248

フォルダーに移動します。フォルダーが空の場合は、次のようになります。

git clone git@github.com:whatever .

そうしないと

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
于 2013-12-12T08:43:17.073 に答える
106

基本的な Git リポジトリのクローン作成

でリポジトリをクローンします

git clone [url]

たとえば、open_framework というスタンフォード大学の Drupal Open Framework Git ライブラリのクローンを作成する場合は、次のようにします。

$ git clone git://github.com/SU-SWS/open_framework.git

これにより、(現在のローカル ファイル システムの場所に) open_framework という名前のディレクトリが作成され、その中に .git ディレクトリが初期化され、そのリポジトリのすべてのデータが取り出され、最新バージョンの作業コピーがチェックアウトされます。新しく作成された open_framework ディレクトリに移動すると、そこにプロジェクト ファイルが表示され、作業や使用の準備が整っています。

特定のローカル フォルダーへのリポジトリのクローン作成

リポジトリを open_framework 以外の名前のディレクトリに複製する場合は、次のコマンドライン オプションとして指定できます。

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

このコマンドは前のコマンドと同じことを行いますが、ターゲット ディレクトリは mynewtheme と呼ばれます。

Git には、使用できるさまざまな転送プロトコルが多数あります。前の例では git:// プロトコルを使用していますが、SSH 転送プロトコルを使用する http(s):// または user@server:/path.git も表示される場合があります。

于 2013-04-23T21:27:56.920 に答える
52

git リポジトリを特定のフォルダーにクローンするには、-C <path>パラメーターを使用できます。

git -C /httpdocs clone git@github.com:whatever

その上にフォルダーが作成whateverされますが、リポジトリのコンテンツを現在のディレクトリに複製するには、次の構文を使用します。

cd /httpdocs
git clone git@github.com:whatever .

既存のディレクトリへの複製は、ディレクトリが空の場合にのみ許可されることに注意してください。

パブリックにアクセスできるフォルダーにクローンを作成しているため、Web サーバー構成 (ファイル内など)でフォルダーを使用--separate-git-dir=<git dir>または除外して、作業ツリーから Git リポジトリを分離することを検討してください。.git.htaccess

于 2017-01-08T20:04:06.660 に答える
18

現在のフォルダーにクローンしたい場合は、これを試してください:

git clone https://github.com/example/example.git ./
于 2016-09-11T00:59:08.380 に答える
17

.gitファイルを目的の場所に移動するときに、ディレクトリも移動しますか?OSと構成によっては、このディレクトリが非表示になる場合があります。

リポジトリとサポートファイルが含まれていますが、ディレクトリにあるプロジェクトファイルは/public、現在チェックアウトしているコミット(デフォルトではマスターブランチ)のバージョンのみです。

于 2009-03-16T16:14:48.887 に答える
16

使用法

git clone <repository>

<repository> にあるリポジトリをローカル マシンに複製します。元のリポジトリは、ローカル ファイル システム、または HTTP または SSH 経由でアクセス可能なリモート マシンに配置できます。

git clone <repo> <directory>

<repository> にあるリポジトリを、ローカル マシンの <directory> というフォルダーに複製します。

出典:リポジトリの設定

于 2015-06-26T11:42:09.477 に答える
12

現在のディレクトリにチェックアウトしようとしている場合は、必ず.gitリポジトリを削除してください。

rm -rf .gitそれからgit clone https://github.com/symfony/symfony-sandbox.git

于 2011-02-25T22:17:12.180 に答える
5

これが私が行う方法ですが、私はそれを行うためのエイリアスを作成しました。

$ cd ~Downloads/git; git clone https:git.foo/poo.git

これを行うにはもっとエレガントな方法があるかもしれませんが、これが自分にとって最も簡単であることがわかりました。

処理を高速化するために作成したエイリアスを次に示します。zsh 用に作成しましたが、bash や、fish、xyzsh、fizsh などの他のシェルでも問題なく動作するはずです。

~/.zshrc/.bashrcなどをお気に入りのエディターで編集します(私の場合はLeafpadなので、と書きます)$ leafpad ~/.zshrc

ただし、私の個人的な好みは、zsh プラグインを作成して、すべてのエイリアスを追跡することです。次のコマンドを実行して、oh-my-zsh の個人用プラグインを作成できます。

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

その後、新しく作成した空白の alises.plugin ファイルに次の行を追加します。

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(ここから、あなたの名前を私のものに置き換えてください。)

次に、エイリアスを機能させるには、(zsh と共に) エイリアスをソースに入れる必要があります (またはそれが呼ばれるものは何でも)。これを行うには、カスタム プラグイン ドキュメント内に次を追加します。

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

oh-my-zsh プラグインを保存し、実行しますallsource。それでもうまくいかないようであれば、単純に実行してsource $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zshください。これにより、今後使用できるプラグイン ソースが読み込まallsourceれます。


すべてのエイリアスを含む Git リポジトリを作成中です。こちらでお気軽にチェックしてください: Ev's dot-files . 必要に応じて、気軽にフォークして改良してください。

于 2016-02-28T04:46:25.980 に答える
-5

元の投稿のこの行について:

「リポジトリのクローンを作成した後にファイルを移動する方法は知っていますが、これは git を壊すようです」

私はそれを行うことができ、追加、コミット、プッシュ、プル操作でこれまでのところ問題は見られません。

このアプローチは上で述べられていますが、ステップに分割されていません。これが私のために働くステップです:

  1. レポを新しい一時フォルダーにクローンします
  2. ローカルに複製したルート フォルダに cd します。
  3. /.git ディレクトリを含むフォルダの内容全体を任意の既存のフォルダにコピーします。(レポとマージしたいEclipseプロジェクトを言ってください)

ファイルを にコピーした既存のフォルダーは、git と対話する準備ができています。

于 2013-05-06T02:16:22.157 に答える