git rm
git rm
git rm 用于从索引中删除文件或者同时从工作区和索引中删除文件。
具体是哪种操作,看后面跟的操作选项。
git rm 与 git rm --cached 的区别
举例说明如下:
假设如有版本库如下:
使用 git rm text1.txt 删除 text1.txt之后,索引和本地文件都被删除了,如下图所示:
使用git rm --cached text1.txt 把文件text1.txt从git的索引库中移除,但是对文件text1.txt本身并不进行任何操作,如下图所示。
git rm 与 rm 的区别
git rm: 来删除文件,同时还会将这个删除操作记录下来;
rm: 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除;
提示:即使你已经通过 rm 将某个文件删除掉了,也可以再通过 git rm 命令重新将该文件从 git 的记录中删除掉。
注意:上述操作最后要执行git commit才真正提交到git仓库
删除文件夹用-r
向远程提交删除修改
git commit -m "delete"
此时远程已经删除掉了文件
ignore添加忽略文件,之后就不会提交该文件了
放弃工作区某些文件修改
放弃工作区修改,放弃暂存区
撤销工作区修改
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
撤销暂存区修改
git add到暂存区,想撤回
Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。
回退版本库
- git log:该命令显示从最近到最远的提交日志。
- git log - -pretty=oneline:将只会显示提交的commit id号和对应的注释。(这里是两个-,Markdown显示两个-为一个-)
- git reset –hard commit_id 或则是 git reset –hard HEAD^,使用git reset –hard 进行版本回退之后,在本地查看README.md,里面已经变为版本2对应的内容了。
reset三种模式区别
reset三种模式区别
git reset --hard 和git reset --soft的区别
reset --hard:重置stage区和工作目录:
reset --hard 会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容。当你在 reset 后面加了 --hard 参数时,你的stage区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉。
你的 HEAD 和当前 branch 切到上一条commit 的同时,你工作目录里的新改动和已经add到stage区的新改动也一起全都消失了。
reset --soft:保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区:
reset --soft 会在重置 HEAD 和 branch 时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区。
reset 不加参数(mixed):保留工作目录,并清空暂存区,(与上面–soft合并commit节点差不多,只是多了git add添加到暂存区的操作
解决冲突
git stash
git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
比如下面的中间状态,通过git stash命令推送一个新的储藏,当前的工作目录就干净了
git stash
git pull
git stash pop
git Please move or remove them before you can merge
这是因为本地有修改,与云端别人提交的修改冲突,又没有merge.
如果确定使用云端的代码,最方便的解决方法是删除本地修改,可以使用以下命令:
git clean -d -fx “”
d -----删除未被添加到git的路径中的文件
f -----强制运行
x -----删除忽略文件已经对git来说不识别的文件
Updates were rejected because the tip of your current branch is behind
1.使用强制push的方法:
git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2.push前先将远程repository修改pull下来
git pull origin master
git push -u origin master
3.若不想merge远程和本地修改,可以先创建新的分支:
git branch [name]
然后push
git push -u origin [name]