• Git和GitHub学习记录


    git是分布式的版本控制工具,可离线,svn是集中式的,要联网操作.集中式的所有数据都放在服务器端,如果服务器宕机,则历史记录也可能就丢失了,这叫做单点故障.分布式的数据可直接保存在客户端.

    为何要版本控制呢?比如服务端有一段代码,小明和小红都准备对它进行修改,小明先改好并上传更新,过一会儿小红也改好了,也上传更新了,所以最终服务器端保留的仅有小红的代码,小明的被覆盖了,这是我们不愿看到的.

     git功能很强大:

    1.   允许多人并行协同修改服务端的文件;
    2.   数据可以备份,能保存提交过的历史状态,历史记录;
    3.   版本管理,采用文件系统快照的方式,不保存重复数据,节约存储空间,提高运行效率;
    4.   对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核;
    5.   分支管理,多线并行开发,提高效率.

    至于git的命令,跟linux一样的风格,常用的有:

      1.   git init 初始化

      2.   git add file 添加到暂存区

        至于 warning: LF will be replaced by CRLF in good.txt.  用回车换行替换换行符 

        git config core.autocrlf       我在windows上使用,True即可.

      3.    git rm --cached file 从暂存区移除

      4. git status  查看状态

      5. git commit file  提交到本地库

        提交会提示你添加注释,会调用编辑器,我的调用了sublime,不太习惯,还是喜欢vim,通过命令git config --global core.editor vim 实现更改.

      6.    cat file 查看文件内容,显示在主控台

      7.    git commit -m "注释" file   直接添加注释提交到本地库,就不用调用vim编辑器了

      8.  git log  查看版本  

         若多屏显示,则 空格向下翻页,b向上翻,q退出

      9.    git reflog 简洁些, 有HEAD值 ,HEAD相当于指针,指向版本,操作它可实现版本切换

      10.   git reset --hard 部分哈希值如(9a4ehb3)    切换到对应的版本

      11.   git reset --hard HEAD^  回退一个版本,加几个^就回退几个版本

      12.   git reset --hard HEAD~3 回退三个版本

          通过命令git help reset 可以看出,这里的hard参数,表示将工作区,暂存区,本地库三者都回退到某个版本,对应的还有soft,mixed参数,soft只回退本地库,mixed回退本地库和暂存区

      13.   rm file 删除文件

          执行删除文件命令后,要提交到暂存区,再提交到版本库,才会在本地显示删除,若要找回,则回退到上个版本即可, git里的版本历史记录永久存在.若只提交到暂存区,则撤销删除: git reset --hard HEAD  . 这些删除找回操作都要求 文件已经存在于本地库.

      14.   git diff file 将工作区的文件与本地库进行比较

          git diff HEAD^ file 与上个版本比较,git对文件以"行"为对象,修改某一行,则显示删除某一行后新增某一行.

      15.   git branch -v 产看分支

      16.   git branch name  新建分支

      17.   git checkout name  切换分支 

      18.   git merge branch_name  将别的分支合并到当前分支

          多分支修改同文件合并时会产生冲突,编辑冲突文件,删除特殊行,然后git add file,git commit -m "注释"  即可.

      19.   git remote add origin 远程库ip地址   给地址起个别名

      20.   git push origin master -u  推送到远程库master分支

      21.   git clone 远程库地址   克隆远程库到本地,自动初始化

          协作开发要先得到邀请,然后才能将克隆下来的文件修改后push到远程库

      22.   git pull origin master:branchtest  将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。

          如果将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。等价于:

            git fetch origin master   获取并下载远程库最新状态

            git merge origin/master    与本地的当前分支合并

     对于项目的跨团队协作开发:

      A团队创建了项目的远程库aa,要求B团队也参与进来,B用自己的GitHub账号登陆后点击A的远程库,Fork一下,相当于把库aa复制到自己的账号里,再clone到本地,修改,添加,提交,推送,完成后像A发送pull request, 附上说明信息,A收到请求后, 查看修改,审核代码,再Merge pull request, 合并.

  • 相关阅读:
    Python 数据驱动 unittest + ddt
    接口知识介绍
    python 爬虫
    python 接口测试(三)
    基于PCA和SVM的人脸识别系统-error修改
    二分查找算法
    JAVA中运用数组的四种排序方法
    [Matlab] Attempt to execute SCRIPT *** as a function
    第36讲 activityForResult
    第35讲 Activity入门和跳转
  • 原文地址:https://www.cnblogs.com/wangyi0419/p/11504131.html
Copyright © 2020-2023  润新知