在 TFS 中推送单个传出提交 Git
Push single outgoing commit in TFS Git
我的分支上有多个未同步的传出提交。
我想将其中一个推送到我的在线存储库,同时我想等待推送其他(它们是更大过程的一部分)。
如果您查看下面的屏幕截图,我如何才能只推送第一个提交?
没有简单的方法可以做到这一点。我不知道如何从 Visual Studio 执行此操作,但下面是如何使用 git 实用程序从命令行完成此操作的方法。
让我们假设您的主分支名称为 "master" 并且您当前已签入它。
从您的 master 创建一个临时分支:
git checkout master
git branch temp
将 master 分支重置为 origin/master 以便 return 它在还没有您的提交时恢复到初始状态:
git reset --hard origin/master
从远程主机获取所有提交以同步您的本地和远程 "master" 分支。如果您的本地副本中还没有提交,则此步骤是必要的,例如当您在本地工作时,smbd else 被推送。无论如何,值得这样做只是为了确保:
git pull origin master
现在您可以挑选最后一次提交给 master:
git cherry-pick <hash_of_last_commit_in_temp_branch>
现在您可以将此提交推送到远程:
git push origin master
现在将您的其余提交从 temp 分支合并回 master 分支:
git merge temp
最后删除临时分支:
get branch -d temp
就是这样。
没有简单的方法,Visual Studio 2013 Git 集成没有任何帮助;我会使用 Git 命令行或类似的。
您应该创建一个新分支来停放所有提交,切换到当前分支(是 master
吗?),重置它以匹配 TFS 状态(即 origin
)和 cherry-选择您要应用并推送的提交。
我的分支上有多个未同步的传出提交。 我想将其中一个推送到我的在线存储库,同时我想等待推送其他(它们是更大过程的一部分)。
如果您查看下面的屏幕截图,我如何才能只推送第一个提交?
没有简单的方法可以做到这一点。我不知道如何从 Visual Studio 执行此操作,但下面是如何使用 git 实用程序从命令行完成此操作的方法。
让我们假设您的主分支名称为 "master" 并且您当前已签入它。
从您的 master 创建一个临时分支:
git checkout master git branch temp
将 master 分支重置为 origin/master 以便 return 它在还没有您的提交时恢复到初始状态:
git reset --hard origin/master
从远程主机获取所有提交以同步您的本地和远程 "master" 分支。如果您的本地副本中还没有提交,则此步骤是必要的,例如当您在本地工作时,smbd else 被推送。无论如何,值得这样做只是为了确保:
git pull origin master
现在您可以挑选最后一次提交给 master:
git cherry-pick <hash_of_last_commit_in_temp_branch>
现在您可以将此提交推送到远程:
git push origin master
现在将您的其余提交从 temp 分支合并回 master 分支:
git merge temp
最后删除临时分支:
get branch -d temp
就是这样。
没有简单的方法,Visual Studio 2013 Git 集成没有任何帮助;我会使用 Git 命令行或类似的。
您应该创建一个新分支来停放所有提交,切换到当前分支(是 master
吗?),重置它以匹配 TFS 状态(即 origin
)和 cherry-选择您要应用并推送的提交。