ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### Git指令 1. 创建版本库 ``` # 在当前目录创建一个空的git代码库 git init # 在当前目录创建一个名为maigic-data的文件夹,然后在其中创建一个空的git代码库 git init [magic-data] # 下载一个项目和它的整个代码历史 git clone [url] ``` 2. 配置 ``` # 设置用户姓名 git config [--global] user.name "username" # 设置用户邮箱 git config [--global] user.email "email@user.name" #  配置默认文本编辑器,当Git 需要你输入信息时会调用它 git config --global core.editor vim # 为status配置别名st,这样git status就可以写成git st git config --global alias.st status # 查看当前仓库的所有配置信息 git config --list # 查看当前仓库的用户名信息 git config user.name # 编辑全局配置文件(用户名和e-mail信息就记录在其中)  所在目录:c:/users//.gitconfig git config -e --global # 编辑当前仓库的配置文件  所在目录:.git\\config git config -e # 获取帮助 git --help <verb> ``` 3. 增加/删除/提交/撤销 ``` # 添加文件到暂存区 git add <file> # 将当前目录下(递归子目录)所有文件加入到暂存区 git add . # 将当前目录下(递归子目录)所有追踪状态的文件加入到暂存区 git add -u . # 将所有txt后缀的文件加入到暂存区 git add *.txt #  删除工作区文件,并且将这次删除放入暂存区(若文件在工作区或暂存区中有修改,命令会执行失败) git rm <file> # 强制删除工作区文件,并且将这次删除放入暂存区(若文件在工作区或暂存区中有修改,也会执行删除操作) git rm -f <file> # 不删除工作区对应的文件,只将文件删除放入暂存区以供提交 git rm --cached <file> # 将a改名为b,并且将这个改名放入暂存区 git mv <filea> <fileb> # 添加注释并将暂存区中的所有修改提交到本地仓库 git commit -m "注释" # 添加注释并将暂存区中的file的修改提交到本地仓库 git commit <file> -m "注释" # 添加注释使用当前提交覆盖上一次的提交 git commit --amend -m "注释" # 添加注释使用file的当前提交覆盖上一次的提交 git commit -m "注释" --amend <file> # 添加注释并将工作区和暂存区中的所有修改提交到本地仓库 git commit -a -m "注释" # 添加注释并将工作区和暂存区中的所有修改提交到本地仓库 git commit -am "注释" # 拿`α`版本提交的信息(作者、提交者、注释、时间戳等)来提交当前修改 git commit -c α # 丢弃暂存区中的file文件的修改 git reset -- <file> # 丢弃暂存区中的file文件的修改 git reset <file> # 使用本地版本库`α`提交处的file版本覆盖暂存区中的file git reset α <file> # 丢弃暂存区中的所有文件的修改(工作区不受影响) git reset # --mixed为缺省参数,丢弃暂存区中的所有文件的修改(工作区不受影响) git reset --mixed # 丢弃暂存区和工作区中的所有文件的修改(工作区中未追踪的文件不受影响) git reset --hard # 仅将当前分支的HEAD指向`β`提交(暂存区和工作区中的所有文件的修改都不丢弃) git reset --soft β # 仅将当前分支的HEAD指向上N次提交(暂存区和工作区中的所有文件的修改都不丢弃) git reset --soft HEAD~[n] # 在被污染的工作区中回滚merge或者pull git reset --merge  <commit> # 回滚`β`提交,然后提交到本地仓库 git revert --no-edit β # 回滚掉HEAD~N处的提交,不自动提交到本地仓库 git revert HEAD~[N] # 回滚掉(HEAD~2, HEAD\]之间的2次提交,不自动提交到本地仓库 git revert -n HEAD~2..HEAD ``` 4. 分支(查看/新建/切换/删除) ``` # 列出所有本地分支 git branch # 列出所有远程分支cache git branch -r # 列出所有本地分支和远程分支cache git branch -a # 列出所有本地分支和远程分支cache(含简单说明) git branch -av # 查看所有本地分支和远程分支cache之间的追踪关系 git branch -vv # 在当前分支的HAED指针下创建名为`A`的分支(创建完不会切到`A`分支上) git branch A # 将分支`A`重命名为`B` git branch -m A B # 切换到`A`分支上 git checkout A # 创建并切换到`A`分支上 git checkout -b A # 不存在则创建,并切换到`A`分支上 git checkout -B A # 强制切换到`A`分支上,丢弃暂存区和工作区中的所有文件的修改(工作区中未追踪的文件不受影响) git checkout -f A # 切换到上一次分支 git checkout - # 删除名为`A`的分支(必须先切到其他分支上才能执行删除操作) git branch -d A # 强制删除名为`A`的分支(必须先切到其他分支上才能执行删除操作) git branch -D A # 删除远程分支origin/`A` cache git branch -dr origin/A # 使用本地版本库中的HEAD处提交覆盖暂存区和工作区中的<file> git checkout HEAD <file> # 使用本地版本库中的`β`提交覆盖暂存区和工作区中的<file> git checkout β <file> ``` 5. 分之合并 ``` # 将dev分支merge合并到当前分支Master(无冲突时会直接提交) git merge dev # 将dev分支merge合并到当前分支Master(无冲突时使用注释直接提交) git merge -m "注释" dev # 将dev分支merge合并到当前分支Master(不自动提交) git merge --no-commit dev # 将dev分支rebase合并到当前分支Master git rebase dev # 撤销当前merge或rebase操作 git merge/rebase --abort # 将`A`提交合入当前分支。若不冲突,则直接使用`A`的提交信息进行commit,否则要先进行冲突处理,然后继续执行git cherry-pick --continue来完成合并的提交工作 git cherry-pick A # 撤销当前cherry-pick操作 git cherry-pick --abort ``` 6. 储藏区 ``` ## git stash # 有未完成的功能需要切换分支开发时 - 跨分支 # 将所有未提交的修改存储到stash区(栈)中,形式stash@{num} git stash # 添加备注保存 git stash save `备注` # 查看stash区存储了那些键值对 git stash list # 显示stash区最近的一次保存内容改动 git stash show # 显示stash区指定版本的内容改动 git stash show stash@{1} # 对于stash区是删除,对于工作区就是恢复。(最近的一次保存) git stash pop # 取出指定版本放入工作区,并删除此版本 git stash pop stash@{1} # 取出最近的一次保存放入工作区,没有删除操作 git stash apply # 去除指定的版本放入工作区,没有删除操作 git stash apply stash@{1} # 删除stash区中指定版本 git stash drop stash@{1} # 清空stash区 git stash clear ``` 7. 远程操作 ``` # 克隆到本地 git clone [url] # 从远程仓库拉取master分支状态的变化信息(工作区文件不会更新) git fetch origin master # 从远程仓库拉取所有分支和tag状态的变化信息(工作区文件不会更新) git fetch # 先执行fetch,然后将远程origin/master分支merge合并到当前分支(最后会更新origin/master, origin/HEAD指针到最新提交) git pull origin master # 先执行fetch,然后将远程origin/v1.0分支merge合并到本地master分支 git pull origin v1.0:master # 先执行fetch,然后将对应的远程分支merge合并到当前分支(当前分支需要预存远程分支的追踪关系) git pull origin # 将当前分支更新推送给对应的远端分支 git push origin # 将本地仓库的修改push到origin所指向的远程仓库URL的master分支上 git push -u origin master # 将本地分支v1.0更新推送给对应的远端分支remotes/origin/v1.0 git push origin v1.0 # 将本地所有分支更新推送给各自对应的远端分支 git push origin --all ``` ##### 参考链接 [可可西 - 博客园](https://www.cnblogs.com/kekec/p/9248487.html) [https://github.com/geeeeeeeeek/git-recipes](https://github.com/geeeeeeeeek/git-recipes)