1

我是一个 GIT 新手,所以我有一些关于 git 命令、合并等的基本问题。我只是对代码做了一些更改,我做了一个 git commit,然后我尝试执行以下命令:

git push origin test:test 

(这个语法是什么意思?我知道我正在使用名为 的分支test

出现错误,因为在我推送之前其他人进行了更改。所以错误说我需要做代码更改和合并。

  1. 我应该执行什么命令来查看我所在区域与其他人所做更改之间的差异?有 git diff 但我应该使用语法吗?

  2. 我想将我的更改与他的更改合并。我怎么做?

4

3 回答 3

1

您需要git pull origin test:test获取其他开发人员所做的更改并将它们合并到您的工作目录中。解决任何冲突并提交后,您将能够推送。

git push origin test:testtest意味着您正在将您在分支(左侧)上的本地存储库(克隆)中所做的更改复制回您在分支(右侧)test上进行克隆的原始存储库(原点)。testtest

严格来说,如果 local 和 origin 中的分支名称相同,那么写git push origin test.

于 2013-04-19T00:40:35.367 回答
1

要查看您所拥有的与其他人所做的之间的变化,请执行以下操作:

git diff origin/test

如果您在其中,则不需要,因为您的遥控器已更新,但您需要git fetch确保您的遥控器状态已更新。

您需要做的就是git pull获取更新的更改。

我建议也这样做git pull --rebase origin test:test--rebase选项只会在原始更改之后添加您的提交。这将有助于保持历史更清晰,否则您将看到分支的合并提交到自身中。但这取决于你。

于 2013-04-19T00:43:05.200 回答
1

git push origin test:test

这会将您的更改推送到名为test的远程分支的本地分支test。该test:test部分是 的(可选)<refspec>选项git push

<refspec>格式<src>:<dst>为. 您使用它的方式是从本地分支推test送到远程分支,也称为test. 一个名为 test 的分支必须存在于远程调用的origin.

对于问题 1,您想要获取更改(但不将它们与您的工作文件合并)然后 diff,执行;

git fetch origin test:test
git diff ..origin  

请注意,我只包含该refspec选项,因为您在推送示例中使用了它 - 可能没有必要 - 默认情况下 git fetch 应该在 origin 上查找具有您签出分支名称的分支......但我离题了。 ..

对于问题 2,您希望将分支原点(在获取之后与远程原点保持同步)合并到您的工作副本中;

git merge origin

+1 为 Felix Fling 对 pro git book 的评论...

于 2013-04-19T05:46:51.740 回答