• 廖雪峰老师git教程笔记


    1. 创建版本库 

      命令:git init

    2. 提交文件      

      命令: git add <fileName>  

          git add .       //增加所有文件

                       git commit -m "提交备注信息"   

                       git commit <fileName> -m"只提交file1" 提交指定文件

    3. 查看提交记录日志 

          命令:git log

                       git log --pretty=oneline    

    $ git log --pretty=oneline
    aeeebd9b1c514fe6d922284aa9e20893c33d8502 (HEAD -> master) 新增第三行
    7decb271aa65f74bbe3ff59ef9ec7be02cda2fe1 新增一行
    d2a4bf09538d3991cc879f07864ceaa59cc78af7 add file1.txt

    注:前面为git版本号
    $ git log --oneline 也可以显示日志,只不过前面版本id不是全id
    如 $ git log --oneline d2a4bf0 (HEAD -> master) add file1.txt

      如果提交的历史纪录很长,回车会逐步显示,输入q可以退出

    4. 还原到上个版本 

      git reset --hard HEAD^ 后面^代表第几个版本 ,^^代表还原到pre 2版本

           git reset --hard HEAD~100  //还原到前100个版本  

    5. 回退到指定版本

      git reset --hard commit_id(可以不写全)  如 git reset --hard d2a4bf

    6.查看所有操作命令 

      git reflog

    7. 撤销修改  git checkout -- <fileName>

                         只是修改了工作区的readme.txt还未add,可以直接git checkout  -- readme.txt 文件会撤销修改

                         已经add后使用git reset HEAD readme.txt 然后git checkout -- readme.txt 文件会撤销修改

                       

      只要没有提交 都可以使用git checkout -- <fileName>还原,已经commit的需要使用git resest --hard HEAD^版本回退 

    8. 文件删除   

           删除命令如下:

           rm <fileName>  类似直接在文件夹中删除

           git rm <fileName>

           git commit -m "message"

      误删时只要没有提交 都可以使用git checkout -- <fileName>还原,已经commit的需要使用git resest --hard HEAD^版本回退, git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

       

       1).批量删除多个文件可以使用上述方法提交,但过于繁琐,首先需要清楚下面命令意思:   

              git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。 

              git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写) 

              git add -A :是上面两个功能的合集(git add --all的缩写) 

            故一次性删除多个文件,可以使用命令:

            git add -A

            git commit -m 'msg'

      2).删除文件夹:

           git rm -rf <文件夹名>

          git add -A

     9.远程仓库  

      第1步:创建SSH Key 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

           第2步:登录github -->setting-->ssh keys   粘贴id_rsa.pub内容

    注:GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送

    10.添加远程库

         在github上新建repository,用来同步关联本地repository,如在github创建learngit库使用下面命令关联本地库

         命令:$ git remote add origin git@github.com:你的git账号/learngit.git

         然后推送本地库内容到远程库,命令:$ git push -u origin master 【把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。】

         第一次推送后,每次本地库提交后,都可以使用 $ git push origin master命令同步推送到远程库。

         删除与远程库的关联 git remote rm origin

    11.从远程库克隆

        GitHub远程库详情页复制remote url(远程库连接)然后使用命令:$ git clone git@github.com:git账号/库名称.git     

        $ git clone git@github.com:seanzhang1988/clonefromgithub.git  

        或 

        $ git clone  https://github.com/seanzhang1988/CloneFromGitHub.git

        

    12. 分支

        git 默认一个分支master,可以创建分支分支提交不影响master,分支提交完毕后可以合并master并可以删除新创建的分支

          创建分支:git branch dev

          切换分支:git checkout dev

          上述两个可以合并 git checkout -b dev

          查看当前分支:git branch 

          合并分支:git merge dev  (dev分支工作结束后master合并)

          删除分支:git branch -d dev

          合并时保存分支信息  $ git merge --no-ff -m "merge with no-ff" dev

    13.bug分支           

      出现bug后,可以新建临时分支处理bug,处理完毕后合并并删除临时分支。但是当你正在dev分支处理别的任务且还未完成,此时让你来处理bug又该如何操作?git提供stash功能git stash,即暂时存储dev分支,然后切换master分支创建bug分支,bug分支修改完毕提交后合并并删除bug分支,再继续dev分支的工作,此时使用命令:$ git stash pop 恢复dev正在进行的工作提交后合并会显示bug分支修改的内容和dev分支内容。

    14.多人协作

      查看远程库信息 git remote 或者 git remote -v

           推送本地分支到远程  git push origin dev

           场景:A创建dev分支修改后提交到远程,如果B也想在dev上修改东西必须创建远程origindev分支到本地,命令:git checkout -b dev origin/dev,有可能A的最新提交和B有冲突,B须使用git pull拉取最新的提交,然后在本地合并解决冲突后推送。拉取失败原因是没有指定本地dev分支与远程origin/dev分支的链接(specify which branch you want to merge with),命令:git branch --set-upstream-to=origin/dev dev,然后再git pull. 拉取成功后合并有冲突须手动解决,然后在提交push.

    15.标签管理

      首先切换到需要打标签的分支然后git tag <标签名>,标签都是打在commit上的,使用命令git log --pretty=oneline --abbrev-commit查找commit id,然后 git tag <标签名> commit id打标签,如:git tag v0.9 76afcc2,使用命令 git show <tagName> 查看标签信息。命令git tag -a<tagName> -m "标签描述",可以给标签添加解释信息。

    删除标签:git tag -d v0.1

    推送标签到远程:git push origin <tagName> 或一次性推送全部标签 git push origin --tags

    删除已推送远程的标签:git tag -d v0.1(先删除本地),git push origin :refs/tag/v0.1(再删远程)。

    16.使用GitHub

      在GitHub上点击fork就可以在自己账号下自动创建相应仓库,这样我们可以修改推送自己的仓库,如果直接克隆别人的库到本地,我们没有权限推送修改,但是可以在github上发起pull request请求。

    17.使用Gitee 码云

       1.上传自己的SSH公钥,用户主目录 .ssh/id_rsa.pub 文件内容粘贴

       2. gitee上新建项目hk001

            3. 新建文件夹hk001右键git bash,使用命令git init新建本地仓库,项目代码粘贴到hk001

            4. 本地库代码提交

            5. 关联远程库,git remote add origin git@gitee.com:gitee账号/hk001.git

            6. 推送远程库,git push  -u origin master

            注意:如果推送失败需要先拉取远程库git pull,拉取如果报错:fatal:refusing to merge unrelated histories可以使用命令:git pull origin master --allow-unrelated-histories,然后再git pull再推送。

           推送处理过程:

                                 

               git支持关联多个远程库,本地库既可以关联github也可以关联gitee. 注意远程库名称不是origin

       step1.关联github远程库:git remote add github git@github.com:账号/hk001.git

               step2.关联gitee远程库:  git remote add gitee   git@gitee.com:账号/hk001.git

               step3. 推送远程库:         git push github master  git push gitee master

     18.忽略特殊文件

        项目中有些文件不需要推送到远程库,可以在git本地库根目录创建 .gitignore文件,然后把要忽略的文件名写进去,git会自动忽略这些文件。https://github.com/github/gitignore 提供了各种配置文件,里面有visualstudio.gitignore把该文件放入项目根目录。 然后推送到GitHub.  

         命令:git add -f <fileName> 可以强制添加被 .gitignore忽略的文件

        

        19.实战修改文件后推送远程

           1.查看状态

      $ git status

      On branch master
      Your branch is up to date with 'origin/master'.

      nothing to commit, working tree clean


      2.查看当前分支
      $ git branch
      * master

      3.创建工作分支
      $ git checkout -b Feat_sean
      Switched to a new branch 'Feat_sean'

      4.修改文件后加入暂存区
      $ git add README.md

      5.提交文件
      $ git commit -m "modified README.md"
      [Feat_sean be12fa6] modified README.md
      1 file changed, 1 insertion(+), 6 deletions(-)

      6.推送到远程
      $ git push -u origin Feat_sean
      Counting objects: 3, done.
      Delta compression using up to 4 threads.
      Compressing objects: 100% (2/2), done.
      Writing objects: 100% (3/3), 301 bytes | 301.00 KiB/s, done.
      Total 3 (delta 1), reused 0 (delta 0)
      remote: Powered by Gitee.com
      To https://gitee.com/moce-technology/hk001
      * [new branch] Feat_sean -> Feat_sean
      Branch 'Feat_sean' set up to track remote branch 'Feat_sean' from 'origin'.

      7.查看状态
      $ git status
      On branch Feat_sean
      Your branch is up to date with 'origin/Feat_sean'.

      nothing to commit, working tree clean

      8.切换主分支
      $ git checkout master
      Switched to branch 'master'
      Your branch is up to date with 'origin/master'.

      9.合并分支
      $ git merge Feat_sean
      Updating df5a59b..be12fa6
      Fast-forward
      README.md | 7 +------
      1 file changed, 1 insertion(+), 6 deletions(-)

      10.删除工作分支

      $ git branch -d Feat_sean
      Deleted branch Feat_sean (was be12fa6).

    学无先后,达者为师
  • 相关阅读:
    每日一篇文献:Robotic pick-and-place of novel objects in clutter with multi-affordance grasping and cross-domain image matching
    每日一篇文献:Intuitive Bare-Hand Teleoperation of a Robotic Manipulator Using Virtual Reality and Leap Motion
    每日一篇文献:Virtual Kinesthetic Teaching for Bimanual Telemanipulation
    HEBI Robotic Arm VR Teleoperation
    「iQuotient Case」AR device teleoperated robotic arm
    VR and Digital Twin Based Teleoperation of Robotic Arm
    HEBI Robotic Arm VR Teleoperation
    Human Robot Interaction
    Immersive Teleoperation Project
    机器人演示学习
  • 原文地址:https://www.cnblogs.com/seanchang/p/9644492.html
Copyright © 2020-2023  润新知