zoukankan      html  css  js  c++  java
  • 版本管理工具(git)

    Git是一个开源的分布式版本控制系统

    工作区:

    电脑目录中,git_test文件夹就是一个工作区。

    版本库:

    在进行git操作的时候,会生成一个隐藏目录.git,这是git的版本库,其中stage(或者index)为暂存区,自动创建第一个分支master,以及一个指向master的指针HEAD

     

    基本操作:

    创建版本

    1. 首先新建一个目录git_test
    2. cd git_test  #进入工作区
    3. git init    #初始化创建隐藏文件
    4. git add test.py  #告诉git,把代码添加到暂存区   git add .    #提交所有文件
    5. git commit -m "说明信息"   #从暂存区放入仓库,后面跟上参数可以直接在命令行解释备注修改

     管理修改

      git status  #查看当前仓库代码的修改状态

    对比文件的不同修改

      git diff test.py #查看修改了那些地方,+号绿色显示的就是修改或新增的内容,-号红色显示的就是去掉或被修改的内容

      git diff HEAD --filename   # 对比工作区和版本库某个文件。

      git diff HEAD HEAD^ --filename # 对比两个版本中的文件。

    撤销修改

      git log  #查看记录修改的日志,显示从最近到最远的提交日志

      git reset --hard HEAD^ #把当前版本回退到上一个版本 等同于  git reset --hard HEAD~1

      git reset --hard 621e6e  #指定回到某个版本 ,版本号没必要写全,前几位就可以了,Git会自动去找

    发现不想回滚错了,再回到没有回滚之前

    git reflog #记录着每一次操作命令

    找到版本号id就可以回滚回滚

    git checkout

    场景一:当改动了工作区某个文件的内容的时候,想直接丢弃工作区的修改用命令  git checkout --filename

    场景二:不仅改动了工作区,而且还添加到了暂存区,想丢弃修改分为两步,第一步  git reset --hard fileid  第二步 git checkout --filename

    场景三:已经提交了修改到版本库,想要撤销

    撤销修改

      git checkout --test.py #把test.py文件在工作区的修改全部撤销,命令中的"--"很重要,没有"--",就变成了“切换到另一个分支”的命令.

    删除:

      把工作区的文件删除之后,工作区和版本库就不一致,使用git status命令就会告诉你那些文件删除了

      从版本库中删除该文件,那就用命令git rm删掉,并且git commit

      git rm test.py 

      git commint -m " remove test"

    文件错了,可以从版本库恢复到工作区:

      git checkout --test.py  #git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    下载别人代码:

    1.通过网页下载

    git clone 网站链接  

    2.通过ssh下载,需要验证

    git commit -m "change"  #上传到本地仓库

    git remote add origin https://github.com/.....  #添加远程仓库 ,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的.

    git push -u origin master #推到远程仓库 ,当前分支master推送到远程.

    之后就可以直接使用git push origin master ,例如做了某次修改后执行:

    git add .

    git commit -m "one change"

    git push origin master

    分支管理

    默认有master一个分支。可以在当前master状态节点基础上创建新的分支,进行修改而不会影响master,作为独立出来的版本进行开发

      git checkout -b dev #加上-b参数表示创建并切换,相当于两条命令1. git branch dev        2. git checkout dev

      git branch  #列出所有的分支,当前分支前面会标一个*

      然后,我们就可以在dev分支上正常提交。

      git add readme.txt

      git commit -m "branch test"

    现在,dev分支的工作完成,我们就可以切换回master分支

      git checkout master #切换到master分支。刚才添加的内容不见了,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变。

    dev分支的工作成果合并到master分支

      git merge dev #合并指定分支到当前分支,此时和dev分支的最新提交是完全一样的

    合并完成后,就可以放心地删除dev分支了

      git branch -d dev

    问题1.比较两个commit的区别

      git diff commitid1 commitid2 > d:/diff.txt

      结果文件diff.txt中:"-"号开头的表示 commitid- 相对 commit-id1 减少了的内容。"+"号开头的表示 commitid2 相对 commit-id1 增加了的内容。

    问题2 git commit --amend的作用

      git commit --amend , 可以用来修改最后一条提交的 commit message, 也可以追加新的修改。

    问题3.git查看某次修改内容

      git log显示历史的提交列表

      git show commitId 便可以显示某次提交的修改内容

      git show commitid filename 查看某次commit中具体某个文件的修改

    问题4 git把分支A上的某个commit应用到分支B

      首先切换到A分支

      git checkout A

      git log  

      找出要合并的commit ID :0128660c08e325d410cb845616af355c0c19c6fe

      然后切换到B分支上

      git checkout B

      git cherry-pick  0128660c08e325d410cb845616af355c0c19c6fe

      

  • 相关阅读:
    黑产江湖
    FW/IDS/IPS/WAF等安全设备部署方式及优缺点
    SOAPA来临,SIEM时代终结?
    美国爱因斯坦计划4
    零基础如何学好安卓开发
    协同办公系统能为企业带来怎样的影响?
    阿里腾讯开撕,钉钉的广告打到腾讯的地盘了
    bug管理工具为开发者工作带来哪些改变?
    开发人员必备的几款bug管理工具
    教你玩转产品管理系统iClap(PC端功能篇)
  • 原文地址:https://www.cnblogs.com/master-song/p/9152815.html
Copyright © 2011-2022 走看看