我知道这个改变分支基础的技巧,但它不起作用,来自这个问题:GitHub pull request displayed commits that are already in targetbranch
就我而言,在切换到分支之前,我会从我工作的其他分支获取提交。我该如何解决?
我问这个问题是因为我正在研究Pro Git书,有一章“重写历史”,解释了如何更改最后一次提交$ git commit --amend,更改多个提交消息$ git rebase -i HEAD~ 3 、使用$ git filter-branch --tree-filter删除所有提交中的特定文件或文件夹。
我的问题是:这本书没有提到通过沿着所有提交历史进行多次签出来完成这项工作的可能性。所以我移动我的 HEAD,逐个提交,然后用$ git commit --amend一项一项地更改这个特定的提交。
我知道这真的(真的!)就花费的时间而言非常昂贵,但是它真的有可能(即它有效)吗?
如果是,在什么情况下这可能有用?
唯一 git commit 哈希值的总可能数量为 - 16^40,16 个可能的十六进制数字和 SHA 值中的 40 个总数字。
这近似于~ 10^48(比这个更多,但只是一个近似值)。
我的问题是 - 由于提交的值是唯一的,它们现在怎么还没用完呢?
或者
这些值是否仅在存储库内唯一,即本地唯一,这将防止它们被耗尽?
正如你所看到的,我不确定它们是本地独有的还是全球独有的。
编辑 -
问题已经得到解答,但我会推荐这个问题Git hash重复 ,因为它与我的问题有些相似。感谢@torek 提到这个问题。
* 84b134d - (HEAD, origin/lab_master, lab_master) comment macro defination which is protent to be a fun
|\
| * 735d88f - add small script to ease ctag related option (13 minutes ago)
* | 6623a94 - add small script to ease ctag related option (4 minutes ago)
|/
* 0d0913a - add gitignore to ignore ctags file (57 minutes ago)
Run Code Online (Sandbox Code Playgroud)
735d88f是--amend提交,但是此时发生冲突,为什么?
我只有一台PC,而且我总是在上面编辑文件,我也只有一个本地存储库,此外,此存储库仅在此处使用,我认为不可能发生冲突吗?
但是发生了,为什么呢?
好.我最终试图找出为什么我不能将两个提交合并为一个.Git非常复杂.我有一系列在本地和远程看起来像这样的提交:
commit 6abb264c06b06d42ea7e07a469107b9d3d72dffa
Author: XXXX <xxx@xxxx.xxx>
Date: Thu Jan 23 15:59:03 2014 -0500
First Check-in again (forgot to add project file and forgot to tick off append to last commit)
commit 90b2468f5267a471d52f2d7cc7cb1cd8604b3b86
Author: XXXX <xxx@xxxx.xxx>
Date: Wed Jan 22 22:57:20 2014 -0500
First check-in
Run Code Online (Sandbox Code Playgroud)
我想将它们组合在一起,看起来像这样:
commit 90b2468f5267a471d52f2d7cc7cb1cd8604b3b86
Author: XXXX <xxx@xxxx.xxx>
Date: Wed Jan 22 22:57:20 2014 -0500
First check-in
Run Code Online (Sandbox Code Playgroud)
我尝试使用pick,squash和任何可用的葫芦命名无效.它告诉我它已经压缩/合并/挑选了什么,但我总是看到两个提交而不是一个.
也无法弄清楚挑选和壁球之间的区别.另外,我无法分辨提交和分支之间的区别.而且,我读到一个分支只是一个提交,但为什么我们必须合并分支但是选择/压缩(??)提交?这非常令人困惑.
我在 GitHub 存储库上有一个特定的提交,我想从中提取补丁以应用到不同的地方,类似于我在使用git format-patch.
我很懒,或者存储库太大,我不想为了提取该补丁而获取整个存储库。
我怎样才能快速做到这一点?
我有一个相当大的android工作室项目,我现在想要将整个项目提交给git然后再提交给github但是我被卡住了!我知道如何将文件添加到临时区域并提交或提交所有已修改的文件但是如何将整个项目提交到git而不是单独提交文件?
提前谢谢你的帮助!:)
我有两个分支主和主干。
我在本地创建了另一个分支,git checkout -b new_branch origin/master用于在该分支中获取主代码。
我在这个新分支中添加了一些更改并推送为:
git add --all
git commit -m "my custom message"
git push origin new_branch
Run Code Online (Sandbox Code Playgroud)
现在我只需要在我的主干分支中合并这个提交 id 更改(在分支 new_branch 中)。
我知道git cherry-pick。任何人都可以确认以下程序是否正确:
第 1 步:我必须使用git checkout trunk
第 2 步切换到主干分支:现在使用git cherry-pick MY_COMMIT_ID
第 3 步合并提交 ID :现在使用git push origin trunk
第 4 步将这些更改推送到主干:现在git pull origin trunk在远程服务器中使用
我在一个个人项目中整天都在做一些事情,然后把它交给了一个分支机构.然后我意识到我将承诺掌握并创建一个新的分支推送到,并且git切换到该分支.之后我换回来但找不到我的提交.在创建分支之前有没有办法恢复提交?它恢复了我的很多工作.
假设我正在分支机构工作,我就跑了git commit.然后我被带到提交消息提示符,我可以在其中输入提交主题和消息.我正在寻找的是一种方法来预先填充提交主题,同时仍然能够手动编写提交消息.
这个问题与此不同,因为我希望提交主题,但仍希望提示输入提交消息,即git commit -a在git bash中运行结果如下:
编辑: githooks的不当使用阻止了链接问题的接受答案.因此,问题并不明确,可以将其标记为重复.
我目前正在尝试使用分支名称预先填充提交主题,但将来我可能希望该文本是其他内容.因此,优选通用解决方案(不是专门针对分支名称).
git-commit ×10
git ×9
github ×5
git-branch ×2
git-push ×2
bash ×1
cherry-pick ×1
commit ×1
format-patch ×1
git-add ×1
git-amend ×1
git-pull ×1
git-rebase ×1
githooks ×1
gitlab ×1
hash ×1
sha ×1