我想做一个git pull
但只有特定的提交.
A->B->C->D->E->F (Remote master HEAD)
Run Code Online (Sandbox Code Playgroud)
假设我的local master
HEAD指向B
,我想拉到E
.我该怎么办 ?
这不是一个特定的提交,这是一个特定的提交.
unr*_*007 76
git pull
只不过是git fetch
随之而来的git merge
.所以你能做的就是
git fetch remote example_branch
git merge <commit_hash>
Pla*_*der 19
您还可以拉取最新的提交并撤消直到您想要的提交:
git pull origin master
git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)
替换master
为您想要的分支。
使用 git log 来查看您要还原到哪个提交:
git log
Run Code Online (Sandbox Code Playgroud)
就个人而言,这对我更有效。
基本上,它的作用是拉取最新的提交,然后您手动一一还原提交。使用 git log 来查看提交历史。
优点:如宣传的那样工作。您不必使用提交哈希或拉取不需要的分支。
缺点:您需要一次还原提交。
警告:提交/存储所有本地更改,因为--hard
您将丢失它们。使用风险自负!
dev*_*bmw 15
首先,从远程仓库获取最新的提交.这不会影响您当地的分支机构.
git fetch origin
Run Code Online (Sandbox Code Playgroud)
然后检查远程跟踪分支并执行git日志以查看提交
git checkout origin/master
git log
Run Code Online (Sandbox Code Playgroud)
获取要合并的提交的提交哈希值(或者只是它的前5个字符)并将该提交合并到master中
git checkout master
git merge <commit hash>
Run Code Online (Sandbox Code Playgroud)
我从此视频中找到了更新的答案,接受的答案对我不起作用。
首先使用(或使用 SSH)从 git 克隆最新的存储库(如果没有
git clone <HTTPs link of the project>
),然后使用 转到所需的分支
git checkout <branch name>
。
使用命令
git log
Run Code Online (Sandbox Code Playgroud)
检查最新的提交。复制特定提交的 shal。然后使用命令
git fetch origin <Copy paste the shal here>
Run Code Online (Sandbox Code Playgroud)
按回车键后。现在使用命令
git checkout FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
现在,特定的提交将可供您的本地使用。更改任何内容并使用 推送代码git push origin <branch name>
。就这样。检查视频以供参考。
这对我有用:
git pull origin <sha>
Run Code Online (Sandbox Code Playgroud)
例如
[dbn src]$ git fetch
[dbn src]$ git status
On branch current_feature
Your branch and 'origin/master' have diverged,
and have 2 and 7 different commits each, respectively.
...
[dbn src]$ git log -3 --pretty=oneline origin/master
f4d10ad2a5eda447bea53fed0b421106dbecea66 CASE-ID1: some descriptive msg
28eb00a42e682e32bdc92e5753a4a9c315f62b42 CASE-ID2: I'm so good at writing commit titles
ff39e46b18a66b21bc1eed81a0974e5c7de6a3e5 CASE-ID2: woooooo
[dbn src]$ git pull origin 28eb00a42e682e32bdc92e5753a4a9c315f62b42
[dbn src]$ git status
On branch current_feature
Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
...
Run Code Online (Sandbox Code Playgroud)
这会拉取 28eb00、ff39e4 和之前的所有内容,但不会拉取 f4d10ad。它允许使用 pull --rebase,并尊重 gitconfig 中的 pull 设置。这是有效的,因为您基本上将 28eb00 视为一个分支。
对于我使用的 git 版本,此方法需要完整的提交哈希 - 不允许使用缩写或别名。你可以这样做:
[dbn src]$ git pull origin `git rev-parse origin/master^`
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您想将特定提交的代码拉取到新分支,可以使用以下命令:
git checkout -b <new_branch_name> <commit_hash>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
84477 次 |
最近记录: |