首页 > 代码库 > Git 学习笔记

Git 学习笔记

本文整理参考廖雪峰的 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 commitgit 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} 恢复标号为0stash到工作区,但stash内容不删除  
$ git stash drop  stash@{0} 删除标号为0stash
$ git stash pop 恢复的同时把stash内容也删了
$ git branch -D <name> 强行删除分支,如果要丢弃一个没有被合并过的分支,可以使用该命令强行删除    
$ git remote 查看远程库信息
$ git remote -v 查看远程库详细信息
$ git push origin <name> 推送其他分支
$ git checkout -b dev origin/dev 创建远程origindev分支到本地,就通过修改本地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                   删除本地标签
2. $ git push origin :refs/tags/v0.99   再用push删除远程库标签

Git 学习笔记