工作区(workspace)=> 暂存区(index)=> 本地场库(local repository)=> 远程场库(remote repository)
git有好几个区,工作区(workspace)、暂存区(index)、本地仓库(local repository)、还有远程仓库(remote repository)。远程仓库为我们保存一份代码,如github,而工作区、暂存区和本地仓库都在本地,这也就是为什么我们在没有网络的环境下也能使用git提交(commit)代码,因为提交仅仅是提交到本地仓库中,待有网络之后在推送(push)到远程仓库。
1、初始化场库git init2、提交代码到暂存区git add . // 提交所有修改的文件到暂存区git add [filename] // 提交特定的文件到暂存区3、撤销提交到暂存区的文件git reset HEAD . // 撤销所有暂存区的文件git reset HEAD -filename // 撤销某个暂存区的文件4、提交commitgit commit -m "初始化" // 提交暂存区代码到本地场库git commit -a -m "初始化" // 可以将没有在暂存区的文件提交到本地场库(这一个直接省略了add)git commit -am "初始化" // 同上5、撤销commit之后的(撤销本地代码到)git reset --soft HEAD^ // 撤销commit之后的代码=》撤销到暂存区git reset --hard HEAD^ // 直接撤销到本地时候git reset --hard 59cf878 // 撤销到某一个commit6、修改commit信息git commit --amend7、用暂存区指定的文件替换到工作区git checkout -- <file>8、提交到远程git push9、临时保存文件git stash // 保存临时修改的文件(保存至堆栈中,用于后续恢复当前工作目录)git stash pop // 将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。堆栈中的内容会删除。10、新建分支git branch [branch-name] // 新建一个分支,但依然停留在当前分支(远程没有也没有关系)git checkout -b [branch] // 新建一个分支,并切换到该分支11、切换分支git checkout [branch-name] // 切换分支(该分支在本地已有)11.1、新建并切换到新建的分支git checkout -b [branch-name] // 新建并切换分支12、合并分支git merge [branch] // 合并指定分支到当前分支git merge --abort // 取消合并13、拉取git fetch origin develop:develop // 拉取远程已有的分支,并在本地新建一个这样的分支git pull origin develop // 拉取远程分支的代码14、提交远程git push origin developgit pull和git fetch的区别git fetch:相当于从远程获取最新版本到本地,不会自动mergegit pull:相当于从远程获取最新版本并merge到本地git pull origin master==》git fetch 和 git merge在实际使用中,git fetch更安全一些因为在merge前,我们可以查看更新情况,然后再决定是否合并。15、远程打taggit tag -a v1.4 // 打一个taggit tag -a v1.4 -m "my version 1.4" // 打一个tag并添加说明git push origin v1.4 // 将这个tag提交到远程16、查看日志git reflog 和 git log的区别git log 命令可以显示所有提交过的版本信息git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)17、git diff比较两个文件的不同18、git cherry-pick
代码回滚git reset --soft只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交git reset --hard直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码,所以使用是一定要小心git reset --hard HEAD^
git commit -m "iii" --no-verify // 跳过校验
代码回滚(Revert之后)重新修改之后,再rebase master 会覆盖原来的
