zoukankan      html  css  js  c++  java
  • 把本地仓库数据push到github远程仓库

    1、首先为了防止每次都需要输入GitHub账号密码进行数据push,我们采用配置SSH的方式

    先在本地初始化一个仓库

     

    2、如果你没有 Github 可以在官网 https://github.com/注册。

    由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:

    使用以下命令生成 SSH Key:(后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。)

    ssh-keygen -t rsa -C "youremail@example.com"

    成功的话会在C:Users(你登陆的用户名).ssh下会有一个id_rsa.pub的文件

    .pub结尾那个为公钥,以文本方式打开它,复制全部内容,粘贴到你的GitHub上面

    左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。

     

     添加成功之后显示:

    验证是否连接成功

    $ ssh -T git@github.com
    The authenticity of host 'github.com (52.74.223.119)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes                   # 输入 yes
    Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
    Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access. # 成功信息

    3、在github上创建一个仓库

     

    4、创建成功后,显示如下信息

    上面这张图要注意,SSH后面对应一个链接,HTTPS后面也对应一个链接。我们要使用SSH后面对应那个链接(也就是用git@github.com:tianqixin/runoob-git-test.git)

    使用HTTPS那个你在使用github远程仓库的时候会弹出来一个框,让你登录GitHub

    SSH也可以在这

    5、把工作区的资源文件提交到暂存区

    这里我们的工作区就是刚才你使用git init命令初始化之后那个目录

    你先弄几个文件放在这个目录下

    然后我们使用

    git add ./*   #把当前目录下全部文件都放到暂存区
    git add (具体文件名) #把某文件存放到暂存区中

    之后需要提交commit,把暂存区文件放到版本库中

    git commit -m "添加 README.md 文件"        # 提交并备注信息

    远程连接到GitHub中的某库

    git remote add origin git@github.com:tianqixin/runoob-git-test.git

    这个origin是我们给这个远程连接的库起的一个名字,你使用git remote命令可以查看远程连接的所有库的在本地的名字,加上-v选项会显示更多信息

    $ git remote
    origin
    $ git remote -v
    origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
    origin    git@github.com:tianqixin/runoob-git-test.git (push)

    然后把本地仓库的master提交到远程仓库(本地化名为origin)

    git push -u origin master

    6、git push出现的问题

    有时候你用完git push之后会出现下面情况

    $ git push -u origin master
    Everything up-to-date
    Branch 'master' set up to track remote branch 'master' from 'origin'.

    刚开始我以为没出现红字就不算错误,但是我push之后就和没有操作一样,远程仓库没变化,我就一直找不到我操作哪里出错,把输出信息一搜才知道这就是报错了。。。

    解决办法:

    1、移除
    git remote rm origin
    2、再次连接
    git remote add origin ‘仓库地址’

    7、出现错误 failed to push some refs to ‘’

    $ git push -u origin master
    To github.com:qweqwe/Test.git
     ! [rejected]          master -> master (fetch first)
    error: failed to push some refs to 'github.com:qweqwe/Test.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    解决:

    本质原因:因为远程库与本地库不一致造成的,那么我们把远程库同步到本地库就可以了
    一般问题:发生在本地库提交到远程库的时候。
    一般原因:当我们在github版本库中发现一个问题后,你在github上对它进行了在线的修改;或者你直接在github上的某个库中添加readme文件或者其他什么文件,但是没有对本地库进行同步。这个时候当你再次有commit想要从本地库提交到远程的github库中时就会出现push失败的问题。
    我的问题:本地新建一个文件夹,打开git bash,输出git init初始化一个本地库,然后git pull了远程库,修改后提交。
    我的原因:远程库pull下来后,就是一个完整的库了,而我当初新建了个库,而且用这个本地库(与puul下来的不是一个),和远程库同步。
    我的解决方法:进入pull下来的库的文件夹,打开git bash,并push,就可以了。
     
    解决方案:这个问题是因为远程库与本地库不一致造成的,那么我们把远程库同步到本地库就可以了。
    使用指令:git pull --rebase origin master
    这条指令的意思是把远程库中的更新合并到本地库中,-rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。

    git pull –rebase origin master意为先取消commit记录,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),之后同步远程库到本地,最后合并补丁到本地库之中。

     接下来就可以把本地库push到远程库当中了。

    8、git push --rebase作用

    git pull = git fetch + git merge FETCH_HEAD 
    git pull --rebase =  git fetch + git rebase FETCH_HEAD

     那么来看看git rebase,  在master执行git rebase tmp,操作之后的分支如下:

    二者对比可知,rebase没有产生新的节点,使用rebase的git演进路线(提交树)是一直向前的,这样在版本回退时也很容易,用merge的git路线是跳跃的,如果版本回退你也找不到自己想要的版本,如果在merge时出现了冲突那就麻烦了,当前merge就不能继续进行下去,需要手动修改冲突内容后,add,commit, push. 而rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后, 再执行 git rebase –continue 继续操作,再git push.

    8、git的一些操作命令

    1)git show branch:file

    解释:

    Where branch can be any ref (branch, tag, HEAD, ...) and file is the full path of the file. To export it you could use

    2)git show branch:file > exported_file

    解释:

    A simple, newbie friendly way for looking into a file: git gui browser <branch> which lets you explore the contents of any file.

    It's also there in the File menu of git gui. Most other -more advanced- GUI wrappers (Qgit, Egit, etc..) offer browsing/opening files as well.

    9、git add permission denied

    git add .

    当执行这步操作的时候,发现有permission denied的提示,这里报错的可能性

    1)文本作为只读性文本,需要修改文件夹属性

    2)就是ide 编辑器占用,没有保存等可能相关的操作都有可能致使我们提交不上我们的代码

    这时候就需要关闭ide 当前所使用的编辑器,然后重开就可以,再继续往下做git的操作(我的是这个原因)

    10、git push -u origin master 中-u的作用

    加了参数-u后,以后即可直接用git push 代替git push origin master

    11、git push <远程主机名> <本地分支名>  <远程分支名>

    原文:https://www.cnblogs.com/qianqiannian/p/6008140.html

    git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。

    11.1 git push origin master

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

    11.2 git push origin :refs/for/master

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

    11.3 git push origin

       如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

    11.4 git push

      如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

    11.5 git push 的其他命令

      这几个常见的用法已足以满足我们日常开发的使用了,还有几个扩展的用法,如下:

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

          不带任何参数的git push,默认只推送当前分支,这叫做simple方式,还有一种matching方式,会推送所有有对应的远程分支的本地分支, Git 2.0之前默认使用matching,现在改为simple方式

          如果想更改设置,可以使用git config命令。git config --global push.default matching OR git config --global push.default simple;可以使用git config -l 查看配置

        (2) git push --all origin 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项

        (3) git push --force origin git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令。

        (4) git push origin --tags //git push 的时候不会推送分支,如果一定要推送标签的话那么可以使用这个命令

    11.6 关于 refs/for

      // refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

    参考链接:https://www.cnblogs.com/Rainingday/p/12364690.html

         https://www.runoob.com/git/git-remote-repo.html

         https://blog.csdn.net/yao_hou/article/details/108178717

         https://www.cnblogs.com/yiduobaozhiblog1/p/9125465.html

         https://www.cnblogs.com/qianqiannian/p/6008140.html

         http://stackoverflow.com/questions/7856416/view-a-file-in-a-different-git-branch-without-changing-branches

  • 相关阅读:
    SecureCRT的SFTP在Windows与Linux之间传输文件
    VBS基础篇
    VBS数组函数学习实例分析
    vbs操作txt文本文件常用方法(函数)
    VBS基础篇
    CF91B Queue(单调队列+二分)
    CF1343D Constant Palindrome Sum(差分)
    CF1336C Kaavi and Magic Spell(区间dp)
    AcWing255 第K小数(整体二分)
    P3515 [POI2011]Lightning Conductor (四边形不等式优化)
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15010887.html
Copyright © 2011-2022 走看看