Git 学习笔记
本文整理参考廖雪峰的 Git 教程, 整理 Git 学习笔记, 用于 Git 常用命令速查:常用命令用彩色标注!
$ git config --global user.name "Your Name" | 配置本机所有仓库的用户名 |
$ git config --global user.email "email@example.com" | 配置本机所有仓库的Email地址 |
$ git init | 初始化一个Git仓库 |
$ ls -ah | 查看隐藏目录,创建仓库之后会生成.git文件夹(这不是Git命令, 只是用来查看.git这个隐藏文件) |
$ git add <file> $ git add *.cc *.h |
添加文件到Git仓库, 可重复使用添加多个文件 一次性添加所有.cc, .h文件, 批量处理 |
$ git commit -m "说明文字" $ git commit --amend |
将暂存区的文件提交到版本库 修改最后一次提交是commit的说明文字用 --amend, 修改好之后Ctrl+O写入, Ctrl+x离开, 文件格式选择Alt+M选择DOS格式, 若选择MAC格式在Ubuntu下不能显示这次提交信息 |
$ git status | 查看仓库状态 |
$ git diff | 查看工作区与版本库最新版本的差异 |
$ git diff <file> | 查看指定文件工作区与版本库的差异 |
$ git log | 查看每一次修改的日志,显示commit ID,作者,日期,提交说明文字 |
$ git log --pretty=oneline | 查看日志单行模式,显示commit ID,提交说明文字 |
$ git reset --hard HEAD^ | 回退到上一个版本,可以连续使用。 |
$ git reset --hard <ID> | 版本回退到指定的commit ID |
$ git reflog | 查看每一次操作的ID,如commit ID,reset ID等... |
$ git diff HEAD -- <file> | 查看指定文件在工作区与版本库里面的最新版本的差异 |
$ git checkout -- <file> |
撤销文件<file>在工作区的修改,让<file>回到最近一次git commit或git add时的状态。可用于工作区误删文件恢复。--很重要,没有--,就变成了“切换到另一个分支”的命令 |
$ git reset HEAD <file> | 将文件<file>撤出暂存区,放回到工作区 |
$ git rm <file> |
删除版本库中的file文件. 步骤为: 1. rm <file> 删除工作区的file 2. git rm <file> 删除版本库中的file 3. git commit -m "..." 提交删除 误删恢复步骤: 1. git log --pretty=oneline 查看删除前版本号 2. git reset --hard <ID> 恢复到删除前版本 3. git checkout -- <file> 恢复工作区误删文件 |
$ ssh-keygen -t rsa -C "email@example.com" | 创建SSH Key |
$ git push origin master | 推送本地master分支到远程仓库master分支 |
$ git remote add origin git@server-name:path/repo-name.git | 关联一个远程库 |
$ git clone git@github.com:ChanLiee/learngit.git | 克隆远程仓库到本地, 注意要把SSH Key添加到GitHub |
$ git branch | 列出所有分支,并在当前分支前面会标一个*号 |
$ git branch <name> | 创建分支 |
$ git checkout <name> | 切换分支 |
$ git checkout -b <name> | 创建分支,然后切换分支 |
$ git merge <name> |
Fast forward模式合并指定分支<name>到当前分支,删除分支后,会丢掉分支信息。 如果出现冲突Git会用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,需要修改后再运行git commit即可 |
$ git merge --no-ff -m "提交说明" <name> | 推荐使用普通模式合并分支,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。 |
$ git branch -d <name> | 删除分支 |
$ git log --graph --pretty=oneline --abbrev-commit | 用带参数的log查看分支合并情况 |
$ git log --graph | 显示分支合并的详细信息 |
$ git stash | 把当前工作区现场“储藏”起来,等以后恢复现场后继续工作 |
$ git stash list | 查看暂存区stash列表,显示stash数目以及所在分支 |
$ git stash apply stash@{0} | 恢复标号为0的stash到工作区,但stash内容不删除 |
$ git stash drop stash@{0} | 删除标号为0的stash |
$ git stash pop | 恢复的同时把stash内容也删了 |
$ git branch -D <name> | 强行删除分支,如果要丢弃一个没有被合并过的分支,可以使用该命令强行删除 |
$ git remote | 查看远程库信息 |
$ git remote -v | 查看远程库详细信息 |
$ git push origin <name> | 推送其他分支 |
$ git checkout -b dev origin/dev | 创建远程origin的dev分支到本地,就通过修改本地dev在推送到远程dev分支的方式修改远程dev分支 |
$ git push origin dev | 将本地分支dev推送到远程dev分支,如果推送失败表明远程分支比本地更新,需要先用git pull,试图合并 |
$ git pull |
如果提交冲突,则需要代码合并后在提交,先用git pull把最新的提交从origin/dev抓下来, 然后,在本地合并,手动解决冲突,提交commit,再推送push 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,使用下面的命令: |
$ git branch --set-upstream dev origin/dev | 指定本地dev分支与远程origin/dev分支的链接,关联之后才可以pull |
$ git tag <tag> | 给当前ID打上标签 |
$ git tag <tag> <ID> | 给某个commit ID打上<tag>标签 |
$ git tag | 查看标签,按字母排序 |
$ git show <tag> | 查看<tag>标签信息 |
$ git tag -a <tag> -m "说明文字" <ID> | 创建带有说明的标签,用-a指定表签名,-m指定说明文字 |
$ git tag -d <tag> | 删除标签<tag> |
$ git push origin <tag> | 推送某个标签到远程 |
$ git push origin --tags | 一次性推送全部尚未推送到远程的本地标签到远程 |
$ git push origin :refs/tags/<tag> |
删除远程库标签步骤: 1. $ git tag -d v0.99 删除本地标签 |
$git remote set-url origin [url] | 使用git remote -v 可以查看远程仓库地址和权限, 如果远程仓库地址与实际地址不符合, 只用该命令修改本地保存的远程仓库地址, 例如:git remote set-url origin ssh://git@222.25.175.2/lte-sat.git |