`
MauerSu
  • 浏览: 498069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Git 的origin和master分析

    博客分类:
  • git
 
阅读更多
源:http://lishicongli.blog.163.com/blog/static/1468259020132125247302/
评:
<<关键是 中英文切换着打字太辛苦了转载请注明出处>>



首先要明确一点,对git的操作是围绕3个大的步骤来展开的(其实几乎所有的SCM都是这样)

1.     从git取数据(git clone)

2.     改动代码

3.     将改动传回git(git push)

这3个步骤又涉及到两个repository,一个是remote repository,再远程服务器上,一个是local repository,再自己工作区上。其中

1, 3两个步骤涉及到remote server/remote repository/remote branch,

2涉及到local repository/local branch。git clone 会根据你指定的remote server/repository/branch,拷贝一个副本到你本地,再git push之前,你对所有文件的改动都是在你自己本地的local repository来做的,你的改动(local branch)和remote branch是独立(并行)的。Gitk显示的就是local repository。



在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地),但你无法在本地更改其数据。

同时,Git 会建立一个属于你自己的本地master 分支,它指向的是你刚刚从remote server传到你本地的副本。随着你不断的改动文件,git add, git commit,master的指向会自动移动,你也可以通过merge(fast forward)来移动master的指向。

$git branch -a (to show all the branches git knows about)

* master

  remotes/origin/HEAD -> origin/master

  remotes/origin/master



$git branch -r (to show remote branches git knows about)

  origin/HEAD -> origin/master

  origin/master



可以发现,master就是local branch,origin/master是remote branch(master is a branch in the local repository. remotes/origin/master is a branch named master on the remote named origin)

$git diff origin/master master (show me the changes between the remote master branch and my master branch).

需要注意的是,remotes/origin/master和origin/master的指向是相同的

$git diff origin/master remotes/origin/master



git push origin master

origin指定了你要push到哪个remote

master其实是一个“refspec”,正常的“refspec”的形式为”+<src>:<dst>”,冒号前表示local branch的名字,冒号后表示remote repository下 branch的名字。注意,如果你省略了<dst>,git就认为你想push到remote repository下和local branch相同名字的branch。听起来有点拗口,再解释下,push是怎么个push法,就是把本地branch指向的commit push到remote repository下的branch,比如

$git push origin master:master (在local repository中找到名字为master的branch,使用它去更新remote repository下名字为master的branch,如果remote repository下不存在名字是master的branch,那么新建一个)

$git push origin master (省略了<dst>,等价于“git push origin master:master”)

$git push origin master:refs/for/mybranch (在local repository中找到名字为master的branch,用他去更新remote repository下面名字为mybranch的branch)

$git push origin HEAD:refs/for/mybranch (HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)

$git push origin :mybranch (再origin repository里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了)
分享到:
评论

相关推荐

    Git发现git push origin master 报错的解决方法

    git push origin master 报错的解决方法,分享给大家,具体如下: 错误提示如下 [root@linux1 php]# git push -u origin master To git@github.com:kangvcar/Results-Systems--PHP.git ! [rejected] master -&gt; ...

    git指令快速查询-代码管理工具

    git push origin master 将文件给推到服务器上 git remote show origin 显示远程库origin里的资源 git push origin master:develop git push origin master:hb-dev 将本地库与服务器上的库进行关联 git checkout ...

    origin-master-3.7.1-1.el7.git.0.0a2d6a1.x86_64.rpm

    官方离线安装包,亲测可用

    git命令整理的简单使用

    从远程仓库pull文件:git pull origin master 提交代码到暂存: git add . (提交暂存) 提交代码: git commit -m (注释什么操作) 推送到远程仓库:git push -u origin master (master 默认分支)

    git常用命令.txt

    1:git init ...5:git push -u origin master 把本地仓库中的文件同步到远程仓库中。其中master为远程仓库的分支名。 git push -u origin master;这一步需要输入github的账号和密码: 6:git status

    Sungq1990#blog#git rebase操作1

    merge主要发生在这样几个地方1 两个人同时开发一个分支,在拉取对方代码的时候2 要将代码合并到master的时候git pull origin master

    git代码上传流程文档

    设置用户信息 git config --global user.name “xxx” git config --global user.email “xxx@qq.com...git push origin master //master是默认分支名,这里可以根据自己需要进行修改 git pull //从库上更新代码到本地

    Git指令的Shell脚本

    F: Fetch origin/master and merge. L: Show latest two-weeks logs of repository. P: Push commissions to origin/master. U: User command mode(Press ‘Enter’ to exit). R: Reset current version ...

    doc

    Git命令 mkdir git ; cd git && git init git init . git config core.sshCommand " ssh -i /some/where/thekey -F /dev/null " ...git checkout master && git merge origin/master --allow-unrelated-histori

    Git基本命令.txt

    git分布式版本控制常用命令及其说明,Git连接远程仓库,向远程仓库推送($ git push 或 $ git push origin master)项目,从远程仓库拉取($ git clone 仓库地址https://....)项目

    git查看、创建、删除、本地、远程分支方法详解

    origin/master 2. 查看本地分支 git branch *master 注:以*开头指明现在所在的本地分支 3. 查看本地分支和远程分支 git branch -a *master remotes/origin/master 4. 创建分支 *新建一个分支,但依然停留在当前...

    初学者必看,git同步本地代码到远程仓库

    git pull --rebase origin master git命令解释: git add . 添加到暂存区域 git commit -m "日志信息" 提交到本地库 git push 提交到master是分支 git config --global -l 查看是否设置用户签名成功 git config --...

    chef-git-server:Chef Cookbook 创建一个简单的基于 SSH 的 Git 服务器

    &gt; git push origin master &gt; git pull origin master 要求 厨师 在 Chef 11.6.2 上测试。 平台 目前仅在 Ubuntu 14.04 上测试。 请为您希望支持的任何其他发行版提供 PR。 Ubuntu 食谱 git-server 需要以下外部说明...

    git常用命令

    1. 创建git资源库 git init --bare 库名称 ... git push origin master 6. 切换用户,拉取最新的文件 git pull 7. 查看仓库当前状态 git status 8. 查看修改了什么内容 git diff &lt;文件名&gt;

    Liuliu-55#papernotes#Git 笔记1

    使用git在笔记本电脑和主机间进行obsidian笔记同步在主机进行git push origin master后笔记本电脑git pull gitee mas

    git_opration:git命令和常用操作

    git push -u origin master 重新上传项目 git clone git@git.XXX.XXX.git 删除旧项目内容,拷贝新项目 git add . git commit -m "commit" git push origin 2. git打标签操作 git tag -a 2.0.4 -m '创建TAG' git push...

    no-more-masters:将默认的Git分支从master重命名为Production

    不再是主人 将默认的Git分支从master重命名为main。 该脚本要求您具有。 同样,如果您为master启用了分支保护,请考虑关闭它们,以便脚本... git push origin main :将main分支推送到您的遥控器 使用,将main设置为

    origin-master-3.7.2-1.el7.git.0.cd74924.x86_64.rpm

    官方离线安装包,亲测可用

    origin-master-3.10.0-1.el7.git.0.0c4577e.x86_64.rpm

    官方离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics