首页 > 其他分享 >Git 的origin和master分析

Git 的origin和master分析

时间:2023-04-20 14:04:47浏览次数:38  
标签:origin git remote repository Git master branch


评:
<<关键是 中英文切换着打字太辛苦了转载请注明出处>>



首先要明确一点,对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,删除它。用一个空的去更新它,就相当于删除了)

标签:origin,git,remote,repository,Git,master,branch
From: https://blog.51cto.com/u_16080829/6209513

相关文章

  • Git Tip: git push ‘No refs in common and none specified’
    评:@seehttp://www.thebuzzmedia.com/git-tip-git-push-no-refs-in-common-and-none-specified/Gitisasource-controltoolusedbysoftwaredevelopers.IrecentlyswitchedfromSubversiontoGitandwhilethingshavebeenmostlysmooth,therehavebeena......
  • git remote用法总结
    评:gitremotegitremote不带参数,列出已经存在的远程分支,例如:#gitremoteorigin_appsgitremote-v|--verbose列出详细信息,在每一个名字后面列出其远程url,例如:#gitremote-vorigin_appsgitolite@scm:apps/Welcome.git(fetch)origin_appsgitolite@scm:apps/W......
  • GIT 还原代码
    GIT还原代码方案一:强制推送此操作会强制将本地代码推送上去并让远程git上的版本库叶回退到你本地版本状态。步骤01.先使用hard方式回滚代码此步骤保证本地代码的内容已经和回退版本一致02.强制push强推方式有两种,勾选任意一种即可(两者区别:https://tortoisegit.org/do......
  • Eddy's digital Roots 1163 (数学+九余数定理)
    Eddy'sdigitalRootsTimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):5278   AcceptedSubmission(s):2952ProblemDescriptionThedigitalrootofapositiveintegerisfoundbysumming......
  • Git fetch和git pull的区别
    评:Git中从远程的分支获取最新的版本到本地有这样2个命令:1.gitfetch:相当于是从远程获取最新版本到本地,不会自动mergegitfetchoriginmastergitlog-pmaster..origin/mastergitmergeorigin/master以上命令的含义:首先从远程的origin的master主分支下载最新的版......
  • git 搭建服务器笔记
    评:-----------1服务器安装git----------1.在有yum的系统上(比如Fedora)yuminstallcurl-develexpat-develgettext-devel\openssl-develzlib-devel2.下面的Git官方站点下载最新版本源代码:http://git-scm.com/download3.编译并安装:$tar-zxfgit-1.7.2.......
  • git常用命令
    以下是一些常用的git命令:1.gitinit:将当前目录初始化为Git仓库。2.gitclone:克隆一个远程Git仓库到本地。3.gitadd:将文件添加到暂存区。4.gitcommit:将暂存区的文件提交到本地仓库。5.gitpush:将本地仓库的文件推送到远程仓库。6.gitpull:从远程仓库拉取文件到本地。......
  • git连接仓库
    要连接到远程Git存储库,请按照以下步骤操作:1.在本地计算机上打开终端或命令提示符。2.转到您要将存储库克隆到的目录。3.使用以下命令克隆存储库:gitclone<remoterepositoryURL>例如:gitclonehttps://github.com/username/repository.git4.配置Git以使用您的用户名和......
  • 1、Git初始化、环境配置、文件创建提交到版本库、比较文件变动
    Git初始化、环境配置、文件创建提交到版本库、比较文件变动1.git基本信息查看git版本[root@ubuntu2004~]#git--versiongitversion2.25.1创建项目根[root@ubuntu2004~]#mkdirdeploy-demoapp[root@ubuntu2004~]#cddeploy-demoapp/初始化Git仓库,生成.git目录结构[ro......
  • 搭建 gitlab 私有仓库
    搭建gitlab私有仓库1.拉取镜像dockerpullgitlab/gitlab-ce2.启动容器dockerrun-itd\-p9980:80\-p9922:22\-v/home/gitlab/etc:/etc/gitlab\-v/home/gitlab/log:/var/log/gitlab\-v/home/gitlab/opt:/var/opt/gitlab\--restartalways\--pr......