标签: git-rewrite-history

如何将几个Git仓库合并为一个并交织历史

我的情况是我有两个Git存储库,我需要将它们合并到一个存储库中(实际上有更多的存储库,但是我可以从两个开始)。

这两个存储库是:

  • 主存储库,
  • 所述第二存储库,

在库中的代码对在库中的代码依赖性(但反之亦然),和两个库的历史彼此跟随以时间的方式-大致(即一个特定的在回购提交通常需要从回购提交一个具有非常相似的提交时间)。

两个存储库中的分支名称和标记名称冲突(不能保证它们都属于同一名称),但是仅需要保留A中的引用。

新存储库C的要求是:

  1. 所有的裁判(分支和标签)一个需要被保留。
  2. 仅需要保留来自B的master分支提交(即,由报告的提交git log --first-parent master)。
  3. 每个源存储库中的文件应放入新存储库的子文件夹中(即,A中的文件应放入A/B格式的文件应放入B/)。
  4. 当检查出具体的承诺(包括完成提交合并)在库Ç(例如某个发布标签)兼容的文件形成两个源库应在目录中找到A/B/(至少在提交或两个)。

到目前为止,我已经尝试了几种方法,包括thisgit-stitch-repo,但是没有成功(它们没有满足上述要求)。

在这一点上,我已经设法:

  • 使用git filter-branch将每个仓库中的所有文件移动到一个子目录。例如回购A
mkdir A
mv * .gitignore A / 2> / dev / null
git commit -a -m'DROPME'> …

git git-rewrite-history

5
推荐指数
1
解决办法
1075
查看次数

使用BFG repo-cleaner后检查git repo

非常基本的git问题:

我向Github上传了一些妥协信息,并使用bfg来清理回购.我按照文档执行了以下操作:

$ git clone --mirror git://example.com/some-big-repo.git
$ bfg --replace-text passwords.txt  my-repo.git
Run Code Online (Sandbox Code Playgroud)

我收到了以下输出:

Found 233 objects to protect
Found 9 commit-pointing refs : HEAD, refs/heads/experimental, refs/heads/master, ...

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit 497fc1c8 (protected by 'HEAD')

Cleaning
--------

Found 80 commits
Cleaning commits:       100% (80/80)
Cleaning commits completed in 301 ms.

BFG aborting: No refs to update - no dirty commits found??
Run Code Online (Sandbox Code Playgroud)

我想看看私人信息是否已从我的仓库中清除,但我不确定如何检查镜像仓库中的文件.有任何想法吗?

git github repository git-rewrite-history bfg-repo-cleaner

4
推荐指数
1
解决办法
3201
查看次数

以增量方式使用filter-branch的任何方法

有没有办法在分支上以增量方式使用filter-branch?

粗略地说这样(但这实际上并不起作用):

git checkout -b branchA origin/branchA  
git branch headBranchA  
# inital rewrite   
git filter-branch ... -- branchA  
git fetch origin  
# incremental rewrite  
git filter-branch ... -- headBranchA..origin/branchA  
git merge origin/branchA  
Run Code Online (Sandbox Code Playgroud)

git git-rewrite-history

4
推荐指数
1
解决办法
550
查看次数

Git修改/改写(不添加/更改文件)

通常我想编辑提交消息,而不必重新选择上次提交的文件集.

git commit file1.c file2.c
Run Code Online (Sandbox Code Playgroud)

提交消息中的意外错误.

git commit file1.c file2.c --amend
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我不想重新选择原始提交中的文件集,我曾经偶然做过git commit -a --amend并无意中添加了许多更改.

我知道git rebase -i HEAD~1然后替换pickr(重新单词),但这最终只是几个步骤.

有没有办法在不包含任何新文件的情况下一步重写最后一次提交?

git git-amend git-commit git-rewrite-history

4
推荐指数
1
解决办法
668
查看次数

是否可以在不留下痕迹的情况下重写历史记录?

我已经阅读了有关更改旧提交的时间戳的问题.

我想知道的是:这种操作是破坏性的(即不留下任何痕迹),或者是否有可能发现某个操作是在存储库中完成的?如果是这样,我怎么能这样做?

谢谢

git git-rewrite-history

4
推荐指数
1
解决办法
536
查看次数

Git:删除除某个目录以外的所有内容(BFG Repo Cleaner)

我试图永久删除Git存储库中所有目录的所有痕迹,除了一个目录,比如名为keep-me.

对于这样的任务,BFG repo清洁器是我常用的工具.但是,它似乎不支持此操作(事实上,我认为它不支持扩展的globs).我真的想要完成以下,没有摆脱其他目录:

java -jar ~/bfg-1.12.12.jar --delete-folders {!(keep-me)} my-repo.git
Run Code Online (Sandbox Code Playgroud)

谢谢!

git git-rewrite-history bfg-repo-cleaner

4
推荐指数
1
解决办法
688
查看次数

从复制的fork存储库重新应用Git提交到原始存储库

我的一位大学同事认为通过克隆存储库并将其内容复制到新的初始化存储库但没有.git原始存储库中的文件夹来分叉存储库是个好主意.之后,他只使用一次提交就提交了此副本,整个团队就开始根据此提交开发项目:

A <- B <- C     <- D <- E    (original repository)
\  clone  /        |_____| 
 \       /            |
  \     /     Ofc. work on the original repository was continued after cloning...
   \   /
     M <- N <- O <-P    (our "fork", commits from my team)
Run Code Online (Sandbox Code Playgroud)

现在,我的第一个目标是获得以下存储库结构:

A <- B <- C <- N <- O <- P
Run Code Online (Sandbox Code Playgroud)

我在过去几个小时里一直试图做的事情如下:

    • 克隆原始存储库.
    • git diff > /path/to/patch 从叉子里面.
    • git apply 在原始存储库中.
    • 工作,但不保留提交.
  1. 各种其他不起作用的东西.
    • 克隆原始存储库.
    • 创建并切换到新分支.
    • A使用将其重置为提交git reset --hard COMMIT_HASH_A. …

git git-rebase git-patch git-rewrite-history

4
推荐指数
2
解决办法
664
查看次数

在Rstudio中撤消git commit,它太大而无法推送

我对github非常陌生,并试图将其首次纳入我的工作。我在RStudo中工作,使用gui中的commit和push按钮。我将一些数据放在要处理的计算机上的文件夹中。我进行了几次提交,然后提交了该数据,然后又进行了几次提交。然后,我尝试将整个内容推送到github。但是,我收到一条错误消息:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.        
remote: error: Trace: f4a84c3a176d2c77039d041a21c0c455        
remote: error: See http://git.io/iEPt8g for more information.        
remote: error: File S_Fulltaxonomy.csv is 158.06 MB; this exceeds GitHub's file size limit of 100.00 MB        
To git@github.com:moanam/paper.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@github.com:moanam/paper.git'
Run Code Online (Sandbox Code Playgroud)

现在,我的分支比原始/主节点提前10次提交,而问题提交在中间某个地方。

我一直在寻找解决方案,并在Git历史记录的中间发现了诸如undo commit的帖子 , 如何修改现有的未推送的提交? 以及 当我的分支比master领先5次提交时如何删除提交中的太大文件

但是,解决方案是一行代码,其中原始请求者应替换几个单词并在某个地方运行。我真的很陌生,不知道在哪里运行所有这些代码,替换什么以及如何查找和更改问题,这些都提交到我的工作中。我该怎么做呢?还是在RStudio中有基于GUI的撤消提交的版本?还是有人可以确切解释如何使用代码?

我知道这可能是一个非常简单的问题,很抱歉浪费您的时间。但是,我确实已经花了相当长的时间寻找,找不到适合我使用的任何简单方法!总是假设有太多的知识。谢谢你的帮助!

git r github git-commit git-rewrite-history

4
推荐指数
3
解决办法
2819
查看次数

Git:批量更改提交日期

当我需要更改各种提交的提交日期时,我使用交互式变基并一一更改它们。

我怎样才能用一个命令来改变它们呢?换句话说,我需要将给定命令应用于交互式变基中列出的所有提交。

谢谢

git git-rewrite-history

4
推荐指数
1
解决办法
2450
查看次数

将现有 Git 存储库迁移到启用 Git LFS 的新存储库

我现有的 Github 存储库因 zip 和 tar.gz 文件而变得臃肿,因此我想将其迁移到启用了 Git LFS 的新存储库,该存储库与现有的 Github 存储库分开进行测试,以便现有的 Github 存储库不受影响。我遇到了一个很棒的工具,名为 bfg-repo-cleaner https://github.com/rtyley/bfg-repo-cleaner,看起来正是我需要的!

我编制了我认为需要执行的步骤,但希望有第二双眼睛来确保这些步骤是正确的。

原始现有存储库在哪里https://github.com/username/source.git,启用 Git LFS 的新目标存储库在哪里https://github.com/username/destination-lfs.git

pass=PERSONAL_ACCESS_TOKEN
ORIGINAL="https://github.com/username/source.git"
REPONAME_ORIGINAL='source.git'
NEW="https://username:"${pass}"@github.com/username/destination-lfs.git"
REPONAME_NEW='destination-lfs.git'

# setup local work space
mkdir -p /home/workgit
cd /home/workgit

# download bfg
wget -cnv http://repo1.maven.org/maven2/com/madgag/bfg/1.12.12/bfg-1.12.12.jar -O bfg.jar
alias bfg='/bin/java -jar bfg.jar'

# setup local git
git clone --mirror "$ORIGINAL" "$REPONAME_NEW"
cd $REPONAME_NEW
git count-objects -v
git remote rename origin upstream
git remote add origin $NEW
git …
Run Code Online (Sandbox Code Playgroud)

git github git-rewrite-history bfg-repo-cleaner

3
推荐指数
1
解决办法
3058
查看次数