Git 如何克隆到非空目录中?

Git 如何克隆到非空目录中?,git,Git,我有目录A,其中的文件与目录B匹配。目录A可能有其他需要的文件。目录B是一个git repo 我想将目录B克隆到目录A,但git clone不允许,因为该目录非空 我希望它只是克隆.git,既然所有的文件都匹配,我可以从那里开始吗 我无法克隆到空目录中,因为我在目录A中有不在目录B中的文件,我想保留它们 复制.git不是一个选项,因为我希望使用REF进行推/拉操作,而不希望手动设置它们 有没有办法做到这一点 更新:我认为这是可行的,有人能看到任何问题吗?--> 也许我误解了你的问题,但是如果你将

我有目录A,其中的文件与目录B匹配。目录A可能有其他需要的文件。目录B是一个git repo

我想将目录B克隆到目录A,但git clone不允许,因为该目录非空

我希望它只是克隆.git,既然所有的文件都匹配,我可以从那里开始吗

我无法克隆到空目录中,因为我在目录A中有不在目录B中的文件,我想保留它们

复制.git不是一个选项,因为我希望使用REF进行推/拉操作,而不希望手动设置它们

有没有办法做到这一点

更新:我认为这是可行的,有人能看到任何问题吗?-->


也许我误解了你的问题,但是如果你将文件从A复制/移动到git repo B,并使用git add添加所需的文件,不是会更简单吗

更新:从git文档:

仅当目录为空时,才允许克隆到现有目录中


来源:

也许我误解了你的问题,但如果你将文件从A复制/移动到git repo B,并使用git add添加所需的文件,不是会更简单吗

更新:从git文档:

仅当目录为空时,才允许克隆到现有目录中


来源:

在以下shell命令中
existing dir
是一个目录,其内容与
repo to clone
git存储库中的跟踪文件相匹配

#只克隆存储库的.git文件夹(不包括文件,因为它们已经在
#`existing dir`)放入一个空的临时目录中
git clone--没有用于克隆现有目录的签出repo/existing-dir.tmp#可能需要--没有用于克隆本地repo的硬链接
#将.git文件夹移动到包含这些文件的目录中。
#这使得'existing dir'成为git回购。
mv existing dir/existing dir.tmp/.git existing dir/
#删除临时目录
rmdir existing dir/existing-dir.tmp
cd现有目录
#git认为所有文件都被删除了,这将使回购的状态恢复为HEAD。
#警告:对文件的任何本地更改都将丢失。
git重置--硬头

在以下shell命令中,existing dir是一个目录,其内容与
repo to clone
git存储库中的跟踪文件相匹配

#只克隆存储库的.git文件夹(不包括文件,因为它们已经在
#`existing dir`)放入一个空的临时目录中
git clone--没有用于克隆现有目录的签出repo/existing-dir.tmp#可能需要--没有用于克隆本地repo的硬链接
#将.git文件夹移动到包含这些文件的目录中。
#这使得'existing dir'成为git回购。
mv existing dir/existing dir.tmp/.git existing dir/
#删除临时目录
rmdir existing dir/existing-dir.tmp
cd现有目录
#git认为所有文件都被删除了,这将使回购的状态恢复为HEAD。
#警告:对文件的任何本地更改都将丢失。
git重置--硬头

我在寻找类似的东西,下面是我的想法:

我的情况是,我有一个活动的web树,我试图为它创建一个远程存储库,而不移动当前web树中的任何文件。以下是我所做的:

  • 转到web树并运行
    git init
  • 转到存储库的预期位置并运行:
    git clone--bare/path/to/web/repo
  • 编辑my remote repo中的配置文件,并删除
    [远程“源代码”]
    部分
  • [remote“origin”]
    节添加到web树中指向新远程回购的.git/config

  • 我一直在寻找类似的东西,下面是我的想法:

    我的情况是,我有一个活动的web树,我试图为它创建一个远程存储库,而不移动当前web树中的任何文件。以下是我所做的:

  • 转到web树并运行
    git init
  • 转到存储库的预期位置并运行:
    git clone--bare/path/to/web/repo
  • 编辑my remote repo中的配置文件,并删除
    [远程“源代码”]
    部分
  • [remote“origin”]
    节添加到web树中指向新远程回购的.git/config

  • 下面是当我遇到同样的问题(至少我认为这是同样的问题)时我最后做的事情。我进入目录A并运行了
    git init


    因为我不希望目录A中的文件后面跟着git,所以我编辑了.gitignore并将现有文件添加到其中。在此之后,我运行了
    git remote add origin'&&git pull origin master
    et voíla,B被“克隆”到A中,没有一个小故障

    以下是当我遇到同样的问题(至少我认为是同样的问题)时,我最后做的事情。我进入目录A并运行了
    git init

    因为我不希望目录A中的文件后面跟着git,所以我编辑了.gitignore并将现有文件添加到其中。在此之后,我运行了
    git remote add origin'&&git pull origin master
    et voíla,B被“克隆”到A中,没有一个小故障

    这对我很有用:

    git init
    git remote add origin PATH/TO/REPO
    git fetch
    git reset origin/master  # Required when the versioned files existed in path before "git init" of this repo.
    git checkout -t origin/master
    
    git init
    git remote add origin PATH/TO/REPO
    git pull origin master
    
    cd existing_folder
    git init
    git remote add origin path_to_your_repo.git
    git add .
    git commit
    git push -u origin master
    
    注意:
    -t
    将为您设置上游分支,如果这是您想要的,并且通常是这样。

    这对我很有效:

    git init
    git remote add origin PATH/TO/REPO
    git fetch
    git reset origin/master  # Required when the versioned files existed in path before "git init" of this repo.
    git checkout -t origin/master
    
    git init
    git remote add origin PATH/TO/REPO
    git pull origin master
    
    cd existing_folder
    git init
    git remote add origin path_to_your_repo.git
    git add .
    git commit
    git push -u origin master
    

    注意:
    -t
    将为您设置上游分支,如果这是您想要的,通常是这样。

    另一个简单的配方似乎对我很有效:

    git clone --bare $URL .git
    git config core.bare false
    

    我使用现有文件签出到目录的主要用例是使用Git控制我的Unix点文件。在一个新帐户上,主目录中已经有一些文件,甚至可能是我想从Git获取的文件。

    另一个简单的方法似乎对我很有效:

    git clone --bare $URL .git
    git config core.bare false
    
    我使用现有文件签出到目录的主要用例是使用Git控制我的Unix点文件。在新帐户上,主目录中已经有一些文件,
    cd existing-dir
    git clone --bare repo-to-clone .git
    git config --unset core.bare
    git remote rm origin
    git remote add origin repo-to-clone
    git reset
    
    git clone repo /tmp/folder
    cp -rf /tmp/folder/.git /dest/folder/
    cd /dest/folder
    git checkout -f master
    
    .bash_history
    .bash_logout
    .bash_profile
    .bashrc
    .contactemail
    .cpanel/
    ...
    
    cd /home/existing_folder
    
    git init
    git remote add origin PATH/TO/REPO
    git pull origin master
    git status
    
    **.git/info/exclude**
    
    On branch master
    nothing to commit, working tree clean
    
    $ cd a
    $ git init
    $ git add .
    $ git commit -m "..."
    
    $ git remote add origin https://URL/TO/REPO
    $ git pull origin master --allow-unrelated-histories
    $ git push origin master