And*_*ong 3 git pull-request git-cherry-pick git-fork
我职业生涯的大部分时间都在使用 Perforce,并且仍在习惯 git,所以我想我要么没有意识到我的场景与以下帖子中的场景不匹配,要么我错过了一些隐式步骤对于普通 git 用户来说是显而易见的,但对我来说却不是。
\n似乎每当我精挑细选时,我最终都会得到一个没有任何更改的分支(不过这是有道理的,因为它们已经致力于掌握,对吗?\xe2\x80\x94那么我如何创建这个“主题分支”我看到有人提到了?)现在我运行了几个我不完全理解的命令(例如git remote add ...),并且还可能将原作者的存储库与我的分叉存储库互换,所以它变得很难说是否因为我弄乱了我的环境而无法正常工作。
@Omer 的回答效果很好。然后我做了一个
\ngit reset --hard HEAD\nRun Code Online (Sandbox Code Playgroud)\n清理。原作者合并了 PR,我同步到它:
\ngit remote add upstream git://github.com/<author>/<repo>.git\ngit pull upstream master\nRun Code Online (Sandbox Code Playgroud)\n
在您的存储库中,用于git log找出不属于您的最新提交的提交哈希(您分叉时在 master 中最新的提交)。从现在开始,我将将此哈希称为abcd。
通过执行以下操作,在您最新的提交(不是 abcd)上签出并创建一个新分支:
git checkout -b andrew_pr
Run Code Online (Sandbox Code Playgroud)
现在执行混合重置,以便andrew_pr分支将从 分支出来abcd,但您仍然会将之前提交的所有更改作为本地更改:
# Remember to replace "abcd" with the commit hash from the beginning!
git reset --mixed abcd # <---- Replace abcd
Run Code Online (Sandbox Code Playgroud)
现在您的所有更改都是简单的本地更改,您可以使用以下命令执行交互式 git add:
git add -p
Run Code Online (Sandbox Code Playgroud)
这将提示您完成每项更改,并且您可以取消一些更改并保留其他一些更改。当然,您需要保留您希望在 PR 中看到的所有更改。
完成后,提交
git commit -m "Andrew's changes"
Run Code Online (Sandbox Code Playgroud)
并推
git push --set-upstream origin andrew_pr
Run Code Online (Sandbox Code Playgroud)
推送日志应该为您提供一个方便的链接来创建拉取请求。点击该链接并提交您的 PR。
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |