平台网站建设外包,程序员培训机构出来找工作好找吗,东阿县住房和城乡建设局网站,云主机多个网站Git基本操作指令
工作区和暂存区
Git管理的文件分为#xff1a;工作区(本地的文件夹)#xff0c;版本库(.git文件夹)#xff0c;版本库又分为暂存区stage和暂存区分支master(仓库)
工作区暂存区仓库
git add把文件从工作区…Git基本操作指令
工作区和暂存区
Git管理的文件分为工作区(本地的文件夹)版本库(.git文件夹)版本库又分为暂存区stage和暂存区分支master(仓库)
工作区暂存区仓库
git add把文件从工作区暂存区git commit把文件从暂存区仓库
git diff查看工作区和暂存区差异
git diff --cached查看暂存区和仓库差异
git diff HEAD 查看工作区和仓库的差异
git add的反向命令git checkout撤销工作区修改即把暂存区最新版本转移到工作区
git commit的反向命令git reset HEAD就是把仓库最新版本转移到暂存区
管理修改
Git跟踪并管理的是修改而非文件
现在有一个文件a.txt
你修改了a.txt并使用git add a.txt把它存进了暂存区
此时你又对a.txt进行了修改
然后使用git commit进行了提交
Git管理的是修改当你用git add命令后在工作区的第一次修改被放入暂存区准备提交但是在工作区的第二次修改并没有放入暂存区所以git commit只负责把暂存区的修改提交了也就是第一次的修改被提交了第二次的修改不会被提交。
提交后用git diff HEAD -- a.txt命令可以查看工作区和版本库里面最新版本的区别
撤销修改
丢弃工作区文件的修改
如果你在本地工作区修改了某个文件但是你突然不想要这些修改了你可以通过git checkout -- file命令来撤销修改他会撤销你的所有修改
存在两种情况首先假设你要撤销的是a.txt
如果a.txt在你修改前已经从工作区被添加到暂存区了此时你修改完了以后要进行撤销那就会被撤销回到暂存区的状态如果a.txt没有被添加到暂存区那就会被回退到版本库的最新状态
总的来说就是会回退到最近的一次git commit或git add时的状态
丢弃暂存区文件的修改
如果你改了a.txt文件的内容并git add进暂存区了此时你想把暂存区的修改撤销掉unstage可以用git reset HEAD file
git reset命令既可以回退版本也可以把暂存区的修改回退到工作区。当我们用HEAD时表示最新的版本。
$ git status
On branch master
Changes to be committed:(use git reset HEAD file... to unstage)modified: a.txt$ git reset HEAD a.txt
Unstaged changes after reset:
M a.txt$ git status
On branch master
Changes not staged for commit:(use git add file... to update what will be committed)(use git checkout -- file... to discard changes in working directory)modified: a.txt$ git checkout -- a.txt$ git status
On branch master
nothing to commit, working tree clean相当于利用两次撤销将a.txt的内容变成了最新一次commit进仓库的状态
丢弃版本库的修改
如果你不小心把不想修改的内容提交到了仓库那你就只能使用版本回退了回退到上一个版本
git log #可以显示从最近到最远的提交日志
git log --prettyoneline #可以将每条简化为一行commit id即版本号用SHA哈希出来的一个值用十六进制表示
Git中用HEAD表示当前版本上一个版本是HEAD^上上个版本是HEAD^^
所以如果想回退到上一个版本
git reset --hard HEAD^
#或者是
git reset --hard xxxxx#后面写版本号取前几位就可以git会自己找此时git log看到的版本也是会回到上一个版本所能看见的
现在的操作相当于“回到过去”如果你想回到未来但是你又忘了之前的版本号是多少你可以用
$ git reflog
e475afc HEAD{1}: reset: moving to HEAD^
1094adb (HEAD - master) HEAD{2}: commit: append GPL
e475afc HEAD{3}: commit: add distributed
eaadf4e HEAD{4}: commit (initial): wrote a readme file进入git log或者git reflog后按q可以退出
删除文件
rm命令仅仅是删除本地工作区的文件相当于一次对文件的修改如果想同步给版本库的文件就想要git add和git commit
git rm命令等同于rm git add此时只想要git commit即可完成版本库的同步
git rm -f删除工作区和暂存区文件并且将这次删除放入暂存区主要是解决文件被add进暂存区但是没有commit到仓库导致暂存区和仓库存在不同此时直接使用git rm就无法执行可以添加-f的参数强制删除
git rm --cached , 删除暂存区文件但保留工作区的文件并且将这次删除放入暂存区此时使用git status
$ git status
On branch master
Changes to be committed:(use git reset HEAD file... to unstage)deleted: test.txtUntracked files:(use git add file... to include in what will be committed)test.txtgit commmit以后仓库内的就被删除了但是本地工作区还是保存的而且不会被追踪