【发布时间】:2020-08-23 14:01:15
【问题描述】:
我发现当我尝试“git pull origin master”命令时,有时最近的提交会被删除。当我将本地分支合并到主分支,然后从远程源拉取时,就会发生这种情况。
首先,我创建了一个带有首次提交的 git 存储库。当前本地 HEAD 和 origin/master 指向第一次提交(最新)。
$ git log --oneline --all --graph --decorate
* d42ad4e (HEAD -> master, origin/master) First commit
然后我创建了一个分支(分支名称“test”),进行了简单的更改和提交,并合并到了 master。 之后,提交历史如下所示。
$ git log --oneline --all --graph --decorate
* ea13eb8 (HEAD -> master) Merge branch 'test'
|\
| * 9d3969f (test) test
|/
* d42ad4e (origin/master) First commit
如您所见,9d3969f 是我在 test 分支上所做的提交,而 ea13eb8 是通过“git merge test”命令创建的。
那么如果我使用“git pull origin master”命令,
$ git pull origin master
From https://github.com/????/????
* branch master -> FETCH_HEAD
Successfully rebased and updated refs/heads/master.
$ git log --oneline --all --graph --decorate
* 9d3969f (HEAD -> master, test) test
* d42ad4e (origin/master) First commit
按我的意愿应用了更改,但现在删除了提交 ea13eb8。我只是好奇当我从远程源拉取时,最近一次提交会发生什么。
【问题讨论】:
-
另一个说明为什么
git pull不好。 -
见
True Merge部分git-scm.com/docs/git-merge -
@matt
git pull最终使用git merge作为快进。它只是从远程获取更改并在同一分支上应用git merge命令。这还不错,这是获取本地分支更改的正常方式。 -
@Akshay 我不同意。
-
@matt 是的,最好的方式是变基。 git merge 创建新的提交来理解图。但这并不意味着
git pull是不好的方式。
标签: git