I googled and read many posts, but none could make me understand the branch divergence problem yet.
If I've remote tracking branch, I often get into the following:
$ git status
# On branch feature/worker-interface
# Your branch and 'origin/feature/worker-interface' have diverged,
# and have 1 and 4 different commit(s) each, respectively.
First, you can use the cherry command to see what commits differ between branches, and in what ways. So in this case, running
cherry origin/feature/worker-interface shows us the status of commits on the current branch and how they stack up against
You will find 1 repo which you forgot to commit.
首先，你可以使用git cherry命令查看提交的分支的不同，也就是说你可以git cherry origin/master 查看，显示在当前分支origin/master下提交的状态，你将发现有1个版本库你忘记了提交。
Now, lets see whats happening with the 'origin/feature/worker-interface' and its commits.For this we can run a log command with a special format
log ..origin/master --online 查看。
Here we see 4 commits that don't exist in our current branch
So now we have a good idea of what’s happened. you’ve made 1 commits on your local master branch, and it looks like there are 4 commits on
you don’t have merged in yet. So, you could just blindly merge things together and go on your way (if they merge without conflict), but I’d like to show you how to deal with it in a more controlled manner.
1) First, create a branch that points to your current HEAD:
-b local_changes 2) Now that we have that to keep track of those changes, we switch back to feature/worker-interface:
feature/worker-interface 3) At this point, reset the feature/worker-interface branch to get rid of the 1 commit. 4) There you go! You can check your status of branch
status you will be prompted asnothing to commit
1），你应该创建一个分支指向你当前的HEAD ，如果有分支可以不用创建（git checkout -b local_changes)
2） 现在我们可以追踪到分支上的变化，我们切回到origin/master ，git checkout origin/master
3）之后git reset origin/master 删除origin/master 分支上的一次提交