问题标签 [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.
git - 将文件移动到单独的分支后的 git log
我已经将一堆文件移动到一个单独的分支,以避免混合不同的历史。然后我将新分支上的文件移动到/
(以便它们可以在根植于它们最初所在位置的工作树中签出):
现在,当然,虽然两个分支上的新历史看起来都很干净,但我在查看过去的历史时遇到了麻烦。git log --follow
需要一个文件名。
在主分支上,我可以
xargs -0 -a <(git ls-files -z) git log --
(获取现有文件的日志)
在脚本branch
上,它不是那么简单;我想我需要
- 找到现有文件的所有以前的名称,然后是
git log
当前 + 旧名称(尽管这可能是很多参数)。如何? git log
忽略引用已删除(但未重命名)文件的提交(这似乎不可行)
想法?
git - 我如何将所有提交移至另一个分支?
我一个人在做项目(尽管其他人可能会使用这个 repo),并且有一段时间,我将所有提交都提交到master
分支中(提交被推送到 GitHub)。
但在这一点上,我决定master
分支变得过于杂乱,小提交,为了让事情看起来更漂亮,我想将我所有的提交历史移动到wip
分支中,然后只合并master
到新版本。
最终结果应该是wip
内容和提交历史与当前分支相同的master
分支,以及具有master
与当前分支相同内容的单个提交的wip
分支。
最安全的方法是什么?
git - Git rebase 到分支,但将所有差异视为提交
我确定以前有人问过这个问题,但我不知道如何表达这个查询。
场景如下:我从我的 .bashrc 加载了一堆 bash 脚本,这些脚本存储在一个私有 github 存储库中,因此我可以跨计算机使用它们。每台计算机都有自己的怪癖,所以我为每台计算机都有一个分支。我在我的工作计算机上开始了这个项目,所以master
有一堆与我的家庭环境无关的代码。
在这些分支中,我已经删除了与工作相关的更改,但是如果我可以创建work
自己的分支并制作master
一组基本的、非自定义的代码,那就更好了。这样,每当我在work
分支中进行更改时,当我将家庭计算机重新设置为master
. 但是,我想对master
适用于我所有分支的更改进行更改;如果我然后work
重新定位到master
- 它已经删除了我的工作代码 -work
将收到这些删除。
我怎样才能分支master
到work
,删除与工作相关的更改master
,然后work
重新回到我清理master
的而不删除所有与工作相关的代码work
?
从一开始,我就可以使用git rebase --interactive
和拆分我所有的工作变更,但这对于一个并不常见的动作来说似乎很乏味。
我看到了git rebase --onto
,git filter-branch
但从我读到的内容来看,这些看起来都不是正确的方法。
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 本地文件夹?