`
MauerSu
  • 浏览: 514490 次
  • 性别: 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-origin-url

    在这个压缩包文件“node-git-origin-url-master”中,包含了这个库的源代码。开发者可以解压后查看其结构,学习如何编写类似的工具,或者直接将其作为依赖引入自己的项目中。通常,这样的库会提供安装和使用的说明,...

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

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

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

    本文将详细介绍解决Git在尝试执行`git push origin master`命令时报错的常见方法。在Git版本控制系统中,`git push origin master`命令用于将本地master分支的更改推送到远程仓库。然而,在实际操作过程中,可能会...

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

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

    Git-2.19.2-64-bit&&&git;-master

    在给定的压缩包文件中,我们有两个关键组件:"Git-2.19.2-64-bit.exe" 和 "git-master.zip"。 1. **Git-2.19.2-64-bit.exe**: 这是Git的64位版本,版本号为2.19.2。Git的版本更新频繁,每个新版本通常会包含性能...

    git-master_2_git_

    8. **远程分支**:`origin/master`是远程仓库(如GitHub)上的master分支的本地引用,可以使用`git fetch`和`git pull`来更新本地的远程分支。 9. **HEAD指针**:HEAD是一个特殊的指针,总是指向当前分支的最新提交...

    git仓库迁移(所有分支)脚本,git合并dev分支到master分支脚本

    git push origin master ``` 5. **清理**:如果不再需要dev分支,可以将其删除。 ``` git branch -d dev git push origin --delete dev ``` 通过以上步骤,你可以成功地迁移Git仓库并完成dev到master的合并...

    Git push 常见用法

    git push origin master:refs/for/master ``` 这里的 `origin` 表示远程主机名,`master` 分别代表本地分支名和远程分支名。具体来说,该命令的作用是将本地的 `master` 分支推送到远程主机 `origin` 上名为 `refs/...

    如何安装git、git创建本地仓库、本地仓库如何关联GitHub远程及push内容到远程仓库中.docx

    * 如果远程仓库中有文件,先使用git pull --rebase origin master命令将两者内容合并,然后使用git push origin master命令 * 之后,只需使用git push origin master命令,push到远程仓库中 六、其他命令 * git ...

    git命令整理的简单使用

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

    git搭配码云快速入门精简版(git安装和码云注册自行百度)

    最后,使用 `git push origin master` 将更改推送到码云远程仓库。 要检查推送是否成功,可以在码云仓库页面查看最新的提交记录。至此,你已成功地完成了 Git 配合码云的快速入门。随着对 Git 和码云的深入使用,你...

    Git使用教程

    * git push origin master:develop:将本地库与服务器上的库进行关联 八、Git 忽略文件 * gitignore 文件:忽略特殊文件 * git rm --cached a.a:移除文件(只从暂存区中删除) * git rm -f a.a:强行移除修改后...

    git 应用大全

    git push origin master ``` - 再次登录到GitHub等平台,将默认分支由`temp`改回`master`。 通过以上步骤,你可以有效地解决因误删`master`分支而带来的问题,并重新构建起正常的工作流程。 #### 总结 本文...

    git常用命令.txt

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

    git推送项目命令.pdf

    2. **未合并的文件**:使用`git pull --rebase origin master`先拉取远程更改,再解决冲突,最后`git push origin master`。 3. **非快进提交**:当试图推送的分支在远程仓库有新的提交时,需要先`git pull`更新...

    nvm master git resouece

    git pull origin master ``` 8. **参与开发和贡献**: 如果你想为NVM项目贡献代码,你需要了解Git的分支、合并请求和冲突解决等基本操作。创建新的分支,做出修改,然后发起一个pull request到NVM的master分支。 ...

    intro_git-master.rar

    "intro_git-master"这个压缩包文件很可能是关于Git的入门教程或者示例项目,其中包含了一系列与Git相关的文件和目录,很可能用来介绍Git的基本概念、命令以及工作流程。下面我们将深入探讨Git的重要知识点。 1. Git...

    配合Git flow 流程使用的git 操作命令指南

    git push origin --tags master develop ``` 6. **hotfix分支** 如果线上发现bug,需要紧急修复,可以从master分支创建hotfix分支: ```bash # 使用git flow命令创建 git flow hotfix start 1.0.1 # 或者...

Global site tag (gtag.js) - Google Analytics