我在GitHub上有一个回购,其他人已经创建了几个新分支,我点击了" merge"在GitHub上的分支上将它们合并为master。
在GitHub的提交历史记录中,我可以看到四个提交:人员在分支上的提交(hash1
和hash2
),然后是我的合并提交({{ 1}}和hash3
)。这很好。
但我对我的本地git状态感到困惑,以及如何让它与遥控器同步。我在主分公司。
如果我输入hash4
,我在本地看到的最后一次提交是人在分支上的提交(git whatchanged
和hash1
),而不是远程合并提交({ {1}}和hash2
)。
如果我输入hash3
,我会看到以下内容:
hash4
为什么git认为git status
和On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
将它置于远程主控之前?是不是在主人后面,因为它没有hash1
和hash2
?
如果我输入hash3
,我会看到:
hash4
所以它似乎并不了解git pull origin master
和From github.com:myorg/myrepo
* branch master -> FETCH_HEAD
Already up-to-date.
。
我现在害怕在本地制作一个新的提交,以防我搞砸了主人,有不必要的额外合并等等。我应该做些什么才能让所有东西都与远程主人保持同步,并开始干净石板?
更新:此处是hash3
的输出:
hash4
这是git remote -v
的输出:
origin git@github.com:myorg/myrepo.git (fetch)
origin git@github.com:myorg/myrepo.git (push)
啊,所以如果我在本地做git log --graph --decorate --pretty=oneline --abbrev-commit --all
我实际上可以看到四个合并提交,而不是两个!他们只是没有出现在* 2315aed (HEAD -> master) Merge branch 'master' of github.com:myorg/myrepo
|\
| * 9de7505 (origin/master) Merge pull request #12 from myorg/reposition-video
| |\
* | \ 0d1d845 Merge branch 'reposition-video' of github.com:myorg/myrepo
|\ \ \
| |/ /
|/| /
| |/
| * 1067905 (origin/reposition-video, reposition-video) Move the video below the fold.
* | a5e8d96 Merge pull request #11 from myorg/update-install-docs
|\ \
| |/
|/|
| * 9744ffa Minor documentation fixes.
|/
* 4b4d507 Update README.
* 89da81b Add latest code for feature.
,这也是我感到困惑的部分原因。
现在问题:我如何撤消这些额外的本地合并,并重新与远程同步,只有两个合并提交?它们是如何首先发生的 - 我想在git log
期间必定会有一些自动合并?
答案 0 :(得分:2)
您可以使用
强制<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
android:layout_height="fill_parent" tools:context=".MainActivity">
<ViewFlipper
android:id="@+id/image_flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ViewFlipper>
</RelativeLayout>
使用master
origin/master
这应放弃git checkout master
git reset --hard origin/master
和0d1d845
,您的网络应该看起来像
2315aed
你不会破坏任何东西。如果这不是您想要的或意外中断,您可以回到&#34;凌乱的状态&#34;使用
* 9de7505 (origin/master, HEAD -> master) Merge pull request #12 from myorg/reposition-video
|\
| * 1067905 (origin/reposition-video, reposition-video) Move the video below the fold.
* | a5e8d96 Merge pull request #11 from myorg/update-install-docs
|\ \
| |/
|/|
| * 9744ffa Minor documentation fixes.
|/
* 4b4d507 Update README.
* 89da81b Add latest code for feature.
答案 1 :(得分:1)
您需要了解Git报告本地master
分支状态的任何内容都与本地跟踪分支相关,后者跟踪真正的远程master
在GitHub上。当您看到以下内容时:
Your branch is ahead of 'origin/master' by 1 commit.
这意味着您的本地master
位于本地跟踪分支之前一次提交。它并不一定意味着遥控器上实际发生的事情。导致这种状态的事件可能如下:
git checkout master
git pull origin master
# work work work
git commit
git status
现在这里变得多汁了。当你再次做到
git pull origin master
您合并了远程master
分支上的所有新工作。所以现在你当地的Git说你已经掌握了遥控器的最新信息,而且你是。但问题是,现在遥控器已经落伍了。因此,您还应该将本地分支合并到远程master
。由于您使用的是GitHub,因此发出拉取请求是一种干净而安全的方法。