配置 配置当前项目1 2 git config user.name '你的名字' git config user.email '你的邮箱'
修改全局配置1 2 git --global config user.name '你的名字' git --global config user.email '你的邮箱'
检查配置1 2 3 4 git config --list git config user.name
仓库 初始化仓库
添加工作区文件到暂存区1 2 3 4 5 6 7 8 9 10 11 12 13 14 git add 1.txt git add 2.txt 3.txt git add ./a git add ./b ./c git add .
创建版本以上命令会直接添加本次提交的备注,一般用于改动不大的情况。
以上命令会调用出默认的编辑器去编辑信息。
修改默认的编辑器以vacode为例(Windows)。首先在命令行输入code
,如果能正常出现vscode编辑器,那么直接输入以下命令即可。
1 git config core.editor notepad
如果不能出现vscode编辑器,那么将VSCode目录下的bin
目录添加到环境变量,然后运行上面的命令即可。
MAC及Linux环境下配置。
1 2 3 4 5 6 7 8 9 vim ~/.bash_profile export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH source ~/.bash_profilegit config --global core.editor "code --wait"
查看状态 提交日志1 2 3 4 // 完整格式 git log // 简要格式(单行) git log --oneline
乱码 git status 显示乱码1 git config --global core.quotepath false
终端乱码菜单 -> 设置 -> 文本 -> 本地 / 编码
或修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 [gui] encoding = utf-8 # 代码库统一使用utf-8 [i18n] commitencoding = utf-8 # log编码 [svn] pathnameencoding = utf-8 # 支持中文路径 [core] quotepath = false # status引用路径不再是八进制(反过来说就是允许显示中文了)
修复提交修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中
1 git commit --amend -m 提交
删除1 2 3 4 5 6 git rm 文件 git rm --cached 文件
rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区git commit -m 修正
撤销重置 从暂存区中撤销到工作区1 2 3 4 // 从暂存区中撤销一个指定文件 git reset HEAD 文件名称 // 从暂存区中撤销所有文件 git reset HEAD .
该命令既可以用于回退版本1 2 git reset --hard commitID
比较1 2 3 4 5 6 7 8 git diff 文件 git diff --cached [commitId] 文件 git diff commitId filename git diff commitId1 commitId2
分支我们的开发就像是游戏的任务,默认是在主线(master)上进行开发的。许多时候,还有各种支线任务,git 支持我们创建分支来进行项目开发
查看分支 创建分支 切换分支1 2 3 git checkout 分支名称 git checkout -b 分支名称
分支合并1 2 3 4 5 6 7 git merge 被合并分支 git branch --merged git branch --no-merged
例如将pay分支的内容合并到master分支,那么先切换到master分支,然后运行git merge pay
命令。
删除分支1 2 3 4 git branch -d 分支名称 git branch -D 分支名称
合并记录~
和^
,前者表示纵向,后者表示横向。
rebase 操作如果出现一些问题,可以通过 git rebase --edit-todo
和 git rebase --continue
进行重新编辑保存
关于合并记录的更多实例:https://blog.antmoe.com/posts/5fe7c05a/index.html#commit
合并冲突有的时候,不同的分支可能会对同一个文件内容和位置上进行操作,这样在合并的过程中就会产生冲突
标签有的时候,我们希望给某一个特定的历史提交打上一些标签
新建 tag1 git tag -a v1.0.0 HEAD/commitId
查看 tag 远程仓库 生成密钥1 ssh-keygen -t rsa -C "i@xiaokang.me"
生成的密钥默认在用户目录的.ssh
文件下。
添加远程仓库1 git remote add 仓库别名 仓库地址
提交(同步远程)1 2 3 git push -u origin master git push origin master
远程分支1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 git push origin [本地分支名称]:[远程分支名称] git checkout -b [本地分支名称] origin/[远程分支名称] git pull origin [远程分支名称]:[本地分支名称] git remote show origin git branch git branch -r git branch -a git branch -d [本地分支名称] git push origin --delete [远程分支名称] git push origin :[远程分支名称] git branch --set-upstream-to=origin/[远程分支名称] [本地分支名称]
扩展:工作流 - git work flow