我对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错了吗?就像我说的那样,我以前从未见过这个问题。
答案 0 :(得分: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
这样做是为了覆盖您的分支,以便您的提交显示为写在您的大学提交之上。在rebase之后的三个看起来像这样
master --* (Colleague commit) --* (Your commit)
答案 1 :(得分:0)
我建议您将操作分开。
我曾在多家商店工作,从未将其视为一种常见的做法(或根本没有)。
事实上,有些地方甚至不喜欢git pull
,他们更愿意保持git fetch
和git merge
操作(pull
本身结合),分开。
我建议您查看git工作流程帖子以指导您。寻找有很多upvotes的q / a。
这篇文章可能有所帮助:git branch, fork, fetch, merge, rebase and clone, what are the differences?