我在本地计算机上克隆了一个远程git存储库。
我用
创建了一个分支git checkout -b new_local_branch
我做了一些改变。
现在我想用
将我的本地分支推送到远程存储库git push origin new_local_branch
我很惊讶git正在将所有文件发送到远程存储库(不仅仅是修改过的存储库) 这是正常的吗?我怎么能避免这种情况?
提前致谢
答案 0 :(得分:0)
你一定误解了什么。 Git push只发送新的对象。例如,看看这个简单的序列,我更新一个文件(README.txt)并将其推送到新的远程分支。
$ git checkout -b new_branch
Branch new_branch set up to track local branch master.
Switched to a new branch 'new_branch'
$ echo "New readme file content" > README.txt
$ g commit -a -m "Commit only on new branch"
[new_branch 8d8f56d] Commit only on new branch
1 file changed, 1 insertion(+), 3 deletions(-)
$ git log --oneline --decorate
8d8f56d (HEAD, new_branch) Commit only on new branch
d101a0e (origin/master, master) Small update
2d02c36 Initial commit
$ git push origin new_branch
Counting objects: 3, done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /tmp/myrepo.git/
* [new branch] new_branch -> new_branch
Git push只发送了3个对象。那些是:
git log
输出请注意,旧的提交对象2d02c36,d101a0e和与这些提交相关的树/ blob未发送,因为远程仓库已经有了这些提交。 请注意,如果在repo中有一个深层目录结构,即使只更新一个文件,也可能需要发送很多新的树对象,一个用于更改文件的每个父目录。