2015-03-31 64 views
64

一個git回購我現在有GitHub上的私人資料庫,我想公開。但是,一些初始提交包含我不想公開的信息(硬編碼創意等)。複製沒有歷史

是什麼力量讓最新的公開承諾(我並不真的需要或想要在公共倉庫以前提交),而不包括一些或全部提交歷史的最簡單的途徑?

+0

你爲什麼不只是創建一個新的存儲庫的網址是什麼? – Stephan 2015-03-31 12:38:59

+1

@Stephan我很好地創建了一個新的存儲庫,但是如何從舊的存儲庫中獲取最新狀態並將其提交給新的? – Rafe 2015-03-31 12:43:05

+12

您可以直接刪除。git的文件夾,你的來源是 – Stephan 2015-03-31 12:43:48

回答

105

可以限制歷史的深度,同時cloning

--depth <depth> 
Create a shallow clone with a history truncated to the specified 
number of revisions. 

使用這個,如果你想有限的歷史,但仍然有一些。

+17

的文件夾,INIT再做一個git給這個人一個cookie(以紀念這一回答正確的形式):) – FateNuller 2016-08-08 18:03:41

76

使用以下命令:

git clone --depth <depth> -b <branch> <repo_url> 

其中:

  • depth是要包括提交的量。也就是說,如果你只是想在最新提交使用git clone --depth 1
  • branch是要從克隆遠程分支的名字。也就是說,如果你想從master分支中的最後3個提交使用git clone --depth 3 -b master
  • repo_url是你的倉庫
+1

這實際上是比戈蒂埃而更多的是同樣的答案完整並舉例說明。 – 2017-08-05 23:24:11

+0

確實如此。有時候這個例子就是需要的。對我來說,寫出來是什麼澄清了問題 – 2017-08-07 13:32:35

4
#!/bin/bash 
set -e 

# Settings 
user=xxx 
pass=xxx 
dir=xxx 
repo_src=xxx 
repo_trg=xxx 
src_branch=xxx 

repo_base_url=https://$user:[email protected]/$user 
repo_src_url=$repo_base_url/$repo_src.git 
repo_trg_url=$repo_base_url/$repo_trg.git 

echo "Clone Source..." 
git clone --depth 1 -b $src_branch $repo_src_url $dir 

echo "CD" 
cd ./$dir 

echo "Remove GIT" 
rm -rf .git 

echo "Init GIT" 
git init 
git add . 
git commit -m "Initial Commit" 
git remote add origin $repo_trg_url 

echo "Push..." 
git push -u origin master 
+0

了'--depth 1'在這種情況下不必要的,因爲歷史上也與'室射頻.git' – rayphi 2017-06-01 13:17:51

+1

我想我會做這樣的刪除:'混帳clone --depth 1 -b $ src_branch $ repo_src_url $ dir && cd ./$dir && git commit --amend --author「Some One <[email protected]>」-m「Initial Commit」&& git遠程設置網址起源$ repo_trg_url && 混帳推-u起源master'的 – rayphi 2017-06-01 13:24:58

+0

@rayphi是的'--depth 1'是不必要的,但它也是無害的,這樣可以節省一點的網絡帶寬(沒有點取歷史,你」反正要刪除) – 2018-02-16 10:35:35