• git使用心得


    这篇博文用来记录我使用git的体会感悟

    删除文件:

    git add test.txt

    git commit -m "test.txt"

    rm  test.txt  那么会直接在工作区(也就是我们常说的文件夹)将该文件删除,但是在版本库中,你的test.txt文件并没有被删除,此时用

    git checkout -- test.txt  是可以回复该文件的

    但是如果在此之前你并没有把该文件add到缓冲区中(也就是使用git add 命令)或者 commit到版本库中(也就是使用git commit),对不起,无力回天。

    复杂点的情况  如果现在你的暂存区和版本库中都有一个同名文件(暂存区中的同名文件还没有commit),那么此时你此时rm test.txt 然后checkout返回的会优先是暂存区中的文件而不是版本库中的文件

    如果你是用的  git rm  则会将工作空间  版本库中都删掉 git reset --hard  

    http://stackoverflow.com/questions/2125710/how-to-revert-a-git-rm-r

    一、放弃对git管理的文件修改

    条件:bb.txt文件已经被git管理

    过程:发现bb.txt文件被修改了,发现改了之后不是自己想要的结果

    目的:想恢复到没有被修改的状态

    解决办法:

    git checkout bb.txt

    git放弃对当前文件夹的所有文件的修改?

    git checkout .

    二、对没有被git管理的文件修改

    条件:cc.txt文件没有被git管理

    过程:添加的文件太多太紊乱了,

    目的:想直接回复到某个版本

    解决办法:

    git reset --hard {版本号}

    git   reset  版本回退  mixed soft hard

    http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html

     出这个错误的原因是远程和本地都有差异 远端有个readme  在本地没有,所以要先git pull一下,在git push

    git pull origin master(分支)

    现在我的理解就是本地文件目录(工作目录),缓存区,和git仓库。缓存区是公用的,(任何一个分支上git add 文件到缓存区,在任何其他分支用git ls-files都可以看见刚刚被其他分支add的文件,当然在任何一个分支上移除缓存中的这个文件,也都会反应在其他分支中)可以用git status命令来查看哪些文件没有被跟踪,另外git add .  这个命令好像不能用了  还是用git add --all来添加所有文件吧!

    当然如果我们如果不小心把一些文件提交到了缓存区,想把他们删除。那么我们可以使用git rm --cache <文件名>命令来,把误加入缓存区的文件删除,当然不会删除工作目录中的文件,然后使用git status命令可以看到,刚刚那个文件已经提示未被跟踪了。(猜想仓库中的不会被删除  查看仓库中文件的命令有误,用git log <文件名>可以查看这个文件是否在仓库中)

    删除暂存区和工作区的文 git rm -f 文件名。工作区的文件也被删除了。

    如果想删除已经提交到仓库中的文件那么我们就需要使用git reset命令

    这个时候,我们必须撤销版本库的修改才能解决问题!

    git reset有三个选项,--hard、--mixed、--soft。

    //仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
    git reset --soft 版本库ID
    //仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
    git reset --mixed 版本库ID
    //彻底将工作区、暂存区和版本库记录恢复到指定的版本库
    git reset --hard 版本库ID


    关于文件合并
    git merge <> <分知名> 是把别的仓库中的内容合并到当前仓库,如果当前仓库中的同一个文件有了更改,其他分支同一个文件也有了更改,那么合并就会出错,这个时候就需要手动解决冲突。因为不知道
    该以哪个更改的为主。

    git ls-files 来查看缓冲区中提交了哪些文件

    git diff --cached 用来查看前后两次 git add 后的变化 原来缓存区中的文件也是要git add后 用git diff --cached才会有变化的


    当我新建分支时弹出如下错误

    fatal: Not a valid object name: 'master'.

    想新建立一个分支时出现这错误。

    后来发现,要先commit一次才会真正建立master分支,此时就可以新建立分支了。。

    在没有commit之前,如果使用git checkout -b <分支名>  来创建切换到分支,实际上这个分支是没有被创建的 所以用git checkout是不能进行切换的

    git add 命令

    git add 命令添加所有改动内容

     

    git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 

    git add -A .来一次添加所有改变的文件。注意 -A 选项后面还有一个句点。 

    git add -A表示添加所有内容, 

    git add . 表示添加新文件和编辑过的文件不包括删除的文件; 

    git add -u 表示添加编辑或者删除的文件,不包括新添加的文件。

    .gitignore

    该文件用来指定哪些文件不需要被管理,通常包裹一些缓存文件等等。我们直接在windows下新建.gitignore文件,处于系统的自我保护会阻止这一行为。我们可以在git控制台中使用

    touch .gitignore来新建。

    如果我们文件已经被管理,此时要想忽略该文件,必须先通过git rm --cached <文件名>先从缓存区中移除该文件。

  • 相关阅读:
    Pyinstaller打包多个py文件
    Oracle 数据库基础教程之用户管理
    Navicat连接Oracle报错ORA-28547
    Oracle 激活用户及重置密码
    coding公钥配置教程
    关于联想笔记本小新自动关机解决方法
    PIP镜像像源
    Bugku——Web——web基础$_POST
    Bugku——Web——web基础$_GET
    Bugku——Web——计算器
  • 原文地址:https://www.cnblogs.com/djlxs/p/5603861.html
Copyright © 2020-2023  润新知