zoukankan      html  css  js  c++  java
  • 廖雪峰老师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).

    学无先后,达者为师
  • 相关阅读:
    Maven Resources Plugin
    Git Delete Last Commit
    查看剩余空间
    使用 Jython 连接 Apache Derby 数据库
    JVM动态语言比武
    jython embedded into java
    maven testNG
    why clojure?
    jython一小时学会
    gnote
  • 原文地址:https://www.cnblogs.com/seanchang/p/9644492.html
Copyright © 2011-2022 走看看