问题标签 [git-branch-sculpting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
46 浏览

git - 将文件移动到单独的分支后的 git log

我已经将一堆文件移动到一个单独的分支,以避免混合不同的历史。然后我将新分支上的文件移动到/(以便它们可以在根植于它们最初所在位置的工作树中签出):

现在,当然,虽然两个分支上的历史看起来都很干净,但我在查看过去的历史时遇到了麻烦。git log --follow需要一个文件名。

在主分支上,我可以

  • xargs -0 -a <(git ls-files -z) git log --(获取现有文件的日志)

在脚本branch上,它不是那么简单;我想我需要

  • 找到现有文件的所有以前的名称,然后是git log当前 + 旧名称(尽管这可能是很多参数)。如何?
  • git log忽略引用已删除(但未重命名)文件的提交(这似乎不可行)

想法?

0 投票
2 回答
130 浏览

git - 我如何将所有提交移至另一个分支?

我一个人在做项目(尽管其他人可能会使用这个 repo),并且有一段时间,我将所有提交都提交到master分支中(提交被推送到 GitHub)。

但在这一点上,我决定master分支变得过于杂乱,小提交,为了让事情看起来更漂亮,我想将我所有的提交历史移动到wip分支中,然后只合并master到新版本。

最终结果应该是wip内容和提交历史与当前分支相同的master分支,以及具有master与当前分支相同内容的单个提交的wip分支。

最安全的方法是什么?

0 投票
1 回答
35 浏览

git - Git rebase 到分支,但将所有差异视为提交

我确定以前有人问过这个问题,但我不知道如何表达这个查询。

场景如下:我从我的 .bashrc 加载了一堆 bash 脚本,这些脚本存储在一个私有 github 存储库中,因此我可以跨计算机使用它们。每台计算机都有自己的怪癖,所以我为每台计算机都有一个分支。我在我的工作计算机上开始了这个项目,所以master有一堆与我的家庭环境无关的代码。

在这些分支中,我已经删除了与工作相关的更改,但是如果我可以创建work自己的分支并制作master一组基本的、非自定义的代码,那就更好了。这样,每当我在work分支中进行更改时,当我将家庭计算机重新设置为master. 但是,我想对master适用于我所有分支的更改进行更改;如果我然后work重新定位到master- 它已经删除了我的工作代码 -work将收到这些删除。

我怎样才能分支masterwork,删除与工作相关的更改master,然后work重新回到我清理master的而不删除所有与工作相关的代码work

从一开始,我就可以使用git rebase --interactive和拆分我所有的工作变更,但这对于一个并不常见的动作来说似乎很乏味。

我看到了git rebase --ontogit filter-branch但从我读到的内容来看,这些看起来都不是正确的方法。

0 投票
2 回答
67 浏览

windows - 在同一个目录中存储几个不同的 .git 分支?

Windows 上的“..Downloads/Training”文件夹中没有本地 .git 存储库,使用每个安装的 git bash,我首先输入

touch .gitignore根据 youtube 教程(请参阅下面列出的链接),从以前由 Visual Studio 存储库创建的 .gitignore 文件内容复制,还添加了 .gitignore git add .gitignore,还通过键入在“..Downloads/Training”中添加了唯一的子文件夹 M01 , git add .提交更改 git commit -am "First commit,通过键入添加远程 git remote add origin https:name_of_remote.com/my_repository_folder,创建一个分支 git branch M01,切换到分支 git switch M01,还通过键入推送 repo git push origin HEAD:M01。并且存储库已成功推送到该远程,但现在有一个问题:我需要将每个文件夹的内容存储在远程的单独分支中的“..Downloads/Training”中。

因此,如果我通过键入创建一个新的本地文件夹 M02 和一个分支,通过git branch M02切换到它git switch M02,它会显示我之前添加到 M02 分支的 M01 分支中的所有内容,但是如果我从 M02 中删除文件键入git rm . -r(它会删除本地文件),它还会从 M01 分支和 M02 分支中删除文件。

有没有办法只在 M01 分支中存储 M01 本地文件夹,在 M02 分支中存储 M02 本地文件夹?

附加源教程链接:(https://www.youtube.com/watch?v=g4BJXfmAevA