美文网首页Python
Git与GitHub入门总结

Git与GitHub入门总结

作者: 2576710931dd | 来源:发表于2019-09-19 12:04 被阅读0次
    GitHub
    全球最大男性同性交友真人聊天网站
    本人GitHub原文地址:https://github.com/BioAIEvolu/GitHub_Learning

    Git与GitHub入门笔记

    先了解Git、GitHub

    • git:团队协作开发中,大部分都会用到版本控制软件,比如Git、Svn等。Git是一个分布式版本控制系统,让程序员团队能够协作开发项目,Git帮助大家管理为项目所做的工作,避免一个人所做的修改影响其他人所做的修改。你在项目中实现一个新功能的时候,Git将跟踪你对每个文件所做的修改。确定代码可行后,你将提交所做的修改,而Git将记录项目最新的状态,如果你犯了错,想撤销所做的修改,可轻松的返回以前的任何可行状态。
    • GitHub:是用于版本控制和协作的代码托管平台,它可以让您和其他人在任何地方协同工作。GitHub 可以托管各种Git版本库,并提供一个web界面。GitHub上的项目都存储在仓库中,后者包含与项目相关联的一切:代码,项目参与者的信息,问题和bug报告等。
      总结:Github是代码托管平台,是协作的工具;而Git是版本控制工具。Git不需要联网,在本机就可以使用。当然,Git和Github双剑合璧,是最顺畅的。

    Git与GitHub的作用:

    GitHub的分支与合并
    简单来说:就是从主分支Master中分出分支Feature,然后再合并merge在一起达成代码迭代更新的过程
    Github用Git做版本控制 利用Git+Github进行团队协作开发
    一些 GitHub 的基本概念
    • Repository
      仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository ,如果你开源的项目多了,你就拥有了多个 Repositories 。

    • Issue
      问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。

    • Star
      这个好理解,就是给项目点赞,但是在 GitHub 上的点赞远比微博、知乎点赞难的多,如果你有一个项目获得100个star都算很不容易了!

    • Fork
      这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目,这个时候他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支,分支的概念后面会在讲解Git的时候说到),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。

    • Pull Request
      发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人就可以收到这个请求,这个时候他会仔细review你的代码,并且测试觉得OK了,就会接受你的PR,这个时候你做的改进原有项目就会拥有了。

    • Watch
      这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。

    • Gist
      有些时候你没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候 Gist 就派上用场了!

    分支的概念

    • master分支,即主分支。任何项目都必须有个这个分支。对项目进行tag或发布版本等操作,都必须在该分支上进行。
      develop分支,即开发分支,从master分支上检出。团队成员一般不会直接更改该分支,而是分别从该分支检出自己的feature分支,开发完成后将feature分支上的改动merge回develop分支。同时release分支由此分支检出。

    • release分支,即发布分支,从develop分支上检出。该分支用作发版前的测试,可进行简单的bug修复。如果bug修复比较复杂,可merge回develop分支后由其他分支进行bug修复。此分支测试完成后,需要同时merge到master和develop分支上。

    • feature分支,即功能分支,从develop分支上检出。团队成员中每个人都维护一个自己的feature分支,并进行开发工作,开发完成后将此分支merge回develop分支。此分支一般用来开发新功能或进行项目维护等。

    • fix分支,即补丁分支,由develop分支检出,用作bug修复,bug修复完成需merge回develop分支,并将其删除。所以该分支属于临时性分支。

    • hotfix分支,即热补丁分支。和fix分支的区别在于,该分支由master分支检出,进行线上版本的bug修复,修复完成后merge回master分支,并merge到develop分支上,merge完成后也可以将其删除,也属于临时性分支。

    更多:

    “开发者神器”的GitHub

    GitHub 官方出了一个交互式教程

    如何正确使用git和github

    GitHub网站注册与使用教程

    教程里面,最推荐的是官方的Hello World是最权威的

    Git的本地安装与使用

    Linux系统安装GitHub比较容易,不再这里讨论了
    重点看下怎么在windos系统下安装Git

    Git BASH的下载安装

    Git安装教程(windows)
    Windows下Git的下载与安装

    Git命令行的使用

    git在本地git中的使用其实跟在GitHub网页上操作的步骤对的一样的

    Git本地配置

    由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置

    打开Git BASH:

    1. 首先在本地创建SSH Key
    • 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令
    • 如果没有的话,打开命令行,输入如下命令:重新打开GitBash 输入 ssh -keygen 然后回车回车
    设置SSH

    这样就生成了SSH.
    在 C:\Documents and Settings\Administrator.ssh 本地的这个文件夹中
    id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人


    id_rsa.pub是公钥
    • 登录Github 在右上角打开settings 中的SSH keys


      SSH Keys
    • 点击 NEW SSH tittle随便填 将 id_rsa.pub的内容复制到key文本框内 添加!


      添加SSH Key
      成功
    • 为了验证是否成功,在git bash下输入:
    $ ssh -T git@github.com
    

    如果是第一次的会提示是否continue,输入yes就会看到:

    You've successfully authenticated, but GitHub does not provide shell access 
    

    这就表示已成功连上github。

    1. 设置你的用户名和电子邮件
      github每次commit都会记录他们
    git config --global  user.name "Username"
    git config --global  user.email "Username@example.com"
    

    git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    创建项目

    在github网站上创建一个新的repositoy

    • 填写项目名称,描述等
    • 创建完成后,跳转到下面页面
    • 记住这个HTTPS地址

    在Git BASH命令行通过mkdir和cd命令,新建并且进入自己的项目文件夹中,然后按顺序输入命令:

    • 创建README.md文件
      touch README.md
      
      标准README.md
    • 初始化git仓库
      git init
      

    完成初始化后,项目文件夹下多出一个隐藏文件夹.git。

    • 将项目的所有文件添加到仓库中

      git add .
      

      每次增加、删除和修改文件都需要执行此条命令,然后git stautus看看情况

      将项目中未被跟踪的文件都加入到仓库中,它不提交这些文件,而只是让git开始关注他们。

      如果只想添加某个特定的文件,只需要将.换成特定的名称即可。

    • 提交注释备注

      git commit -m "有意义的注释语句"
      

      拍摄项目的快照。标志-m 让Git接下里的消息(“Started project")记录到项目中的历史记录中,输出表明我们在分支master 上,而且有一个文件被修改了,可能需要重新配置自己的账号或者名字,再执行上面的代码就会成功

      -a参数表示将所有修改了的文件都加入当前提交中。命令git commit -a只对状态为M的文件有用,而对新增而为添加的问题是不起作用的,因为我们新添加的文件NewCreateFile仍然处于 Untracked 状态中。 (要先执行git add .

    • 关联自己的仓库url地址
      回到刚刚GitHub页面,找到自己的url地址

      git remote add origin https://自己的仓库url地址
      

      与github(远程仓库)建立联系

    • 将本地库上传到github服务器上对应的分支中

      git push -u origin master
      

      执行完毕后,如果没有异常,会等待几秒,然后跳出一个让我们输入Username 和password的窗口,我们只需要输入个人的github登录账号和密码即可。

      把本地库study的所有内容推送到远程仓库(也就是Github)上,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

      至此就完成了将本地项目上传到Github的整个过程。(PS:加入创建的项目文件夹里面含有VScode中项目的Python代码,则VScode的整个就被上传到GitHub了)

    • 检查状态 git status
      检查日志和分支信息

    • 查看提交历史 git log
      每次提交的时候,Git都会生成一个包含40字符的独一无二的引用ID,它记录提交是谁执行的,提交的时间以及提交的指定消息,并非在任何情况下你都需要所有的这些信息,因此Git提供一个选项,让我们能够打印提交历史条目的更简单的版本。

    $ git log --pretty=oneline
    5d6cecad80427924b94b14c6fd2bb82a4fa86840 (HEAD -> master) Started project
    

    标志 --pretty=oneline 指定显示一项最重要的信息,提交的引用ID以及为提交记录的消息。

    删除项目

    在GitHub -->点入需要删除项目 -->点开setting -->将滚动条滑到底部,找到Danger Zone下的Delete this repository -->点击,会弹出一个警告框,将该项目名称输入进行确认 -->输入密码确认 -->删除成功后,会重新回到个人主界面提醒项目删除成功

    工作流程

    三棵树

    Git本地仓库实际上由三个tree组成

    • 工作目录,持有实际文件
    • 暂存区,临时保存改动
    • HEAD,指向最后一次提交的结果

    命令行操作

    本地提出更改,添加至暂存区
    git add <filename>
    git add *
    
    将改动实际提交至HEAD
    git commit -m "代码提交信息"
    
    • 二次提交
      git commit -am "备注文字"   #合并git add 和 git commit 操作(适用于比较小的变更)
      
      标志-a 让Git 将仓库中所有修改了的文件都加入当前提交中,(如果我们两次提交之间加入了新文件,我们执行get add .操作,将新文件加入到仓库中)标志-m让Git咱提交历史中记录一条消息。
    • 查看提交状态
      1. git status—————显示版本库里 中间状态(已经 add操作 还没 commit操作 / 或commit后修改过)的文件
      2. git log—————— 一系列单独提交的历史。
      • 后加 -p 查看前后差异;
      • 后加文件/目录名查看指定文件/目录相关的日志(当前面出现个冒号无法输入命令时,按「q」键)
      1. git show 提交码(50fd4db21ca586dacf547b23b14374e942b81469)–查看特定提交的更详细的信息(不写提交码默认显示最近一次的)
        git show-branch --more=10(git show-branch)——————–当前开发分支简洁的单行摘要,–more=10表示最新的10个版本(即提交日志)
    推送改动

    你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

    $ git push origin (指定分支名称)
    
    如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
    git remote add origin <server>
    

    如此你就能够将你的改动推送到所添加的服务器上去了。

    克隆

    git clone 是用来从已有的 Git 仓库克隆出一个新的镜像仓库到本地的。
    有些时候需要带着用户名和密码进行clone

    • 创建本地仓库的克隆版本:

      git clone /path/to/repository
      
    • 创建远端服务器上的克隆版本:

      git clone username@host:/path/to/repository
      

      该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

      $ git clone <版本库的网址> <本地目录名>
      

      git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。

      $ git clone http[s]://example.com/path/to/repo.git/
      $ git clone ssh://example.com/path/to/repo.git/
      $ git clone git://example.com/path/to/repo.git/
      $ git clone /opt/git/project.git 
      $ git clone file:///opt/git/project.git
      $ git clone ftp[s]://example.com/path/to/repo.git/
      $ git clone rsync://example.com/path/to/repo.git/
      

      SSH协议还有另一种写法:

      $ git clone [user@]example.com:path/to/repo.git/
      

      通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合。各种协议优劣的详细讨论请参考官方文档

      使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

      • 克隆一个指定分支到本地
      git clone -b 分支名 <版本库的网址>
      

      更多:

      git clone -b 相关

      git clone几种可选参数的使用与区别

      git clone 子模块

      加快git clone 几十倍速度的小方法 (30KB vs 2M)

      Git基本使用方法——clone项目到本地

    分支

    分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是"默认的"分支。在其他分支上进行开发,完成后再将它们合并到主分支上。


    分支
    • 创建一个叫做"feature_x"的分支,并切换过去:
      git checkout -b feature_x
      
    • 切换回主分支:
      git checkout master
      
    • 把新建的分支删掉:
      git branch -d feature_x
      
    • 将分支推送到远端仓库,让其他人可见:
      git push origin <branch>
      
    • 如果文件删除错了,也可以用git checkout -- 文件名还原回来。其实就是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除
    合并与更新

    在分支修改完代码后,就可以合并代码到master上

    • 在合并改动之前,你可以使用如下命令预览差异:

      git diff <source_branch> <target_branch>
      

      查看工作树和暂存区的差别:git diff
      查看工作树和最新提交的差别:git diff HEAD
      “+”号标出的是新添加的行,被删除的
      行则用“-”号标出:

      diff --git a/README.md b/README.md
      
      diff
    • 更新你的本地仓库至最新改动(远端服务器-->本地计算机的更新):
      多人开发时,在push前一定要先更新本地仓库至最新改动,避免许多不必要的冲突

      git pull
      

      以在你的工作目录中 获取(fetch)合并(merge) 远端的改动。

    • 合并其他分支到你的当前分支(例如 master):(本地计算机)
      首先切换回master分支:git checkout master
      然后合并子分支

      git merge <branch>
      

      加上 –no-ff参数 创建和并提交,来在历史记录中明确记录下本次分支合并

       git merge --no-ff <分支名>  
      
    • 在这两种情况下,git 都会尝试去自动合并改动。但可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:

      git add <filename>
      
    标签

    为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:

    git tag 1.0.0 1b2e1d63ff
    

    1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:

    git log
    

    你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。

    替换本地改动
    • 假如操作失误,可以使用如下命令替换掉本地改动:

      git checkout -- <filename>
      

      此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

      注意:对未暂存的修改文件进行回滚的操作命令生效了,再想找回被丢弃的内容就找不回了,此操作是不可逆

    • 假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:

      git fetch origin
      git reset --hard origin/master
      
    • 另外,对已经暂存的文件执行以下命令,回到了之前暂存的状态。

      git reset HEAD <文件名> 
      

    更多Git操作命令

    • git rm:从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb'
    • git revert:如果有远程库存在:使用 git revert <commit_id>操作实现以退为进git revert 不同于 git reset 它不会擦除"回退"之后的 commit_id ,而是正常的当做一次"commit",产生一次新的操作记录,所以可以push,不会让你再pull

    还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值

    • git config --list: 查看配置信息
    • git log 文件名:可以查看该文件所有的修改记录
      • --pretty=oneline参数可以简洁的显示commit和说明,注意--pretty=oneline参数要写在具体文件前。
      • git log --graph 以图表形式查看分支
    • git reset 命令用于改变版本,
      在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
      • 回滚到上一个版本

        git reset --hard HEAD^
        
      • 想回到最新的版本,取消这次回滚

        git reset  --hard  "commit  id"
        

        这样就可以去到指定commit id的版本。

        版本号没必要写全,前几位就可以了,Git会自动去找,只要保证id唯一就行。

    • git reflog:如果找不到已经删除版本的commit id的话,可以用git reflog显示所有版本的commit 记录。git log不能查看已经删除的commit,但是git reflog可以。
    Git远程操作命令
    Git远程操作
    • git clone
    • git remote
    • git fetch
    • git pull
    • git push
    Git Remote

    本地是配了github的ssh-key的,所以也是支持ssh的链接的。下方我们将根据 git remote 远程仓库操作来添加上ssh的仓库地址。

    查看和修改远端地址

    为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。

    • 不带选项的时候,git remote命令列出所有远程主机。

      $ git remote
      origin
      
    • 使用-v选项,可以参看远程主机的网址。

      $ git remote
      origin  https://github.com/BioAIEvolu/GitHub_Learning.git (fetch)
      origin  https://github.com/BioAIEvolu/GitHub_Learning.git (push)
      

      上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。

    • 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

      $ git clone -o jQuery https://github.com/jquery/jquery.git
      $ git remote
      jQuery
      

      上面命令表示,克隆的时候,指定远程主机叫做jQuery。

    • git remote show命令加上主机名,可以查看该主机的详细信息。

      $ git remote show origin
      
    • git remote add命令用于添加远程主机。

      $ git remote add <主机名> <网址>
      
    • git remote rm命令用于删除远程主机。

      $ git remote rm <主机名>
      
    • git remote rename命令用于远程主机的改名。

      $ git remote rename <原主机名> <新主机名>
      
    git fetch
    • 一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

      $ git fetch <远程主机名>
      

      上面命令将某个远程主机的更新,全部取回本地。

      git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。

      默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

      $ git fetch <远程主机名> <分支名>
      

      比如,取回origin主机的master分支。

      $ git fetch origin master
      

      所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。

    • git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支

      $ git branch -r
        origin/master
      
      $ git branch -a
        feature
      * master
        remotes/origin/master
      

      上面命令表示,本地主机的当前分支是master,远程分支是origin/master。

      取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。

      $ git checkout -b newBrach origin/master
      

      上面命令表示,在origin/master的基础上,创建一个新分支。

    • 此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。

      $ git merge origin/master
      # 或者
      $ git rebase origin/master
      

      上面命令表示在当前分支上,合并origin/master

    git pull
    • git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

      $ git pull <远程主机名> <远程分支名>:<本地分支名>
      

      比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

      $ git pull origin next:master
      

      如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

      $ git pull origin next
      

      上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge

      $ git fetch origin
      $ git merge origin/next
      

      在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。

      Git也允许手动建立追踪关系。

      git branch --set-upstream master origin/next
      

      上面命令指定master分支追踪origin/next分支。

      如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

      $ git pull origin
      

      上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。

      如果当前分支只有一个追踪分支,连远程主机名都可以省略。

      $ git pull
      

      上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

      如果合并需要采用rebase模式,可以使用--rebase选项。

      $ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
      

      如果远程主机删除了某个分支,默认情况下,git pull不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。

      但是,你可以改变这个行为,加上参数 -p就会在本地删除远程已经删除的分支。

      $ git pull -p
      # 等同于下面的命令
      $ git fetch --prune origin 
      $ git fetch -p
      
    git push
    • git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。

      $ git push <远程主机名> <本地分支名>:<远程分支名>
      

      注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

    • 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

      $ git push origin master
      

      上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

    • 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

      $ git push origin :master
      # 等同于
      $ git push origin --delete master
      

      上面命令表示删除origin主机的master分支。

    • 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

      $ git push origin
      

      上面命令表示,将当前分支推送到origin主机的对应分支。

      如果当前分支只有一个追踪分支,那么主机名都可以省略。

      $ git push
      
    • 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push

      $ git push -u origin master
      

      上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

    • 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

      $ git config --global push.default matching
      # 或者
      $ git config --global push.default simple
      
    • 还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用--all选项。

      $ git push --all origin
      

      上面命令表示,将所有本地分支都推送到origin主机。

      如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

      $ git push --force origin 
      

      上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

    • 最后,git push不会推送标签(tag),除非使用--tags选项。

      $ git push origin --tags
      

    git命令总结

    git命令总结
    git技术栈

    参考文章

    相关文章

      网友评论

        本文标题:Git与GitHub入门总结

        本文链接:https://www.haomeiwen.com/subject/cbyxuctx.html