Executing the command
git clone [email protected]:whatever creates a directory in my current folder named whatever, and drops the contents of the Git repository into that folder:
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:
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?
git clone [email protected]:whatever folder-name
move the .git folder, too.
Keep your working copy somewhere else, and create a symbolic link.
When you move the files to where you want them, are you also moving the
.git directory? Depending on your OS and configuration, this directory may be hidden.
It contains the repo and the supporting files, while the project files that are in your
/public directory are only the versions in the currently check-out commit (master branch by default).
The example I think a lot of people asking this question are after is this. If you are in the directory you want the contents of the git repository dumped to, run:
git clone [email protected]:whatever .
The "." at the end specifies the current folder as the checkout folder.
Make sure you remove the .git repository if you are trying to check thing out into the current directory.
rm -rf .git then
git clone https://github.com/symfony/symfony-sandbox.git
Let's say you want in a folder like
/stuff, but your pull is creating a directory under
You can do:
mkdir /stuff ln -s /repo/tokens /stuff
That's it. You are done.
You clone a repository with
git clone [url]
For example, if you want to clone the Stanford University Drupal Open Framework Git library called open_framework, you can do so like this:
$ git clone git://github.com/SU-SWS/open_framework.git
That creates a directory named open_framework (at your current local file system location), initializes a .git directory inside it, pulls down all the data for that repository, and checks out a working copy of the latest version. If you go into the newly created open_framework directory, you’ll see the project files in there, ready to be worked on or used. If you want to clone the repository into a directory named something other than open_framework, you can specify that as the next command-line option:
$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme
That command does the same thing as the previous one, but the target directory is called mynewtheme.
Git has a number of different transfer protocols you can use. The previous example uses the git:// protocol, but you may also see http(s):// or [email protected]:/path.git, which uses the SSH transfer protocol.
Regarding this line from the original post:
"I know how to move the files after I've cloned the repo, but this seems to break git"
I am able to do that and I don't see any issues so far with my add, commit, push, pull operations.
This approach is stated above, but just not broken down into steps. Here's the steps that work for me:
The existing folder you just copied the files into , is now ready to interact with git.
Go into the folder.. If the folder is empty, then:
git clone [email protected]:whatever .
git init git remote add origin PATH/TO/REPO git fetch git checkout -t origin/master
git clone <repository>
Clone the repository located at the <repository> onto the local machine. The original repository can be located on the local filesystem or on a remote machine accessible via HTTP or SSH.
git clone <repo> <directory>
Clone the repository located at <repository> into the folder called <directory> on the local machine.
Source: Setting up a repository
Here's how I would do it, but I have made an alias to do it for me.
$ cd ~Downloads/git; git clone https:git.foo/poo.git
There is probably a more elegant way of doing this, however I found this to be easiest for myself.
Here's the alias I created to speed things along. I made it for zsh, but it should work just fine for bash or any other shell like fish, xyzsh, fizsh, and so on.
/.bashrc, etc. with your favorite editor (mine is Leafpad, so I would write
$ leafpad ~/.zshrc).
My personal preference, however, is to make a zsh plugin to keep track of all my aliases. You can create a personal plugin for oh-my-zsh by running these commands:
$ 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'
Afterwards, add these lines to your newly created blank alises.plugin file:
# Git aliases alias gc="cd ~/Downloads/git; git clone "
(From here, replace your name with mine.)
Then, in order to get the aliases to work, they (along with zsh) have to be sourced-in (or whatever it's called). To do so, inside your custom plugin document add this:
## 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 " ####################################
Save your oh-my-zsh plugin, and run
allsource. If that does not seem to work, simply run
source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh. That will load the plugin source which will allow you to use
allsource from now on.
I'm in the process of making a Git repository with all of my aliases. Please feel free to check them out here: Ev's dot-files. Please feel free to fork and improve upon them to suit your needs.
If you want to clone into the current folder, you should try this:
git clone https://github.com/example/example.git ./
To clone git repository into a specific folder, you can use
-C <path> parameter, e.g.
git -C /httpdocs clone [email protected]:whatever
Although it'll still create a
whatever folder on top of it, so to clone the content of the repository into current directory, use the following syntax:
git [email protected]:whatever .
Note that cloning into an existing directory is only allowed when the directory is empty.
Since you're cloning into folder that is accessible for public, consider separating your Git repository from your working tree by using
--separate-git-dir=<git dir> or exclude
.git folder in your web server configuration (e.g. in