git取回和拉取

git取回和拉取,git,github,Git,Github,在这里,我们正在将源代码迁移到github,这个事务让我头疼:) 我做了什么:我去了我们的工作区(是一个eclipse项目),做了git init和git add.,然后git commit-am“first commit” 一切都很顺利,然后,我把它推到了github。也是成功。 但是有一个大问题:我的朋友刚刚更改了一个名为a.java的文件,而我刚刚更改了B.java。好吧,没什么大不了的。然后,他把它推到github。当我试图推动时,我的推动被拒绝。好的,我做了一个git pull git

在这里,我们正在将源代码迁移到github,这个事务让我头疼:)
我做了什么:我去了我们的工作区(是一个eclipse项目),做了
git init
git add.
,然后
git commit-am“first commit”

一切都很顺利,然后,我把它推到了github。也是成功。
但是有一个大问题:我的朋友刚刚更改了一个名为
a.java
的文件,而我刚刚更改了
B.java
。好吧,没什么大不了的。然后,他把它推到github。当我试图推动时,我的推动被拒绝。好的,我做了一个git pull github master,然后再推一次,现在,我的“提交消息”变成了github.com的合并分支“master”:germantech/projectName
好吧,我做错了什么?

ps:我的英语很抱歉

你没有做错任何事-当你做
git拉github master
时,git进入远程
github
指示的存储库,获取
master
分支所需的一切,然后将其合并到当前分支中。在拉动之前,您有以下历史记录:

O --- A (master)
。。。其中,
O
是带有消息“firts commit”的提交,
A
是引入对
A.java
的更改的提交。与此同时,你的朋友有以下历史:

O --- B (master)
。。。这已经被推到GitHub。当您的
git-pull-github-master
将其合并到您的历史记录中时,它将创建一个“merge-commit”来表示树的状态,其中包含来自两个
master
分支的更改:

O --- B --- M (master)
 \         /
   ---A ---
相反,如果您希望保持历史记录的线性,您可以执行git pull--rebase github master,这将在删除版本的分支上“重放”不在远程版本的分支中的提交:

o --- B --- A' (master)

有些人更喜欢这样-我个人不在乎。

你没有做错什么-当你做
git拉github master
时,git进入远程
github
指示的存储库,获取
master
分支所需的一切,然后将其合并到当前分支中。在拉动之前,您有以下历史记录:

O --- A (master)
。。。其中,
O
是带有消息“firts commit”的提交,
A
是引入对
A.java
的更改的提交。与此同时,你的朋友有以下历史:

O --- B (master)
。。。这已经被推到GitHub。当您的
git-pull-github-master
将其合并到您的历史记录中时,它将创建一个“merge-commit”来表示树的状态,其中包含来自两个
master
分支的更改:

O --- B --- M (master)
 \         /
   ---A ---
相反,如果您希望保持历史记录的线性,您可以执行git pull--rebase github master,这将在删除版本的分支上“重放”不在远程版本的分支中的提交:

o --- B --- A' (master)

有些人更喜欢这样——我个人不在乎。

你是在同一个回购协议中还是在不同的回购协议中?如果是,您需要重新设置更改的基础,然后再次推送

git pull --rebase github master
git push github master

您是在同一回购协议中还是在不同的回购协议中?如果是,您需要重新设置更改的基础,然后再次推送

git pull --rebase github master
git push github master

仅供参考,--rebase将您的承诺置于您的朋友承诺之上,这样您就可以在不合并的情况下推动,或者更好地使您的历史再次线性化。您所说的“不同回购”是什么意思?我们都使用相同的github repo。这就是你的意思吗?--如果你编辑并提交了文件B和朋友文件A,rebase不会删除任何内容。仅供参考,-rebase将你的提交置于朋友提交之上,这样你就可以在不合并的情况下进行推送,或者让你的历史再次线性化。你说的“不同的回购”是什么意思?我们都使用相同的github repo。这就是你的意思吗?--如果你编辑并提交了文件B和朋友文件A,那么rebase不会删除任何内容。will--rebase维护我的提交消息吗?或者他会改变吗?--rebase不会改变我的提交消息。什么更好?拉取或拉取--重新设置基础?它将保留提交消息(以及作者信息和作者日期)-有一个单独的提交日期和提交者信息将被更新。@Luiz K:这完全取决于您-有些人不喜欢看到历史记录中的拆分和合并,因为它们可能是线性的。另一方面,如果您正在合并为特定主题创建的分支中的工作,大多数人更喜欢合并该分支以将该信息保留在提交图中。@Luiz K:它不会更改您的消息-您的提交仍保留在原始消息中。只是合并提交是为了在合并来自
master
两个分支的更改时表示树的状态。(查看ASCII艺术图,在我的答案中有
M
commit…)会——重新设置我的提交消息的基础吗?或者他会改变吗?--rebase不会改变我的提交消息。什么更好?拉取或拉取--重新设置基础?它将保留提交消息(以及作者信息和作者日期)-有一个单独的提交日期和提交者信息将被更新。@Luiz K:这完全取决于您-有些人不喜欢看到历史记录中的拆分和合并,因为它们可能是线性的。另一方面,如果您正在合并为特定主题创建的分支中的工作,大多数人更喜欢合并该分支以将该信息保留在提交图中。@Luiz K:它不会更改您的消息-您的提交仍保留在原始消息中。只是合并提交是为了在合并来自
master
两个分支的更改时表示树的状态。(查看ASCII艺术图,在我的回答中使用
M
commit…)