关于如何压缩git和其他DVCS的提交,也有很多问题,例如:
我的问题是,我想要压缩提交吗?我应该保留详细的提交顺序,显示功能是如何开发的,还是我应该在功能完成后将它们压缩成一个,以保持历史更清晰?
我不是最好的 Git 用户,每当我创建 PR 时都会遇到问题。基本上,当我做 PR 时,我会看到一个包含我之前所有提交的大列表,包括我刚刚提交的那个(我想合并到 Master 分支的那个)。我做的流程如下:
首先,我分叉了我们 Master 分支的副本,然后
git clone [local copy]
Run Code Online (Sandbox Code Playgroud)
然后我创建一个遥控器
git remote add upstream [main repo url]
Run Code Online (Sandbox Code Playgroud)
然后每次我进行更改时,我都想添加到我的 PR 中:
git add [file1] [file2 ] ...ect
Run Code Online (Sandbox Code Playgroud)
然后提交:
git commit -m 'blah blah blah'
Run Code Online (Sandbox Code Playgroud)
最后推送到原点:
git push origin master
Run Code Online (Sandbox Code Playgroud)
在此之后,我在 Github 上创建了一个 PR,它显示了所有以前的提交。有没有办法不列出所有这些而只显示我的最新提交?它显示已合并到上游 long back 并与其同步的提交。合并时不必选择特定的提交而只选择列出的提交会很好。
谢谢!
我正在尝试压缩我的提交并将我的分支合并为一个提交来掌握。这就是我正在尝试的。我切换到主分支,然后我就这样做了
git merge --squash <branch_name>
Run Code Online (Sandbox Code Playgroud)
我得到
Automatic merge went well; stopped before committing as requested
Squash commit -- not updating HEAD
Run Code Online (Sandbox Code Playgroud)
之后我承诺。但这就是我得到的
$ git commit -m "Resolved"
On branch master
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
由于某种原因,更改没有得到反映,我收到消息没有要提交的信息。我已经浏览了堆栈上的许多帖子和问题,但到目前为止没有任何帮助。
另一个Git问题,如果有人不介意回答:
我在办公室桌面上开发网站,在家里工作时在笔记本电脑上开发网站,都将文件存储在本地驱动器上,并使用在线Git存储库进行跟踪.
当我在家中从笔记本电脑创建新功能时,将这些更改转移到桌面的最佳方式是 - 我是否会进行更改,为它们创建提交,然后将它们推送到在线仓库,即使功能仍然不完整,还是有更好的方法?
我真的不确定是否在功能分支上创建一个新的提交只是为了将更改推送到repo,以便我在办公室时可以获取更改是正确的方法,但也许我错了. ..?
我一直在开发 git 存储库。在发布我的更改之前,我想删除一些提交 - a023b43、315424b和7b51754- 因为它们不反映任何有意义的更改。唯一重要的时间点是第一个 ( 70f72ca) 和最后一个 (6937ddd ) 提交。
git rebase -i 4c802c1
Run Code Online (Sandbox Code Playgroud)
我选择了:
pick 70f72ca Remove repetitions from Makefile
d a023b43 Separate target for image conversion
d 315424b Remove image conversion (#1)
d 7b51754 Fix Makefile
pick 6937ddd CV 2019.01
Run Code Online (Sandbox Code Playgroud)
最终目标是拥有如下所示的 git 日志:
6937ddd CV 2019.01
4c802c1 Initial commit
Run Code Online (Sandbox Code Playgroud)
Auto-merging src/Adam_Matan.tex
CONFLICT (content): Merge conflict in src/Adam_Matan.tex
error: could not apply 6937ddd... CV 2019.01
Resolve all …Run Code Online (Sandbox Code Playgroud) 我在功能分支上工作了好几天。在这段时间里,我犯了很多错误,并提交了很多不必要的代码更改,我不得不在下一次提交中恢复。
最后,我找到了最好的解决方案,现在我准备创建一个 Pull-Request。但是,我不希望每个人都能看到我对分支做了多少愚蠢的提交。:-)
用最新的代码创建一个干净的 PR 但没有所有这些提交的最佳方法是什么?
我在终端中使用 Git。
我interactive在重新定位分支时忘了检查选项.我需要一个最终的提交,但我在主人身上有N个提交.在rebase过程结束后,是否可以压缩提交?
我知道,我可以进行交互式变基、重写首次提交并修复所有其他内容。但如果一个分支包含数百个提交,它就会变得非常乏味。
有没有更简单的方法?
A我的回购中有一个分支,有10个提交.我想要的是找到一种删除所有提交的方法,但保留当前分支中的所有更改(因此代码的状态将相同,但所有提交A都将消失).目的是我现在可以检查所有的更改,并且在我合并回master之前,我可以选择我想要的并构造更好的提交消息.这种流动甚至可能吗?
我有一个大约10个提交的分支.其中3个是合并提交,将master与我的分支合并,并在每次之间添加~500个提交.有没有办法压缩当前分支上的提交?我的历史看起来像这样:
ad54ef86 My Commit 1
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 2
ad54ef86 My Commit 3
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 4
...
Run Code Online (Sandbox Code Playgroud)
现在做git rebase -i HEAD~2000和搜索是很多工作.它有办法吗?
编辑:所以这个问题被标记为Squashing最后n次提交的副本.这显然不是我的问题.我想压缩在我当前分支上进行的最后n次提交之后我合并该分支中的另一个分支并获得所有这些提交.
git ×9
rebase ×3
github ×2
squash ×2
commit ×1
dvcs ×1
fixup ×1
git-merge ×1
git-squash ×1
pull-request ×1
repository ×1