1

这是我第一次尝试使用版本控制。我发现最好的解决方案之一是 Git。

我几乎做对了所有事情,至少我遇到了一些问题或类似的事情。

Debian 机器。

/home/user/myProject/

git init --bare myproject.git

/var/www/clonedProject/

git clone /home/user/myProject/myproject.git
git add xxx.php
git commit -m "TEST"
git push origin master

但是 home/user/myProject 没有变化。我不明白什么是问题,如果有问题或我做错了什么。

Git 文档

谢谢。

4

4 回答 4

1

这是使用您的示例进行的完整测试运行(无论如何,尽可能接近)。您可以从此日志中看到您的命令应该可以正常工作。如果您得到一些不同的输出,请与我们分享,以便我们帮助您解决实际问题。一步步:

  1. 为此示例创建一些目录

    $ mkdir bare
    $ mkdir clone
    
  2. 初始化一个名为myproject.git

    $ cd bare/
    $ git init --bare myproject.git
    Initialized empty Git repository in /example/bare/myproject.git/
    
  3. 切换到clone目录并克隆我们刚刚创建的 repo

    $ cd ../clone
    $ git clone ../bare/myproject.git
    Cloning into 'myproject'...
    warning: You appear to have cloned an empty repository.
    done.
    
  4. 将目录更改为新的 repo,然后创建、添加和提交一个新文件

    $ cd myproject/
    $ touch xxx.php
    $ git add xxx.php
    $ git commit -m "TEST"
    [master (root-commit) 921786a] TEST
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 xxx.php
    
  5. 将这个新提交推回原点(我们之前克隆的裸仓库)

    $ git push origin master             # push this new commit to origin
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 207 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To /example/clone/../bare/myproject.git
     * [new branch]      master -> master
    
  6. 回到裸仓库并查看提交是否存在

    $ cd ../../bare/myproject.git/
    $ git log
    commit 921786a20f3e7e0d17eec65450472b54bf3d7c56
    Author: Carl Norum <carl@someplaceorother.com>
    Date:   Wed Jul 3 08:00:31 2013 -0700
    
        TEST
    
  7. 是的,所以一切正常。

于 2013-07-03T15:03:21.573 回答
0

您的更改已复制到/home/user/myProject/myproject.git. 它们不会自动分发给所有其他克隆。

要在其中看到它们,home/usr/myProject您还必须将此文件夹设为存储库的克隆并发出git pull. 在项目本身中拥有“裸”存储库并不是一个好主意。

相反,您可能应该为所有“裸”存储库使用单独的git存储库。然后,您push从克隆“repositoryA”更改为中央“裸”存储库,然后pull从该中央存储库更改为另一个克隆“repositoryB”

$ cd ~
$ mkdir git
$ git init --bare git/myproject.git
$ cd git clone git/myproject myProject
$ ls
git/
myProject/
$ cd myProject/
$ ls
$ cd /var/www/clonedProject/
$ git clone /home/user/git/myproject.git
$ ls
myproject
$ cd myproject
$ touch xxx.php
$ ls
xxx.php
$ git add xxx.php
$ git commit -m "TEST"
$ git push origin master
$ cd ~/myProject
$ ls
$ git pull
$ ls
xxx.php
$

git它本身是一个“分布式”版本控制系统,这意味着中央存储库的概念是不够的。这意味着,没有一个服务器,但可以是任意数量的“远程”服务器,包括没有。但是,如果您有一个存储库的多个克隆,通常建议至少有一个共享的“远程”,它只能通过git pulland访问git push。理论上你可以直接克隆一个非裸仓库(即:git控制下的工作目录),但是push回这样的仓库通常很麻烦——主要是因为你创建了访问权限的层次结构。

于 2013-07-03T15:19:34.173 回答
-1

这可能是一个很好的入门教程。 教程

试试 git commit -a -m "TEST"

于 2013-07-03T14:57:00.617 回答
-1

你有没有在你的 lokal repo 和 remote repo 之间建立连接?

试试: git remote add origin /home/user/myProject/

于 2013-07-03T14:57:06.283 回答