38

I have a folder with all my files set up for a project. I decided to use git on that folder, so I created on Github an empty repo. Usually the procedure is to clone on my local disk the remote repo, and in this case it will create an empty folder. But, what I want to do is to fill the remote repo with my project folder without harming and without moving it. Is there a procedure to do that?

65

As hinted in GitHub help:

  1. Create a new repository on GitHub.

  2. Open Git Bash.

  3. Change the current working directory to your local project.

  4. Initialize the local directory as a Git repository.

     $ git init
    
  5. Add the files in your new local repository. This stages them for the first commit.

     $ git add .
    
  6. Commit the files that you've staged in your local repository.

     $ git commit -m "First commit"
    
  7. At the top of your GitHub repository's Quick Setup page, click to copy the remote repository URL.

  8. In the Command prompt, add the URL for the remote repository where your local repository will be pushed.

     $ git remote add origin <remote repository URL>
     # Sets the new remote
     $ git remote -v
     # Verifies the new remote URL
    
  9. Push the changes in your local repository to GitHub if there is a remote branch called master (or main if that's what you're using)

     $ git push origin master
    

    Otherwise you will have to name local branch first by

     $ git branch -m <new_name>
    

    and then push it to add a new branch called <new_name>

     $ git push origin -u <new_name>
    

If you still end up with errors like "Updates were rejected because the remote contains work that you do not have locally", this is normally because that the remote repo is recently created manually. Make sure you are not overwriting anything on the remote end before you force push local git folder to it using

$ git push origin -u -f <new_name>
3
  • 1
    Thanks. I followed your procedure, but at step 9 I got this error: ! [rejected] master -> master (non-fast-forward) It says I have to use git pull first, I did, but I got the following: There is no tracking information for the current branch. Please specify which branch you want to merge with. Anyway, I'm scared that this "git pull" could overwrite my current dir. Am I missing something? – user840718 Mar 7 '19 at 11:21
  • 1
    It seems you have already some files on the remote repository. If you don't care about the remove one, then please read stackoverflow.com/questions/5509543/…, or you can pull your remote data to an empty local folder, copy to it what you want, then push – Ahmed Ashour Mar 7 '19 at 11:25
  • 2
    It worked with the --force option. Thanks. – user840718 Mar 7 '19 at 11:36
4
  1. Create a new repository on GitHub and note down it's clone path.

  2. Open any folder in computer and clone newly created repository using following command:

$ git clone <repository_clone_path>
  1. Open newly created folder and unhide the .git folder.

  2. Move the .git folder to you local project folder(which you want to push to remote)

  3. Push the code to remote using standard commands:

$ git add .

$ git commit -m "Initial commit"

$ git push origin master

That's it. Your local branch is now linked to your remote branch.

1
1

I think Ahmed's answer above is comprehensive. But, my solution is a bit shorter and less involved:

  1. Create a new repo on GitHub website. (And, copy the URL-to-your-new-repo.)

  2. Go inside your local folder and type in

    git remote add origin https://github.com/your-new-repo-URL.git

  1. git branch -M main
  1. git push -u origin main

What happens above is you are adding all your local files to the Master branch of your newly-created "remote" repo on GitHub.com.

0

This was the sequence that did it for me:

On the local folder which you want to push, do:

git init

Add all files (incl. subdirectories) with:

git add .

Commit with your message using -m:

git commit -m "bring on the code"

Now things are set in your local git repo. You need to link it to the repo on GitHub using:

git remote add origin https://(the cloning URL).git

Next is to link your local master branch with the remote master branch:

git branch --set-upstream-to=origin/master master

Pull any files in the remote repo (e.g., new repo with a README.md) with:

git pull origin master --allow-unrelated-histories

The 'allow unrelated histories' is needed because the local and remote branch did not have a common history yet.

Now you can git push and everything is normal :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.