git push after multiple add and remove - android

A few days ago I create a repository with an android project that I have been working on. Since then I have deleted a number of files and have added a number of others. Now I want to push my new changes to github. How do I do that? What are the commands to issue? I know I have o commit and then push to master. But how do I tell git that I have added and deleted a number of files? Normally I just do git add . since normally I am adding stuff. But this time I have x new files and y deleted files.

You can use git add --all . to record all changes, including deletions. From the man page:
-A
--all
Like -u, but match against files in the working tree in addition to the index. That means that it will find new files as well as staging modified content and removing files that are no longer in the working tree.
If you want more granular control, use git rm <filespec> to remove files from the index.
After that, commit and push as usual.

To push my changes I do:
1. git add .
2. git commit -m "write my comments for change"
3. git push origin<< provide my credentials

Related

how move specific files (already pushed changes) from one branch to a new branch in android studio?

I am currently working on my android application on android studio and I am fairly new to working on it with git. I have files that I want to move from a branch (branch1) to a completely new branch (feature1). Please note that I have committed all of my changes to branch1 and I have pushed all of those commits as well.
I have seen similar questions with answers but I am quite confused about how to make it work. How can I do that? Thank you and pls bear with me :)
Let's say we have three branch in a repository (master, branch1, branch2).
Now, you want to remove file from branch1 and that file should be present in a completely new branch say branch3
Create new branch of branch1
git checkout branch1 //to create new branch from branch1, you need to checkout to that branch first
git checkout -b branch3
Now, the new files are in branch3.
Now checkout to branch1 and $ git rm <file-name> and $ git commit -m "file removed from branch"
It's the simple and straightforward way I can think of.
You can cherry pick commit that you want to move from branch1 to feature1

Android Studio Git Push Rejected

I'm trying to uploading my Android Project on github but I get this error when I try to push:
Push rejected: Push to origin/master was rejected
I made this steps:
VCS->Import into version control->Create new repository...
From the git bash in Project folder:
git remote add origin https://github.com/[username]/[project_name].git
Git->Add
Git-> Commit directory
Git-> Push
after push follow these,
VCS --> Git --> Branches
then select origin/master --> Rebase
after finish rebase successful message, you could able to push to remote directory.
As suggested in the comments you should pull the changes first, if you are working on a new repository that could happened when you create your remote repo with a readme or a licence file. To pull the changes from the user interface you should use, VCS > Git > Pull then select the master branch (depends)
after that you can Git > Push without problem.
Just go to the root directory of your project and follow below steps:
Right Click-> Git Bash Here
Type git init (For initializing git).
Type git add -A (Get all files in the staging area).
Type git commit -m "First Commit"(Commit Changes)
Type git remote add origin https://your_git_url.git (Your repo URL)
Type git push -u origin master(master - Branch name)
OR
Type git push -f origin master(master - Branch name) (-f for Force push and make sure there are no changes in your branch to push code.)
You can also make use of Git GUI client:
Github Desktop for github users Download
GitKracken for Windows, Mac and Linux Download (Free for public repositories)
SourceTree for Windows and Mac Download
For Android Studio if your "Push" is rejected, go ahead and try this:
Try to Pull.(Origin/Master).Right after that:
VCS-->Git-->Branches..-->Remote Branches(origin/master)-->Rebase Current onto Selected
This will eradicate all your contradicting configurations.
Try this
This type of error was also coming in my project because i have create a new project and paste my old config and some classes file in new project.
I have pushed the code by creating new branch
Go to VCS->Git->Branches->New Branch
If none of the above solution works then you can check this out..
Log in to the GitHub account and go the settings.
In settings open Emails section and check whether it is public or private.
If it is public then other solution will work out finely and if your email is private then declare it public.
Because of the private email you aren't able to push the files in the repository from your IDE. So, make it public
Another Solution.!!
The unversioned code is not versioned, the changes are committed but don't push.
Following are the steps to make the files versioned.
Open the project tab(must be in the left side toolbar, if not then press 'Alt + F1')
At the top, there is a dropdown with 'Android', open the dropdown and select the 'Project'
In the list shown, right click your project folder
There must be a option of 'Git', select it
Choose the 'Add' option.
And there it is!.
Now simply try to commit and push operation as usual.
**NOTE :**You've to add files everytime using the above steps to upload the files successfully.!!
Thank you folks :)
I had this same problem. I finally tried it from the command line and and received this message:
remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails
There you should see two checkboxes. You will need to uncheck one of them.
Keep my email address private
Block command line pushes that expose my email
This is the case when you make a repository with a readme file default and so you can either pull first or make a new repository without a readme file and dont forget to change the repo URL. Hope it helps. Cheers.
I had the same problem, just solve it by doing this:-
Go to Github account settings
(1)
(2)
I had the same issue when I Fork from my another github account and clone it in Android Studio, I changed some file and commit(success) and pushed and that is rejected.
The problem was, I have logged into GitHub in Android Studio with my other account, not the one I'm fork the project. Check out your's from:
File -> Setting -> Version Control -> GitHub
If account information is not match with the repo cloned account, change it.
Then you can Push without a problem.
We can get around this "limitation" by editing the .git/config on the destination server. Add the following to allow a git repository to be pushed to even if it is "checked out":
[receive]
denyCurrentBranch = warn
or
[receive]
denyCurrentBranch = false
If you are pushing for the first time, Delete the repository from git, Share the project again on Git from Android Studio 3
When I encountered the same error in Android Studio; I just simply renamed my remote name and it fixed the error.
Steps which I followed are:
Right click on project name and go to Repository option.
Then select Remotes.
Then you will be asked to Define Remote by providing a name of the remote and URL of your GitHub repository. Just change the name according to your choice if 'origin' is already filled and then fill the URL of your GitHub repository.
I am giving clear note here skip steps you already done..
first create new repository in github. (dont close the tab until work done)
then you have to check whether you are log into your github account in android studio. if not you can log in setting-->Version Control --> github.
Then go to VCS -> Import into Version Control.
now in android studio project tab change it from android to project .Android to Project.
step 3:
then Right click on your project select git then +add. again Right click -> commit and again Right click -->git--> repository--> push.
in the new window select origin ->master then push.. if you already do this part and get the error in here do this.(i think this is the first time you try to add your project to github and github repo is empty.)
goto terminal (bottom of the ide) remove origin using this command.
git remote rm origin
now do step 3 again. after that you will asked to enter github repository url.
whenever you add url make sure to add .git .at the end of the url.
like this. https://github.com//xylophoneApp.git
for anyone maybe Suffers with this issue like me, the entire problem was with executionHistory.bin file, and don't ask me why because I don't know at all.
just create commit without this file and push it, this was the solution for my issue.
Hope this help someone.
In my case initially, I had created a new repository with a Readme file.That's causing the issue. Next time when I create new repo without the Readme file, everything works fine

Removing build folder from git

I have pushed a build folder to my remote repo; but the .gitignore file clearly has this line (/payu_ui/build); But i found out since the build files were already tracked once and now that i wrote a line in .gitignore will not really ignore the build folder. So i want to remove it from git from being tracked (the complete build folder) so i used this command
git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch payu_ui/build/' --prune-empty --tag-name-filter cat -- --all
But every time i run this command it gives an err saying
fatal: bad revision 'rm'
So what is going wrong; every time i click the commit option from IDE it shows that 1300 files needs to be committed (its annoying me)
Any help will be appreciated;
1. I dont want to track these build files(from payu_ui lib)
2. I dont want to push them to remote repo (but its already thr and beleive once i track from local and push them it gets deleted in remote repo; if it doesn't i'll manually delete in remote repo)
Well you may just do the following,
Remove the line from gitignore for now.
Locally delete the folder.
Push out the change so the folder gets deleted from remote as well.
Now add the line to gitignore.
I recently faced the problem and that is what i did.
remove those build files (or whole folder) from your computer
rm -r [direction to files]
then add, commit and push all your changes (actually the change will be removing those files from repository), if you have set .gitignore
file properly, git will stop tracking those files

Android Studio .iml git issue

When I try to make a "git pull" I get the following message :
error: The following untracked working tree files would be overwritten by merge:
blablabla.iml
Please move or remove them before you can merge.
Aborting
I try to checkout the .iml and add it to my gitignore but I keep receiving this message. Does someone know how to fix it?
Regards
Jose
Git will not allow you to execute a pull that would cause you to lose changes in your working directory (this is good for obvious reasons).
Adding the file to your .gitignore will tell git not to push your changes to that file to other repositories, but it does not prevent you from pulling other repositories changes of those files. So this actually has no effect on the operation you are trying to do. As a side note, it is not recommended to put iml files in a .gitignore: What should be in my .gitignore for an Android Studio project?.
Here's what I would do:
Stash your local changes: git stash save "My iml changes"
Then checkout the code: git pull
Optionally, get your local changes out of the stash: git stash pop. Or, if you prefer, git stash drop stash#{0} (As pointed out by #LoyalRayne, you might not need these changes). See the differences with git stash show stash#{0}.
If you want the contents that are currently in the repo, you can revert your local changes first with git checkout blablabla.iml, then pull. Or, if you want to keep your local changes, do git stash, then git pull, then git apply.
After doing the above steps, you may add the file to .gitignore. Make sure to remove it from source control as well with git rm --cached blablabla.iml. Note that when it is remove from source control, it will get deleted on other people's machines when they do their next git pull, so they will want to create a backup.

What does repo init and repo sync actually do?

I posted this question at Android Enthusiasts but figured it was the wrong place to ask, so I deleted it from there and asking it "again" here.
This is such a noob question, and pardon me if it is, but I just want to understand the underlying concepts clearly. Reading repo help and Google's repo command reference page doesn't really enlighten much. I understood some bits from Google's reference page, but I still need some more clarifications.
Following the instructions on how to download android source, I executed these two commands on an Ubuntu shell: (I've taken cared of all the prerequisites for the environment.)
~/android4.2.2$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
~/android4.2.2$ repo sync -j4
After waiting half a day for repo to finish downloading, I ended up with 19G of downloaded material in android4.2.2 directory. So what exactly just happened, and why did it reach 19G when Google said I should only be expecting around 8G of source files?
repo is a python wrapper script for git, its Google Source page defines it as
repo - The Multiple Git Repository Tool
repo init command initializes repo in the current directory. That's, it downloads the latest repo source and a manifest.xml file that describes the directory structure of the git repositories, and store all of these in .repo sub-directory in the current directory. In your case, you have used an optional -b argument which is used to select the branch to checkout. By default (i.e., when -b argument is not used), master branch is used.
repo sync updates working tree to the latest revision. That's, it synchronizes local project directories with the remote repositories specified in the manifest file. If a local
project does not yet exist, it will clone a new local directory from the remote repository and set up tracking branches as specified in the manifest. If the local project already exists, it will update the remote branches and rebase any new local changes on top of the new remote changes. -j argument is used to set number of parallel jobs to execute. The default value can be defined in the manifest, and also can be overridden in command line as in your case.
why did it reach 19G when Google said I should only be expecting around 8G of source files?
That should be because besides the source files, you will get all the history of Android since the beginning of the time :)
Hope this helps.

Categories

Resources