🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### **3.1创建本地仓库** git init 在当前文件夹创建一个git管理的本地仓库 #### **3.2将工作区保存到暂存区** git add xxx add命令不是添加一个文件,而是,将修改或新增的文件从动作去添加到当前版本库的暂存区中,表明此修改或新增的文件在下次commit提交的内容之中。 git add * 是将所有修改与新增的文件添加到暂存区。 当你的仓库根目录下设置了.gitignore文件并配置了忽略文件时,此时命令会报错,如下: ``` ~~~bash $ git add * The following paths are ignored by one of your .gitignore files: ignore.md Use -f if you really want to add them. fatal: no files added ~~~ ``` 如果强行使用git add -f * 命令,则会添加ignore.md文件。但这样.gitignore文件就没有意义了。 #### **3.3将暂存区提交到版本库** git commit 将暂存区提交到本地仓库的版本库。如果没有被git add 添加到暂存区的文件不会被提交。 -m “xxxx”后面跟着为本次提交的说明。 -a 大意是将工作区中的所有修改或删除后的文件都提交到本地仓库,但新增的文件并不提交。 常用commit -m"aaa" -a 直接将更改从工作区提交到版本库,而不用经过暂存区。 #### **3.4撤销(重置)** git reset --hard等价于git reset --hard HEAD即撤销工作区和暂存区中的所有修改,重置为版本库中HEAD指向的当前版本(未被修改的部分)。 而上一个版本就是**`HEAD^`**,上上个版本就是**`HEAD^^`**,当然往上写100个版本写100个^比较容易数不过来,所以写成HEAD~100. 或者也可以git reset --hard <commit_id>直接回溯到某个版本,<commit_id>指版本号(通过git log)查看,版本号没必要写全,前几位就可以了。 git reset<file>或git reset HEAD<file>撤销git add 到暂存区的修改 git checkout -- <file>撤销工作区的修改。 #### **3.5删除** git rm<file>如果你已经把某个新增文件提交到版本库了。然后你想删除这个文件,那就用该命令将文件删除,再提交。使用该命令后,git的状态是: ``` ~~~bash $ git rm test.md rm 'test.md' $ git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: test.md ~~~ ``` 说明git rm会直接更新到暂存区。 删除文件其实还可以直接删除。如下: ``` ~~~bash $ ls README.md ignore2.md test2.md $ rm test2.md $ ls README.md ignore2.md $ git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: test2.md no changes added to commit (use "git add" and/or "git commit -a") ~~~ ``` 此时没有直接更新到暂存区,可以通过git add/rm<file>来更新。同时可以通过git checkout --<file>来恢复这个文件。 #### **3.6查看状态** git status显示工作区与暂存区的状态,比如哪些文件被修改了、哪些文件没保存在暂存区、谢谢文件没有提交等等。若存在没有被add的新文件(即未被git跟踪的文件),则会提示Untracked ``` ~~~bash $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitignore # deleted: ignore.md # # 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: test.md # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # ignore2.md ~~~ ``` git status -s更简单地显示状态变化,如:显示 M controllers/article.go显示内容的每一行开头,M表示被修改、A表示被增加、??表示未受控制 #### **3.7查看不同** git diff readme.text 查看readme.txt这个文件中具体什么内容别修改了。其中: git diff 查看工作区和暂存区的区别 git diff --cached 查看暂存区和版本库之间的区别 git diff HEAD查看工作区和版本库之间的区别 #### **3.8 查看提交日志** git log查看仓库版本库中(本地仓库和远程仓库的版本库是一样的)从最近到最远的版本信息。换言之,即每次提交的信息。 git log --graph显示版本以及分支图 git reflog 查看历史Git命令 #### **3.9隐藏工作** 当工作区的修改未提交,而我们邮箱将其隐藏起来时,就要用到git的stash功能 git stash 隐藏工作区和暂存区的修改,存储到一个地方、 git stash list 查看存储起来的工作现场 恢复工作现场有两种方法: 一是用git stash apply恢复,但是恢复后,stash内容并不删除,需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删除了、。