美文网首页
Git学习笔记

Git学习笔记

作者: icfg66 | 来源:发表于2020-04-23 11:00 被阅读0次

    为什么要用Git?

    你是否有这样的精力,写毕业论文时,总要复制之前的版本,然后继续编辑,一个毕业论文的文件夹充满了毕业论文1、毕业论文2···毕业论文5,毕业论文最后版,毕业论文究极版,毕业论文不改版····Git可以很好地帮你管理这方面的版本,它会记录每个版本修改的东西,但不需要每次都复制,非常方便管理。

    另一方面,如果多个人一起完成一个项目,那么更加需要版本管理,特别是在大型软件编写的过程中,Git的优势更加明显。最爽的是,Github是丰富的资源库,你可以从别人的Git库中“克隆”学习代码,还可以很容易分享自己的代码。

    不过Git的更适合管理纯文本文件,比如.txt、.c、.py等代码,Office文档如word、excel、ppt等适合用svn。

    一下代码均上来自廖雪峰Git教程

    基本操作

    window的Git软件,开始菜单找到“Git”->“Git Bash”,每个机器需要自报家门:

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

    在Git Bash里面可以用linux的基本操作命令。建立新仓库:

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit
    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/
    
    $ git --help #非常有用的帮助文档
    

    添加文件到仓库,并提交文件到仓库:

    #工作区>>>>暂存区>>>>版本库
    $ git add readme.txt # 加入“暂存区”
    $ git commit -m "wrote a readme file"#”加入版本库“
    

    查看当前仓库状态:

    $ git status #会显示下一步操作参考指令,很有用
    $ git diff # 比较“工作区”与“暂存区”的区别
    $ git diff --cached # 比较“暂存区”与“版本库”的区别
    $ git diff HEAD --readme.txt #比较“工作区”与“版本库”的区别
    $ git log #查看提交历史日志,以便退回
    $ git reflog #查看命令历史,以便回到未来版本
    $ git log --pretty=oneline #单行显示日志
    $ git reset --hard HEAD^ #退回上一版本
    $ git reset --hard 1094a #回到某一版本
    
    

    撤销和退回

    $ git restore readme.txt #撤销工作区的修改
    $ git restore --staged readme.txt #撤销添加暂存区
    $ git reset HEAD~1 readme.txt #退回上一版本
    
    $ rm test.txt # 工作区中删除文件
    $ git rm test.txt # 从版本库删除
    $ git commit -m "text.txt"
    

    Github远程仓库

    如何将本地的文件传到Github,又如何从别人的Github上下载代码呢?

    下载代码

    $ git clone git@github.com: michaelliao/gitskills.git 
    #冒号后面是分享代码的账户名和其仓库名
    

    上传Github,首先需要注册一个Github账号,建立一个自己的仓库,添加本地生成的公钥,目的是让远程仓库授权你的本地仓库才可以提交代码。

    #将本地的仓库关联到Github上michaelliao/learngit.git仓库命名为origin
    $ git remote add origin git@github.com: michaelliao/learngit.git
    $ git push -u origin master #本地所有内容推送到远程库上
    $ git push origin master #之后更新不用加-u
    
    $ git remote #查看远程库
    $ git remote -v # 远程库详细信息
    $ git push origin dev #推送其他分支
    
    $ git pull #抓取远程别人的新提交
    # 设置本地分支与远程分支一致
    $ git branch --set-upstream-to=origin/dev dev
    

    分支管理

    $ git branch #查看分支
    $ git checkout -b dev #切换到dev分支
    #等价于
    $ git branch dev #生成新分支
    $ git checkout dev #切换新分支
    $ git merge dev #合并分支,一般不用这个
    # 禁用fast forward 协同开发时更常用
    $ git merge --no-ff -m "merge with no-ff" dev
    $ git branch -d dev # 删除分支
    $ git branch -D dev #强行删除分支
    
    # 也可以用switch切换,更常用
    $ git switch -c dev #切换到dev分支
    #等价于
    $ git branch dev #生成新分支
    $ git switch dev #切换新分支
    
    #查看分支合并图
    $ git log --graph --pretty=oneline --abbrev-commit
    $ git log --graph 
    $ git rebase # 变基操作,将提交分叉整理为直线
    
    #打标签
    $ git tag #查看所有标签
    $ git tag v1.0 #当前版本打标签
    $ git tag v0.9 f52c633 #之前某版本打标签
    #打标签并添加说明
    $ git tag -a v0.1 -m "version 0.1 released" 1094adb 
    $ git show v0.1 #查看标签说明
    
    $ git tag -d v0.1 #删除标签
    $ git push origin v1.0 #推送某标签
    $ git push origin --tags #推送全部尚未推送的本地标签
    $ git push origin :refs/tags/v0.9 # 删除远程标签
    
    

    现场保护

    $ git stash #把当前的工作现场”储藏“起来,现在可以做其他紧急的事
    $ git stash list #查看保存的现场
    $ git stash pop #恢复现场,现在可以继续之前的工作
    $ git cherry-pick 4c805e2 #添加修复bug时的内容,避免重复劳动
    

    相关文章

      网友评论

          本文标题:Git学习笔记

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