Git学习笔记
其实用Github Desktop就足以应付当前的需求了,但好像对于程序员来讲不够“专业”和“优雅”。
学习资料https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6。写的很好,这里将常用到的命令进行记录,有些太长的则直接引用。
初次配置信息
带--global为全局,单独配置在该项目目录下运行没有--global的命令来配置
git config --global user.name "Will_Zhu"
git config --global user.email will_zyq@qq.com
检查配置信息
git config --list 显示所有配置
git config user.name
git config user.email
获取帮助
git help <verb>
git <verb> --help
man git-<verb> 在win下无用
获取Git仓库repository
从现有目录中初始化仓库:先在终端中进入目标文件夹下git init
克隆现有的仓库git clone [url]local_repository_name
如果不指定local_repository_name则在当前路径下生成和url中一样的文件夹,也可克隆本地的仓库,url为目标仓库路径后加.git。
检查当前状态git status
跟踪新文件、将已跟踪的文件放到暂存区git add file
git diff 查看尚未暂存的具体修改内容
git diff --staged或git diff --cached 查看已暂存的将要添加到下次提交里的内容
指定git编辑器
win: git config --global core.editor"'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"
mac:
写入环境变量(不写入则mac重启后会之前的设置会失效):
https://blog.csdn.net/Edai9508/article/details/6006269
https://code.visualstudio.com/docs/setup/mac
提交更新
git commit 启动默认编辑器,输入本次更新的说明
git commit - m message 直接附带说明
git commit -a 自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add的步骤
撤销
git reset HEAD fileName 取消暂存的文件,将文件变为changes not staged for commit
git checkout -- fileName 恢复到上次提交时的内容
git rm file 删除指定文件,也可单独使用rm,反正都要git commit
git clean -f 恢复到上次commit的样子
git log 查看提交历史
git log -p 显示每次提交的差异,可再加上数字指定显示最近的提交,如git log -p -2显示最近2次的提交内容差异
git log --graph 以图表方式显示
远程仓库
git remote 查看已经配置的远程仓库服务器
git remote -v 显示需要读写远程仓库使用的git保存的简写与其对应的URL
gitremote add <shortname> <url> 添加一个新的远程仓库并指定引用简写,一般叫origin,可添加多个远程仓库
git fetch <shortname> 将远程仓库内容抓取到本地,但无法直接看到,一般之后会用合并功能git merge origin/master 将origin库中的branch合并到当前branch。
git fetch --all 抓取所有远程仓库。
git push origin master 将本地的推送到远程仓库
git remote show origin 查看远程仓库
git remote rename <oldShortname> <newShortname> 修改添加的远程仓库的简写名
git remote rm <shortname> 移除远程仓库
标签
标签分为轻量标签(lightweight)与附注标签(annotated)。
轻量标签只是一个特定提交的引用。git tag v1.0 -m "my version1.0" 其中-m可有可无
附注标签是存储在Git数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子邮箱、日期。并且可以被GNUPrivacy Guard (GPG)签名与校验。通常建议创建附注标签。git tag -a v1.0 -m 'my version1.1' 其中-m必须有,没有会弹出编辑器让写。
默认情况下,git push 命令不会传送标签到远程仓库上,上上传必须手动git push origin <tagName>。一次性上传全部的标签git push origin --tags
git tag 查看已有的标签
git show <tagName> 查看标签信息与对应的提交信息
git tag -d <tagName> 删除本地标签
git push <remote> :refs/tags/<tagName> 删除远程仓库
Git别名--略
分支
git branch 查看本地所有分支,参数--merged查看那些分支已经合并到当前分支,参数--no-merged查看那些没有合并到当前分支的分支,参数-a查看包括远程仓库的所有分支。
git branch <newBranch> 创建一个新的分支,参数-d为删除分支,若该分支并未合并到其他分支,则需要用-D
git checkout <branch> 切换到该分支,加上-b则为以当前分支为蓝本创建一个新分支并切换。
git log --oneline --decorate 查看各个分支当前所指的对象
git mergetool 使用图形化工具来解决冲突。
远程分支
git ls-remote 显示远程引用的完整列表
git checkout --track <remote>/<branch> 创建一个跟踪指定远程仓库中的分支的同名分支,并切换到该分支。
git checkout -b <newBranch> <remote>/<branch> 创建一个分支,跟踪指定远程仓库中的分支,并切换到新创建到的分支。
git branch -u <remote>/<branch> 设置/修改已有本地分支跟踪远程仓库中的分支
git branch -vv 列出所有本地分支并包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否领先、落后或是都有。
git push <remote> --delete <branch> 删除远程仓库中的分支。
git push <remote> branch -u 将本地的分支上传到远程仓库中(远程仓库之前没有该分支)
关于变基 https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA