I have a few Cocoapods installed for my project. For one particular pod, KVNProgress, Xcode doesn't commit it to GitHub. Each time I check my project out I get 'can't find KVNProgress.h' blah blah...
So I run 'pod update' from terminal and immediately all is fixed.
After running 'pod update', I check my project navigator and there are no 'A' or 'M' or anything else for that matter indicated a new or modified file. Therefor nothing to commit.
Any ideas how to fix this so I don't have to update the pods each time I check out the project?
You should use the Terminal to figure out if it's an Xcode problem or a git problem.
Run git status --ignored in the project directory. If the Pods directory is shown in the Ignored files section you have to remove Pods from your .gitignore file.
If the files appear in the untracked files section Xcode messed up the git status.
You can use git add . to add all untracked files.
As a side note, I would recommend to use a dedicated git client like SourceTree, GitHub Mac, or Tower instead of Xcode. Xcodes git implementation is not the best (feature wise) and it's a bit buggy.
Related
I am running one iOS/Swift project in Xcode 14.1. Git showing project.pbxproj file modified. A few days back I merged some branches and pushed the changes. The branch is working for others but causing an issue for me. Even I did not modify any file after the push. I want to discard this local change. Please help me.
I tried to remove the changes with help of the following commands.
1. $git checkout .
2. $git clean -d -f
The change is disappear for a second after executing git checkout . but again shows the same changes after some time. After running the checkout terminal show the *Updated 1 path from the index* message. I tried to discard changes from the source tree but after refreshing it again showed modify.
Git difference is showing same file is added and deleted on same folder location.
I tried all the ways mentioned here
How do I discard unstaged changes in Git?
But does not work anything for me.
My Solution:
Solution 1:
I deleted the repo and took a fresh clone.
Update
Found another solution also, most of the time it works for me but in case it does not work for you go for the first solution.
Step 1:
Quite the Xcode
Step 2:
Discard the project file changes from either terminal using git checkout . or any UI tool.
Step 3:
Open your Xcode project. Hopefully, you will not get project file changes.
I've created a project to practice using Git with Xcode and GitHub. After a lot of work, I've got the repositories created both locally and remotely. I just tried to make a commit and got this error:
Here's what I'm trying to commit:
The last things I did before I got this error were:
I added a .gitignore file using the GitHub Swift template in order to remove the .xcscheme file from the cache
from the Terminal, I ran 'git rm --cache'
I created the test_file and then tried to Commit
But I can see the folder in the finder:
I looked around SO a lot and found many questions about git commit problem but what I found had mostly to do with diacritics and other issues that aren't the same as mine.
Did the 'git rm --cache' lead to this situation? What can/should I do to safely correct this problem?
Thanks
Update: Seems I really got myself into pickle. I've got nested 'git-practice-project' directories several levels deep:
I've started at the deepest directory, did an ls, and a git status, the backed myself up to the top doing the same thing at each level. It looks like only the two highest directories have uncommitted changes and the project.pbxproj file exists in both of them.
I don't use Xcode's SCM features so I am not sure why Xcode is confused here. But it looks like the files under git-practice-project/git-practice-project aren't known to git yet. You need to add the directory to git. On the command line from the project's root directory you could try:
git status
That should list your files that have been modified, deleted, and that aren't part of the git repo yet.
Add the directory and its contents:
git add git-practice-project
Once you have done that, you should be good to go to use the SCM tools in Xcode again.
Update: In Xcode, you can select the file that is marked with the ? and then go to the Source Control menu and select Add Selected Files.
Ran into this with Xcode 10, with newly added files. You first need to add the new files to the repository. Simply select the file in the navigator on the left, right-click, then Source Control in the pop-up, and select "Add Selected Files". After this the commit will work.
I've just updated my Xcode from 6 to 7 (and code from Swift 1.2 to Swift 2.0) and try to create new branch in Xcode. After that I can't push my code to Bitbucket.
Is there a way how can I delete repository from directory and setup Bitbucket again and maybe push to another (a new one) repository? Fix of this problem will be great, but I will be satisfied even with move to another repository.
I had this error in xcode 7.1 on a year old project that was working fine. In my case I have a project with the default local repository created by xcode. For anyone who is not going to re-install and re-setup. It is possible to find out what the dangling command is and fix it from command line.
To find the dangling command Open Terminal from the project directory:
xcrun git status
In my case the status returned:
On branch master
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
To fix the problem I used:
xcrun git rebase --skip
In my case I ran git status which revealed that You are currently bisecting. (I was doing a bisect and must had forgotten to reset). I did a git bisect reset and attached the head to my latest commit and it was all fine afterwards.
When I am merging from currentBranchA into branchB, I got conflicts,I didn't want to solve the conflicts immediately and quit the merging process. But when I try to merge again, the Xcode shows "The working copy is currently in the middle of another operation..."
I opened the terminal ,cd to the project directory, and check the git status:
git status
it shows:
On branch currentBranchA
Your branch is up to date with 'origin/currentBranchA'.
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Just do it as it says. Continue to input
git commit and click Ctrl + C to close the commit message window.
The problem will be zero.
The problem was with installation of GitHub. I had a master repository. After reinstall and resetup everything works like before.
EDIT: For anyone who has a problem with Xcode and GIT I have a best advice. Don't use it. Use for example Source Tree
When you start developing for a living, you are gonna have to use more reliable solution for GIT. Imagine you have 70 branches. Using Source Tree you can easily solve conflicts and other things about working in team. Xcode GIT solution is not reliable and you are gonna be only frustrated.
After pulling from main master, encountering a conflict and resolving conflict.
I'm working in a sub-folder of the main project repo (on automated tests) and so generally don't have to worry about conflicts. It seems however that every time a conflict is encountered and fixed, where I attempt to commit the pulled files RubyMine gives me this error message and won't allow anything to be done to resolve. I've previously taken a new fork from the GitHub main and manually merged in my own lost commits but it's happened again.
I can't find any reference to this dialog on searching the web and our TA has investigated the issue, concluding that it may be a RubyMine bug. I'm continuing my search for relevant info but aside from poring through the bugs in http://youtrack.jetbrains.com/issues/RUBY (which I have now done with no relevant issues found) I can't see where any leads might come from.
Latest version of RM (6.0.3) running on Macbook Pro (Mavericks)
RubyMine was used to resolve the conflicts; git status shows only the pulled files I'm now trying to commit as tracked and uncommitted - I have untracked files managed in a gitignore file
The dialog says:
Commit
Commit failed with errors
With error message displayed in terminal:
Error: Error executing git commit --only -F
[list of files I attempted to commit]
Try like this
Goto Tools -> Open terminal
Use this command
git status
Then add untracked files
git add .
Commit changes like this
git commit -i * -m "commit message"
If you still have errors please post the error. You can see the Version control logs at the bottom of rubymine
Are you using Rubymine to resolve the conflicts? If not, it's possible RubyMine has kept stale state of the filesystem and is reporting the errors because of this.
What does git status . tell you in your working directory? Is your current tree clean, or do you have unmerged changes?
I have just recently backed-up my XCode C++ project on my pendrive, using
rsync -avu
Since then, the version control for my project is grayed-out on every files, I can modify the files and not see the "M" nor the "A" sign. The only files still having version-control working "shared" files for which it works correctly. (Those shared files belong to a different project called "Shared").
I have tried git commit -m, git add . and even git init where the files were. Nothing worked.
Can you please help restoring version control for my project?
UPDATE:
Answers for the questions in commens (and answers):
my git repository is on my local hard drive.
I went to the Organiser-repository pane in XCode and I see my recent git commit -m "sth" as "sth" az a commit. I have a single branch: master.
Im not sure what command would be good to test git, as my commits work (theoretically).
I have a folder named .git in the project folder.
git log is working, showing the same as XCode Organiser-repository pane.
I think the XCode just can't synchronise with the git for some reason, and I don't know how to correct that.
First off, this is not an answer that will fix your problem, I just try to provide some help that might get you closer to a diagnosis.
Git stores its files in a folder named .git. Check if this folder is present in your project. If it's not then your Git repository is gone.
Next, try some basic command such as git log. For this to work, you must first cd to your project folder (or a subfolder thereof), because whenever you run a Git command it will look for the .git folder in the cwd or a parent folder. If git log does not work then your Git repository is broken in some way. Someone else will have to step in to further diagnose the problem, as I am no expert on this subject.
Finally, you should also check whether your rsync command has really sync'ed your project's .git folder with the backup's .git folder. Use this command:
diff -rq /path/to/project/.git /path/to/backup/.git
If there is no difference (as I would expect if rsync has worked correctly) then the problem with your Git repository is both in your project and in your backup. If there are differences then it might be worthwile to try your next steps on a copy of the backup (it should be fine to make the copy in the Finder).
Good luck.