我是新来的git,基本上按照http://genaud.net/2008/08/clearcase-globally-git-locally/的指示来尝试镜像一个clearcase快照。
我在快照目录上创建了git存储库。
然后我创建该存储库的克隆来创建我的工作存储库。
更新: 这就是我做的事情
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.
END UPDATE
现在,问题是我不明白从我的工作存储库返回原点的'推送'会发生什么。
当我从我的工作存储库中点击git gui中的“push”按钮时,它似乎将正确的东西放入原始存储库,但随后它会暂存一个文件,该文件在提交时撤消了推送。第一次尝试它时真的很混乱,因为我从工作回购中做了推动,然后对原点进行了提交,HEAD ^ 1似乎有了更改,但最新的没有。
我猜你不应该提交它,并且它放在那里,以便原点的维护者可以轻松撤消推送?
如果我是两者的维护者,那么工作流程是什么。我是否应该将工作回购“拉”到原产地?或者我取消暂停撤消文件然后...... ???我不知道如何处理'撤消'文件。
感谢。 吉姆
答案 0 :(得分:1)
我对你正在做的事情有点困惑,但这个建议可能有所帮助:一般来说,将工作存储库与主存储库分开是个好主意。因此,创建一个单独的(例如)gitrepos
目录,然后每个本地副本应该从那里推送。不要直接在该主副本中编辑文件。这可以帮助保持简单和干净,并且意味着您不会意外损坏主副本。
您还可以在git init --bare
目录中使用gitrepos
,所有文件都将存在,而不是.git
目录中。
答案 1 :(得分:0)
我认为http://git.or.cz/gitwiki/GitFaq#Whywon.27tIseechangesintheremoterepoafter.22gitpush.22.3F基本上解释了正在发生的事情,尽管它并没有准确地解释这种机制。
我发现拉动符合我的预期。
此线程stackoverflow.com/questions/883878/update-website-with-a-single-command-git-push-instead-of-ftp-drag-and-dropping说明你必须做一个'git checkout -f'在遥控器上使用推... 感谢