我正在尝试从主人那里挑选一个提交并将其放入当前的生产分支.但是,当我执行时git cherry-pick <SHA-hash>,我只收到此消息:
# On branch prod_20110801
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# site/test-result/
nothing added to commit but untracked files present (use "git add" to track)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git reset'
Run Code Online (Sandbox Code Playgroud)
注意:我尝试过重置和重置 - 硬HEAD ^,似乎都没有改变任何东西.
我很困惑为什么这不适合我.
任何关于如何解决这个问题的见解,建议或想法都会有所帮助〜!
我检查了一大堆文件到一个分支并合并,然后不得不删除它们,现在我留下了一个大的.pack文件,我不知道如何摆脱.
我删除了所有使用的文件git rm -rf xxxxxx,我也运行了该--cached选项.
有人能告诉我如何删除当前位于以下目录中的大型.pack文件:
.git/objects/pack/pack-xxxxxxxxxxxxxxxxx.pack
我只需要删除我仍然拥有但不再使用的分支吗?或者我还需要运行其他东西吗?
我不确定它有多大差别,但它显示了一个挂锁文件.
谢谢
编辑
以下是我的bash_history的一些摘录,它应该让我知道我是如何设法进入这种状态的(假设我正在开发一个名为'my-branch'的git分支,我有一个包含更多文件夹的文件夹/文件):
git add .
git commit -m "Adding my branch changes to master"
git checkout master
git merge my-branch
git rm -rf unwanted_folder/
rm -rf unwanted_folder/ (not sure why I ran this as well but I did)
Run Code Online (Sandbox Code Playgroud)
我以为我也运行了以下内容,但它没有出现在bash_history中与其他人:
git rm -rf --cached unwanted_folder/
Run Code Online (Sandbox Code Playgroud)
我还以为我运行了一些git命令(比如git gc)来尝试整理包文件,但它们也没有出现在.bash_history文件中.
我创建了一个名为"features"的SVN项目的分支,现在每当我尝试更新所述项目时,它都会带来一个features文件夹,其中包含该分支的另一个项目副本.有没有办法从存储库中完全删除分支,以便不再发生这种情况?
合并分支后,是否将其从存储库中删除?
但是,这是一个好习惯吗?
我通常创建很多分支,因为我不想破坏我当前的版本,我希望删除它们以保持秩序.
但是,如果您使用Assembla或GitHub,旧分支的合并请求将保存在网站上,因此如果您删除它们,您将收到错误,因为它无法获取它们...
通常如何管理?
我试图采取一个变化的分支,并将其恢复为与它分离的上游相同.这些变化都是本地的,并且已被推送到github,因此它们都没有git reset或者git rebase真的可行,因为它们改变了历史,这对于已经被推动的分支来说是一件坏事.
我也尝试git merge了各种策略,但没有一个撤消本地更改,即如果我添加了一个文件,合并可能会使其他文件重新排队,但我仍然会有上游没有的文件有.
我可以在上游创建一个新的分支,但我真的很喜欢合并,在修订历史方面应用所有更改来获取我的分支并使其与上游相同,以便我可以安全地推动该更改没有破坏历史.是否有这样的命令或一系列命令?
在tortoiseSvn 1.8中,没有"重新整合"分支选项.在Tortoise Svn 1.8中重新整合分支的正确方法是什么?
在选择合并然后下一个选项:

然后我进入下一个窗口:

或者我做错了什么?
当我在Hg repo中有两个分支时,如何只将一个文件与另一个分支合并,而没有将变更集中的所有其他文件合并?
是否可以仅合并某些文件,而不是整个变更集?
EGit再次罢工.我犯了一个错误,试图切换到EGit中的一个不同的分支,它以某种方式混乱并检查没有分支.然后我提交了这个非分支,然后当我意识到我没有跟踪正确的分支时,我运行了以下内容:
$ git checkout issue2
Warning: you are leaving 1 commit behind, not connected to any of your branches:
bada553d My commit message
If you want to keep them by creating a new branch, this may be a good time to do so with:
git branch new_branch_name ....
Branch issue2 set up to track remote branch issue2 from origin.
Switched to a new branch issue2.
Run Code Online (Sandbox Code Playgroud)
现在我已经搞砸了,如何将该提交与我当前的分支相关联?我对创建一个全新的分支并不感兴趣,我只想将该提交提取到我的分支中issue2.
如何将一个分支与另一个分支进行比较?我想比较一个分支与trunk中的最新版本.
我是我们网站开发公司的团队负责人,我想在我们的团队中实施Git工作流程.阅读文档和文章我发现以下结构对我们有益:
我们在Bitbucket中有一个存储库.主分支仅被视为包含稳定代码.每个开发必须建立自己的分公司,并实现他的特点/ bug修正自己的分公司.一旦他决定,他的代码准备就绪,他创建了一个很好的分支历史(使用rebase,修改,樱桃挑选等)并将其推送到Bitbucket,在那里创建一个拉动请求到主分支.质量检查验证功能并批准(或不批准)它,然后我验证代码,如果可以,我将他的工作合并为主(通过快进或重新定位以获得更好的提交历史记录).
但是这种方案只适用于单个开发人员在分支机构上工作的情况.在我们的例子中,我们几乎总是有两个开发人员用于一个分支,因为一个开发人员在服务器端(PHP),另一个开发人员在客户端(HTML/CSS/JS).这两者应该如何以一种方式进行协作,使主人的历史保持干净?
服务器开发人员创建HTML文件的基本结构,客户端开发人员需要获得此结构.逻辑上将为服务器dev创建一个分支,并为客户端dev创建自己的分支,基于服务器dev分支.但这意味着,服务器开发人员需要在Bitbucket中发布他的分支,这将使他无法重新定义或更改已经发布的提交.
另一个选择是等待,直到服务器开发人员完成他的工作,发布具有良好提交历史记录的分支并忘记它,并且只有在该客户端dev开始在该分支中工作之后,这将导致时间延迟,这甚至更糟.
您如何在工作流程中处理此类协作?