0

我对 git 不是很熟悉,所以请耐心等待。我已经看到多次提到 'git plush' 作为推送已提交更改的“正确”方法,并且我已经使用了很长一段时间。然而现在,在我最近才开始工作的回购中,毛绒玩具的工作方式与我以前看到的不同。现在它将我的树更新,然后将所有更新的文件合并到我的提交中,并重新提交所有通过拉取更新的文件。

# git commit
[master aaf2cc1] commit comment
1 files changed, 233 insertions(+), 0 deletions(-)
create mode 100755 my-file.rb
(19:23:11)-(rkasten@tash)-(jobs:0)-(! 633)-(~/project)
# git pull && git push
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 10 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (10/10), done.
From ssh://server.company.com/repo/git/project
   6a5aa62..228d9b1  master     -> origin/master
Merge made by recursive.
DEMO_files/joshtest.rb                             |  119 ++++++++++++++++++++
.../portal/prod-portal-config.json                 |    4 +-
portal-maintenance.rb                              |    5 +-
3 files changed, 124 insertions(+), 4 deletions(-)
create mode 100755 DEMO_files/joshtest.rb
Counting objects: 7, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 3.00 KiB, done.
Total 5 (delta 2), reused 0 (delta 0)
To ssh://snc@server.company.com/repo/git/project
   228d9b1..375bdf4  master -> master

正如你所看到的,即使我只提交了我的 1 个文件(my-file.rb),我的推送也会导致我的 1 个文件的提交以及之前由其他人推送的这 3 个文件的合并。那么我使用 git 错了吗?就像我说的,我以前从未见过这个问题。

4

2 回答 2

1

当两个分支分叉并合并它们时,git 需要创建一个合并提交。

例如:

master            /--* (Your commit)      ----* (merged commit)
origin/master  ------* (Colleague commit) --/

这是因为这两个提交是来自同一个父提交的分支,所以 git 会在合并这两个分支时创建一个中间合并提交。

为了防止这种额外的提交,您通常会这样做:

git checkout master # Your local branch
git fetch origin    # Fetch the head of origin/master
git rebase origin/master
# Fix any conflicts
git push

这样做是为了覆盖您的分支,以便您的提交显示为写在您的大学提交之上。变基后的三个看起来像这样

master --* (Colleague commit) --* (Your commit)
于 2013-11-08T18:23:53.020 回答
0

我建议您将操作分开。

我曾在几家商店工作过,但从未将其视为一种常见做法(或根本没有)。

事实上,有几个地方甚至不喜欢git pull,他们更喜欢将git fetchandgit merge操作(它pull本身结合)分开。

我建议您查看 git 工作流帖子以指导您。寻找有很多赞成票的 q/a。

这篇文章可能会有所帮助:git branch、fork、fetch、merge、rebase 和 clone,有什么区别?

于 2013-11-08T18:30:30.750 回答