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 <文件名>先从缓存区中移除该文件。

posted @ 2016-11-13 19:27 DJL箫氏 阅读(...) 评论(...) 编辑 收藏