2012-12-13 5 views
8

Ho creato una filiale e apportato alcune modifiche. Ho eseguito le modifiche e archiviato le modifiche. Poi sono passato al master branch e ho provato a fare una fusione. Diceva che avevo cambiamenti senza impegno. Così ho fatto un commit sul ramo master per vedere di cosa stava parlando. Ha affermato che esiste un file chiamato UserInterfaceState.xcuserstate che è stato modificato. Così ho commesso il cambiamento (non sono sicuro di quale sia stato il cambiamento). Poi ho provato a unirmi di nuovo. Quindi apre una finestra di fusione e indica che esiste un conflitto con UserInterfaceState.xcuserstate. Così sono tornato al ramo e ho scoperto che ora è necessario impegnare lo stesso file. Questo non si è fatto vedere prima. Così l'ho commesso e sono tornato al master branch. Ancora una volta ho provato a unire, ma non posso a causa di modifiche senza commit. Abbastanza sicuro, UserInterfaceState.xcuserstate ha ancora una volta bisogno di essere commesso. L'ho commesso e ho cercato di unirmi. Lo stesso problema con il conflitto. È un circolo vizioso.Impossibile unire a causa di un conflitto con UserInterfaceState.xcuserstate

Che cos'è questo file e come risolvo il conflitto segnalato. Non viene visualizzato nella finestra di navigazione del mio progetto. Inoltre, non è nel file system Unix. Sono completamente bloccato. Suggerimenti? Sto usando Xcode 4.5.2

risposta

5

UserInterfaceState.xcuserstate è dove Xcode salva i tuoi stati GUI, come la posizione delle finestre, le schede aperte, i nodi espansi nella finestra di ispezione progetto, ecc

semplicemente il ridimensionamento della finestra Xcode causerà questo file cambia ed essere contrassegnato come modificato dal tuo sistema di controllo del codice sorgente. È possibile rendere il sistema SCM ignorare file specifici che non sono importanti per il progetto stesso.

Git: Git ignore file for Xcode projects
Subversion: SVN ignore pattern with Xcode 4

+0

Dove sono questi file che il vostro link si riferiscono a: .gitignore e .subversion. Non sono in ~ e i link suggeriscono. Inoltre, dato che questi link si riferiscono a git, xcode usa git per il suo SCM? – JeffB6688

+0

Supporta entrambi, è per questo che ho postato entrambi i collegamenti. Non so cosa stai usando. Ma se non lo sai, probabilmente stai usando git, dato che questo è quello che Xcode usa di default. I file ignorati si trovano nella cartella home (~). Se non esistono, devi crearli. Nota che queste sono cartelle nascoste (a partire da '.'), quindi non le vedi normalmente nel Finder. Prova 'ls -a' sul Terminale. – DrummerB

+2

Sfortunatamente, non funziona ancora. Creo un file .gitignore nella mia home directory come da collegamento sopra. Ma ogni volta che provo a cambiare ramo o unire, mi impegna costantemente a commettere le modifiche per il file UserInterfaceState.xcuserstate prima di unire o cambiare rami. In altre parole, .gitignore non sta ignorando quel file. Ho anche provato a riavviare xcode. Questo non ha aiutato. Qualche idea su cosa mi possa sfuggire? – JeffB6688

11

è sufficiente rimuovere i file utilizzando

git rm --cached * xcuserstate

poi fare un locale commettere selezionando .DS_Store con il messaggio di vario

scartare tutte le altre modifiche

tirare

spinta

fatto :)

+0

Per favore potresti essere più preciso in quanto non ho familiarità con la sottostante struttura di directory del progetto xCode. per esempio. La mia app si chiama Twoater. - Quindi dove dovrei digitare il primo comando che hai menzionato sopra? - come faccio a fare un locale commettere selezionando .DS_Store - come faccio a scartare tutte le altre modifiche - ecc – Guy

+0

Così ho trovato il modo di fare la prima linea e ha portato in questo: Guys-Air: guy.xcuserdatad ragazzo $ git rm --cached * xcuserstate Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy.xcuserdatad/UserInterfaceState.xcuserstate: esigenze fondono rm 'Twoater.xcodeproj/project.xcworkspace/xcuserdata/guy.xcuserdatad/UserInterfaceState.xcuserstate ' – Guy

+0

Poi ho provato a fare un commit locale: Guys-Air: guy.xcuserdatad guy $ git commit -m' .DS_Store bandito! ' U \t Twoater.xcodeproj/xcuserdata/guy.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist errore: 'commit' non è possibile perché si hanno file non raggruppati. suggerimento: li Fissare su nell'albero lavoro, suggerimento: e quindi usare 'git add/rm ' come suggerimento: appropriato per marcare la risoluzione e fare un commit, suggerimento: o utilizzare 'git commit -a'. irreversibile: uscita a causa di un conflitto non risolto. – Guy