位置: IT常识 - 正文

Linux操作Git远程仓库与本地仓库同步的教程(git pull远程)

编辑:rootadmin
这篇文章主要介绍了Linux操作Git远程仓库与本地仓库同步的教程,本文以当下最热门的GitHub上的项目同步为例进行讲解,需要的朋友可以参考下... 16-05-05

推荐整理分享Linux操作Git远程仓库与本地仓库同步的教程(git pull远程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:git远程连接命令,linux命令git,linux git教程,linux搭建git远程仓库,git pull远程,git远程命令,git远程命令,linux git配置远程仓库,内容如对您有帮助,希望把文章链接给更多的朋友!

创建本地仓库并同步到远程git是非常强大的版本管理工具。接下来的时间里,我就和大家絮叨絮叨git的入门:如何在本地创建一个git仓库,并把自己的本地代码同步到远程。此教程是在mac上操作的,如果您的系统是Linux,那么操作方法相同;如果您的系统是windows,那么,只需要把git的bash窗口调出来,以后的过程也都与Linux相同。一、首先,您需要安装git,此步就忽略了,自行安装即可。

二、假设你目前还没有创建一个工作目录,那么,先创建一个目录吧,就叫StudyGit。

三、现在的StudyGit目录还只是一个本地目录,和git没有任何关联,那么,我们怎么样才能把这个目录和git关联起来呢?只需要进入StudyGit目录,运行如下命令:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git initInitialized empty Git repository in /Users/yanyaozhen/Coding/Practice/StudyGit/.git/

提示已经说明我们初始化了一个空的本地git仓库。如果你查看StudyGit下的所有文件时,会发现一个.git 的隐藏文件,这个文件非常重要,版本的控制就靠它了。同时,如果你要部署应用程序到生产环境时,切记不要把该目录部署到服务器,因为这可是黑客的最爱啊!

四、接下来我们来看一个基本可以说是用的最频繁的一个命令:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)没错,就是"git status"。这个命令用于查看当前git的状态,比如,上面的例子中,我们刚创建了一个空的git仓库,那么运行该指令时,git会提示我们,当前没有任何东西要提交,同时提示我们,可以创建或者复制文件后使用“git add”命令来跟踪文件的变化。

五、现在让我们来创建一个文件吧。我们创建一个叫“a.txt”的文本文件,并且内容如下:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ cat a.txt

aaa这个时候,让我们再来运行下git status吧。运行如下:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

Untracked files: (use "git add <file>..." to include in what will be committed)

a.txt

nothing added to commit but untracked files present (use "git add" to track)这时会提示我们有一个未追踪的文件,叫a.txt。我们要把这个文件加入到版本控制中,于是,我们运行如下命令:

代码如下:git add a.txt

这个命令表示把我们指定的a.txt加入到git控制之下。add命令可以没有参数(在windows下可以没有参数,在mac下需要指定当前目录即“.”),如果没有参数,则表示把目录下的所有文件都加入到git仓库中。这个时候,我们再运行下“git status”:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

Changes to be committed: (use "git rm --cached <file>..." to unstage)

new file: a.txt提示我们有改变需要被提交。这个时候,a.txt这个文件就存在于所谓的“暂存区”中,暂存区中的文件可以被真正提交到git仓库。有同学可能说,如果我不想提交这个文件了,那怎么把刚才的文件从暂存区移除呢?其实答案就在刚才的提示中:use "git rm --cached ..." to unstage。那么,我们运行下这个命令:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git rm --cached a.txt

rm 'a.txt'再运行git status时就可以发现,又回到文件没有被提交时的状态了。

六、当我们的文件已经通过“git add”加入到暂存区后,就可以把文件真正提交到git仓库了。如下:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"Linux操作Git远程仓库与本地仓库同步的教程(git pull远程)

*** Please tell me who you are.

Run

git config --global user.email "you@example.com" git config --global user.name "Your Name"

to set your account's default identity.Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'yanyaozhen@macbookpro.(none)')阿欧,报错了,查看给出的错误原因,发现是因为没有设置email和用户名,所以git不让我提交。git为什么要强制要求设置了这两个配置才能提交呢?因为git必须得知道是谁提交的,如果连谁提交的都不知道,那还怎么做版本管理啊,是不。所以我们根据提示设置下:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.email "youremail@example.com"yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.name "yourusername"yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$

好了,我们再提交下:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"

[master (root-commit) dab07d0] 提交a.txt1 file changed, 1 insertion(+)create mode 100644 a.txt发现已经可以提交成功了,提示一个文件被修改(就是我们的a.txt),一行被插入(就是我们唯一的一行“aaa”)。我们再运行下git status:

代码如下:yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch masternothing to commit, working directory clean提示我们当前没有东西要提交,当前工作目录是干净的,因为我们都提交到git了。好了,到这步后,git就可以完全跟踪已经被提交的文件了,以后,这个文件的任何修改,它都可以记录下来。比如某个人对项目私自修改了一些东西,项目管理者根据git的版本记录是一定可以找到是谁修改了哪些文件的。现在我们就可以把文件提交到远程服务器了。

七、当我们要提交git仓库中的内容到远程服务器时,我们必须得先成为远程服务器受信任的用户才行(服务器当然不允许所有人都可以推送内容,那样就乱套了)。这个时候,我们需要先在本地生成一个公钥,然后把公钥放到远程服务器的账户列表中。生成公钥的命令如下:

代码如下:ssh-keygen -t rsa -C "youremail@example.com"

如果你是windows用户,那么公钥生成的目录是C:\Users\用户名.ssh下,里面有两个文件 id_rsa 和 id_rsa.pub ,其中id_rsa.pub中的内容就是我们需要的公钥。如果你是Linux或者mac用户,那么在用户主目录下也会有一个.ssh目录,里面放着的是私钥和公钥。假设我们现在要把github作为远程推送服务器地址,那么,我们首先把公钥放在github的settings->SSH keys列表中(点击新建一个ssh key,title随意,把公钥的全部内容复制进行保存即可)。

八、现在我们可以给StudyGit项目在github上添加一个远程仓库了。在github上add new repository,名字我在这里也用StudyGit了(起其他名字也可以),建好后显示如下:

可以看到有一个ssh地址是git@github.com:onlyanyz/StudyGit.git,这个就是我们的远程git仓库地址了,一会我们就会把文件推送到这里。接下来,我们需要把本地git仓库关联到远程git仓库,操作如下:进入本地StudyGit根目录,执行如下命令:

代码如下:git remote add origin git@github.com:onlyanyz/StudyGit.git

这个命令的意思是,我给远程仓库(就是git@github.com:onlyanyz/StudyGit.git)起了个别名,叫origin(其实叫别的名字也可以,你只要知道这是别名就行,以后就用别名来操作远程库)。操作后,我们可以使用“git remote”命令来查看当前本地仓库关联了哪些远程仓库(它会列出每个远程库的简短名字。如果您之前会使用git clone命令的话,在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git默认使用这个名字来标识你所克隆的原始仓库)。

九、关联了远程仓库之后,我们就可以推送了。将本地仓库push到远程仓库的命令如下:

代码如下:git push origin master

命令解释如下:git push的语法为:git push <远程主机名> <本地分支名>:<远程分支名>该语法表示把本地分支名push到远程主机名的远程分支。我们可以看到刚才执行的语句并没有远程分支名(被省略了),如果省略远程分支名,则表示将本地分支推送到与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。所以刚才执行的语句的意思是,把本地的master分支推送到远程主机的master分支。关于git push命令以后还需要注意的地方:a.如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。例如:

代码如下:$ git push origin :master

该命令等同于如下指令:$ git push origin --delete master,表示删除远程主机的master分支。b.git push 有时候本地分支和远程分支名都可以省略,有时候连主机名也可以省略,这个现在就不细说了。c.如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push:

代码如下:$ git push -u origin master

好了,现在我们已经把StudyGit目录中的内容都推送到远程了,现在运行git status看下:

代码如下:~/Coding/Practice/StudyGit$ git status

On branch masternothing to commit, working directory clean工作目录还是干净的,接下来您就可以继续在本地进行创建文件->提交到暂存区->提交到本地仓库->push到远程仓库的过程啦!

将远程仓库克隆到本地下面我们来讲一个新的玩法,就是先有远程仓库,后有本地仓库,即把远程仓库“克隆(clone)”到本地。假设现在你的团队其他成员已经在git上建好了仓库,并且也push过代码,这个远程git仓库还叫“StudyGit”,有两个文件:a.txt和README.md,现在,您也要开始贡献代码了,那么,您首先需要把团队其他成员提交的所有东西都拉取到你的本地目录,这个时候就会用到“clone”命令了:

代码如下:git clone git@github.com:onlyanyz/StudyGit.git

只要执行这句指令,就可以把远程仓库的所有东西都拉取到本地工作目录了,当然生成的本地目录名和远程仓库名字是一样的。如果您现在查看下当前本地git仓库的状态,如下:

代码如下:yanyaozhen@macbookpro:~/Coding/StudyGit$ git status

On branch masterYour branch is up-to-date with 'origin/master'.nothing to commit, working directory clean命令回显表示,我的本地分支已经更新为最新的远程master分支了。此后,我们就可以按照“git快速入门之一”这篇文章所述进行添加代码并提交了。现在,让我们再看下刚才clone到本地的git项目,现在有两个文件,如下:

代码如下:yanyaozhen@macbookpro:~/Coding/StudyGit$ ll

total 16-rw-r--r-- 1 yanyaozhen staff 21B 11 19 00:04 README.md-rw-r--r-- 1 yanyaozhen staff 4B 11 19 00:04 a.txt接下来,假如A同学在github上的这个仓库中又新增了一个文件b.txt,那现在github远程仓库中就有三个文件(注意,现在本地仓库中的文件就已经与远程仓库不同了)。接下来,我们在本地继续我们的开发工作,假如新建了一个文件“c.txt”,现在,让我们来把"c.txt"文件加入暂存区,然后commit到本地仓库,这时,我们想把刚才的工作成果再push到远程,执行如下:

代码如下:yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master

To git@github.com:onlyanyz/StudyGit.git! [rejected] master -> master (fetch first)error: failed to push some refs to 'git@github.com:onlyanyz/StudyGit.git'hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changeshint: (e.g., 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.阿欧,报错了,懂点英文的同学可以从提示信息看出问题所在,因为我们的远程已经有更新了,我们在push到远程的时候,必须先把远程的改动拉到本地合并起来,才能再次提交我的修改。所以,以下的命令就出场了:

代码如下:$ git fetch origin master

该指令意思是从远程origin仓库的master主分支更新最新的版本到origin/master分支上。然后我们比对下当前本地master分支和origin/master分支的区别:

代码如下:$ git log -p master..origin/master

执行的回显结果会详细列出这两个分支的差异。然后,我们需要把origin/master分支上的内容合并到本地master分支:

代码如下:git merge origin/master

执行该指令后,可能会要求输入合并的理由,填写后,我们就合并成功了。这个时候,我们就可以再次push了:

代码如下:yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master

Counting objects: 5, done.Delta compression using up to 4 threads.Compressing objects: 100% (4/4), done.Writing objects: 100% (5/5), 543 bytes | 0 bytes/s, done.Total 5 (delta 2), reused 0 (delta 0)To git@github.com:onlyanyz/StudyGit.git 6b3662f..6036a05 master -> master表示push成功,现在你可以去github上看到我们在本地新建的b.txt文件啦!后记:有同学可能查了网上的资料,说“git fetch”和“git merge”指令可以合二为一,叫“git pull”,在此强烈建议大家使用分开的指令,因为“git pull”会直接合并,而不会等你确认,如果一旦合并错了,还是比较麻烦的。宁可慢一点,也别重头再来。

本文链接地址:https://www.jiuchutong.com/zhishi/278049.html 转载请保留说明!

上一篇:Win10如何去掉桌面图标有阴影?(Win10如何去掉桌面快捷方式的箭头)

下一篇:deepin怎么注销系统? deepin系统注销与切换用户的方法(deepin怎么删除账户)

  • magicbook和matebook区别(magicbookair)

    magicbook和matebook区别(magicbookair)

  • 华为p40pro能支持隔空操作吗(华为p40pro能支持无线充电吗)

    华为p40pro能支持隔空操作吗(华为p40pro能支持无线充电吗)

  • 苹果x厚度是多少(苹果x厚度不一样吗)

    苹果x厚度是多少(苹果x厚度不一样吗)

  • 京东换货需要几天(京东换货需要几天能到货)

    京东换货需要几天(京东换货需要几天能到货)

  • word中空白页删不掉(word中空白页删除不了怎么办)

    word中空白页删不掉(word中空白页删除不了怎么办)

  • 华为手机长截图怎么弄的(华为手机长截图手势操作)

    华为手机长截图怎么弄的(华为手机长截图手势操作)

  • 强行关机会对固态硬盘有损伤吗(强制关机会损坏固态硬盘吗)

    强行关机会对固态硬盘有损伤吗(强制关机会损坏固态硬盘吗)

  • 电脑固态是什么意思啊(移动硬盘固态和机械的哪个好)

    电脑固态是什么意思啊(移动硬盘固态和机械的哪个好)

  • 苹果7plus摄像头附近烫(苹果7plus摄像头多少钱)

    苹果7plus摄像头附近烫(苹果7plus摄像头多少钱)

  • wan一直闪没网络(wifi上的wan一直在闪)

    wan一直闪没网络(wifi上的wan一直在闪)

  • a1370苹果笔记本电脑是哪一年的(A1370苹果笔记本win7 摄像头驱动)

    a1370苹果笔记本电脑是哪一年的(A1370苹果笔记本win7 摄像头驱动)

  • 口述影像是什么功能(口述影像历史)

    口述影像是什么功能(口述影像历史)

  • 抖音为啥不能微信登录(抖音为啥不能微信支付啦)

    抖音为啥不能微信登录(抖音为啥不能微信支付啦)

  • vivo手机越来越卡怎么解决办法(vivo手机越来越烫怎么回事)

    vivo手机越来越卡怎么解决办法(vivo手机越来越烫怎么回事)

  • 亚马逊购物要关税吗(亚马逊购物关税怎么算)

    亚马逊购物要关税吗(亚马逊购物关税怎么算)

  • 快手打不开如何解决(快手打开不了)

    快手打不开如何解决(快手打开不了)

  • 蓝牙耳机power off中文意思(蓝牙耳机power off怎么开机)

    蓝牙耳机power off中文意思(蓝牙耳机power off怎么开机)

  • matlab2016a安装(matlab2016a安装不了)

    matlab2016a安装(matlab2016a安装不了)

  • 后台耗电应用怎么关掉

    后台耗电应用怎么关掉

  • 反向问号用键盘怎么打(反向问号怎么打搜狗输入法)

    反向问号用键盘怎么打(反向问号怎么打搜狗输入法)

  • iphone电池多少该换了(iphone电池容量多少算低)

    iphone电池多少该换了(iphone电池容量多少算低)

  • 闲聊如何撤销实名认证(闲聊怎么处理的)

    闲聊如何撤销实名认证(闲聊怎么处理的)

  • 华为荣耀10防水等级(华为荣耀防水性能怎么样)

    华为荣耀10防水等级(华为荣耀防水性能怎么样)

  • Windows自带的截图工具(Windows自带的截图)

    Windows自带的截图工具(Windows自带的截图)

  • uniapp 控制台警告 DevTools failed to load SourceMap: Could not load content for http://127.0.0.1问题解决(uniapp控制硬件设备)

    uniapp 控制台警告 DevTools failed to load SourceMap: Could not load content for http://127.0.0.1问题解决(uniapp控制硬件设备)

  • 百分百控股的企业是否负连带责任
  • 没有增值税发票怎么做账
  • 期末资产负债
  • 工会基金是扣个人还是扣企业的
  • 企业长期贷款具备什么条件
  • 资产负债表存货怎么填列
  • 分给当期投资者利润如何做会计分录?
  • 个人独资公司可以控股其他公司吗
  • 支付结算有哪些工具
  • 收到政府补助的固定资产的账务处理
  • 企业预缴所得税的比例要求
  • 房地产企业增值税预缴
  • 企业所得税季度申报填写示例
  • 不符合规定(未带编码或编码选择错误)的发票,纳税人该怎么做?
  • 企业所得税如何计算
  • 腾讯电脑管家游戏模式
  • 华为mate pro翻转静音
  • 苹果系统怎么修复
  • 集团公司股份
  • 房产税具体税种包括哪些
  • psr.exe是什么意思
  • 个体户升一般纳税人分红怎么交税
  • 教你如何正确选择轮胎
  • 鸿蒙系统怎样开启5G
  • 简单才能极致
  • 发票未到先付款的账务处理
  • 怎么打开win11的控制面板
  • php数组函数输出《咏雪》里有多少"片"字
  • 增值税纳税申报首先要稽核比对
  • 职工教育经费超过扣除限额的时候调增还是调减
  • 苹果电脑字体文件怎么拖出来
  • vue移动和pc两套代码
  • 向客户收费
  • 工会经费相关问题有哪些
  • php引用类型
  • 唱吧地图
  • setdo指令
  • php取字符串
  • php制作的大型网站
  • 房租的计算方式
  • 企业购买机器设备没有发票怎么办
  • vue新手教程
  • 减资的程序
  • 税务局返还手续费
  • 汽车修理厂利润
  • 辞退福利为什么不计入产品成本
  • 既开发票又开收据是有财务风险吗?
  • 增值税会计账务处理例题
  • 未收到货款但发货怎么办
  • c#连接access数据库实例
  • 工程服务费税率是多少2023
  • 保险再保业务
  • 母公司无偿给子公司房屋使用谁交房产税呢
  • 纳税人将购买的货物分配给股东,因该货物购买时已缴纳
  • 评估价与成交价差距叫做什么
  • 在建工程进项税额转出会计分录
  • 会计凭证装订时间法律规定
  • 企业营运能力分析
  • 简述账套管理的主要内容
  • mysql从5.7升级至8.0
  • windows软件授权服务报告无法激活计算机
  • linux常用命令sed
  • w10英雄联盟老是崩溃
  • Windows 7(x64)下安装Ubuntu12.4的方法
  • svchost占用
  • 在对linux系统中dir
  • win7旗舰版系统激活密钥
  • unix怎么操作
  • Android 执行油猴脚本
  • Node.js中的全局对象有
  • linux pymol
  • nodejs怎么读
  • 神奇宝贝
  • unity如何成一组
  • jquery控制台输出
  • 北京天然气收费标准2024年
  • 深圳如何举报税务违法
  • 企业所得税一年算几次
  • 回迁房办房产证需要交多少钱
  • 城镇土地使用税的计算公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设