2009-10-16 5 views
0

Je suis nouveau à git un fondamentalement en suivant les instructions d'ici http://genaud.net/2008/08/clearcase-globally-git-locally/ pour essayer de mettre en miroir un instantané clair. Je crée le référentiel git sur le répertoire de snapshots.git push crée 'undo' dans une scène distante?

Ensuite, je crée un clone de ce référentiel pour créer mon référentiel de travail.

MISE À JOUR: voici ce que je faisais

cd d:/views/contribsnap #(this is the snapshot from clearcase) 
git init 
git add . 
git commit 
#at this point I have a repository stuffed with my clearcase snapshot 
#then 
git clone -o contribsnap . /d/views/csclone 
# now I have my working repo 
cd /d/views/csclone 
edit testfile.txt 
git add testfile.txt 
git commit -m "made some changes" 
#from git gui hit 'push' button which puts my changes into the contribsnap repo 
#BUT it also stages a new file in contribsnap which if I commit it, it undoes the changes I pushed. 

FIN MISE À JOUR

Maintenant, le problème est que je ne comprends pas ce qui se passe sur un « push » de mon dépôt de travail de retour à l'origine. Quand j'appuie sur le bouton 'push' dans git gui de mon dépôt de travail, il semble que je mets la bonne chose dans le dépôt d'origine, mais ensuite il met en scène un fichier qui, une fois engagé, annule le push. Cela m'a vraiment dérouté la première fois que je l'ai essayé, parce que j'ai fait le push du repo de travail, puis un commit sur l'origine et HEAD^1 semble avoir les changements, mais le dernier ne le fait pas.

Je suppose que vous n'êtes pas censé valider cela, et il est mis là pour que le mainteneur de l'origine puisse facilement annuler le push?

Quel est le flux de travail si je suis le responsable des deux. Dois-je plutôt «tirer» le repo de travail dans l'origine? Ou est-ce que je désynchronise le fichier d'annulation et puis ... ??? Je ne sais pas quoi faire avec ce fichier 'undo'.

Merci. Jim

Répondre

1

Je suis un peu confus quant à exactement ce que vous faites, mais ces conseils peuvent vous aider: en général, il est une bonne idée de séparer les dépôts travail de votre référentiel maître. Créez donc un répertoire (disons) gitrepos séparé, puis chaque copie locale devrait pousser et tirer à partir de là. Ne modifiez pas les fichiers directement dans cette copie principale. Cela peut aider à garder les choses simples et propres, et signifie que vous n'endommagerez pas accidentellement votre copie principale.

Vous pouvez également utiliser git init --bare dans votre répertoire gitrepos, et tous les fichiers seront stockés ici, plutôt que dans un répertoire .git.

0

Je pense que ce http://git.or.cz/gitwiki/GitFaq#Whywon.27tIseechangesintheremoterepoafter.22gitpush.22.3F explique essentiellement ce qui se passe, bien qu'il ne précise pas exactement le mécanisme.

Je trouve que la traction fait ce que je pense.

Aussi ce fil stackoverflow.com/questions/883878/update-website-with-a-single-command-git-push-instead-of-ftp-drag-and-dropping explique que vous devez faire un 'git check -f 'sur la télécommande lorsque vous utilisez push ... Merci

Questions connexes