Git创建新分支并推送,不带历史记录

rqqzpn5f  于 2023-08-01  发布在  Git
关注(0)|答案(3)|浏览(293)

我一直试图谷歌的解决方案,但无法找到正是我在寻找,因此新的问题。
我有一个私有的git仓库,只有一个分支(master),有大约90个提交。
我想创建一个新的分支public,它指向另一个repo --它是公共的--但不想显示master的所有提交/历史,而是只显示一个提交,比如“初始提交”。
到目前为止,我能够添加一个新的远程,并设置它来跟踪新的分支,但当我推,它发送所有的提交,主。

h9a6wy2h

h9a6wy2h1#

首先需要在本地创建一个新的分支。默认情况下,这将使用当前的HEAD作为基础。

创建无历史分支

但是,您也可以使用git checkout --orphan创建一个没有任何历史记录的分支:

# create a new branch without a history and check it out
git checkout --orphan yournewbranch

# edit your files

# create a commit with these files
git add .
git commit
# push that commit and create the remote branch
git push -u your_remote yournewbranch

字符串
或者,您可以使用该分支创建一个新的存储库并推送:

git init -b yournewbranch
git add .
git commit
git remote add origin https://yourgitserver.com/your/repo
git push -u origin yournewbranch

本地添加其他仓库的分支

如果你已经有了远程分支并且想将它添加到你的仓库中,你可以使用git checkout checkout :

git checkout -b yournewlocalbranch remotes/yourremote/remotebranchname


这里假设远程yourremote上存在名为remotebranchname的新分支,并且您希望将该分支命名为yournewlocalbranch

pqwbnv8z

pqwbnv8z2#

我觉得你想做的是压缩提交。
压缩提交实质上可以通过用单个提交替换多个顺序提交来简化存储库。
如何做到:

  • 您可以创建一个新的分支(例如public)。
  • 使用git checkout <new_branch>切换到分支
  • 然后你可以使用git merge --squash <branch_you_want_squashed>压缩提交
  • 然后,您使用新的提交消息提交更改。git commit -m "<your_commit_message>"
  • 最后,您只需使用git push推送更改

如果你想学习更多关于压缩提交的知识,你可以学习here.

l3zydbqr

l3zydbqr3#

如果你有一个第一次提交,它对应于你的“初始提交”,那么你可以通过运行

git log --reverse

字符串
以倒序查看你的提交。然后,找到您希望从中分支出的确切提交的散列,并运行

git checkout <yourhash>


然后

git branch <yourbranch>


你也可以重写你的git历史,参见https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
如果你只是需要一个新的空分支,你可以运行

git checkout --orphan newroot


但不要忘记创建初始提交:)

相关问题