Git命令学习笔记01

2019-02-08

工作半年时间了,做了一些项目,对代码的组织有点凌乱。 Git这么好的代码管理工具一直都养成不了使用的良好习惯,每次到代码一团乱偶尔也会误删,误删后才想起Git,这次狠下心决定系统学习下Git,以后坚持用Git。 这里作了一些自己学习的Git常用命令笔记,方便以后自己参考。 附下适合学习的LearnGitBranching可视化教程,以上资料供学习参考。

配置Git

Linux安装Git

sudo apt install git

安装完后需要配置Git。因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:名字和Email地址; Note:git config命令的 –global 参数表示这台机器的所有Git仓库都会使用这个配置。

git config --global user.name "Calvin,Xu"
git config --global user.email "csxucaixu@gmail.com"

自定义Git

.gitignore  # 忽略某些文件时,需要按格式编写.gitignore

常用命令

git init       # 初始化Git仓库
git add        # 把文件添加到暂存库
git commit -m  # 把暂存库中文件提交到仓库,-m后面输入本次提交的概述
git status     # 随时查看仓库当前的状态
git diff       # 查看文件修改前后的difference        
git reset      # 作用1:回退版本;作用2:把暂存区的修改撤消掉(即unstage)
git reflog     # 查看命令历史
git checkout   # 作用1:丢弃工作区的修改(通常后接--转义);作用2:切换分支
git rm         # 删除工作区文件,并将此次删除放入暂存区;
git diff       # 查看文件修改前后的difference,该命令可以查看工作区、暂存区、最新提交之间的差别。不加参数默
认查看工作区和暂存区的差别;后通常接HEAD(指向当前分支中最新一次提交的指针),在执行git commit命令之前通常先
执行git diff HEAD命令,比较本次提交与上次提交之前的差别。
git reset --hard      # 回溯版本,后接版本号。比如HEAD,即表示当前版本;HEAD^表示上一个版本
git reset HEAD <file> # 可以把暂存区的修改撤消
git checkout -- <file>  # 丢弃工作区的修改,回到最近一次git commit或git add的状态,‘--’作用是表示后面接的是
文件路径,以避免歧义,没有‘--’就变成了“切换到另一个分支“的命令。
git rm         # 先手动删除文件,然后使用git rm <file>和git add <file>效果是一样的。

日志管理

git log              # 显示从最近至最远的commit的版本
git commit --amend   # 修改提交信息
git rebase -i        # 修改历史commit;压缩历史commit (内容比较多,后续需继续学习)
git log         # 显示从最近至最远的commit的版本。后可加上目录名,便会显示该目录下的日志;如果加的是文件名,
会显示与该文件相关的日志。常用参数:--pretty=oneline 精简显示;--graph 以图的方式显示;--abbrev-commit 显示
精简的commit id号;-p 参数显示文件前后差别。

分支管理

git branch            # 查看分支,该命令会列出所有分支,当前分支前会标一个*号
git branch dev        # 创建名为dev的新分支
git branch -a         # 查看所有分支(包括本地分支和远程分支)的信息
git branch -d         # 删除分支
git branch -D         # 强制删除分支
git branch --set-upstream-to=origin/dev dev  # 指定本地dev分支与远程origin/dev分支的链接
git checkout           # 切换分支
git checkout -b        # 创建并切换分支,等价于先git branch;再git checkout
git checkout -b dev origin/dev   # 创建远程origin的dev分支到本地dev分支
git checkout --orphan dev        # 创建空白分支,完全干净的分支(不依赖任何父节点)
git merge                  # 合并某分支至当前分支
git merge --no-ff          # 禁用默认的Fast Forward模式,在merge时生成一个新的commit

远程仓库

git remote                   # 查看远程仓库的信息
git remote -v                # 显示更详细的信息
git remote add name url      # 关联远程仓库
git clone                          # 克隆仓库
git fetch                          # 将远程主机最新内容拉至本地,用户需检查是否需合并至本机分支
git pull origin master             # 将远程主机最新内容拉至本地后直接合并,git pull = git fetch + git merge
git push origin master             # 推送本地master分支内容至远程,首次推送需加-u参数以便与远程分支建立关联
git push --set-upstream origin dev # 若本地首次新建的dev分支,则新建分支需与远程分支进行关联

标签管理

git tag                     # 查看所有标签
git tag <tagname>           # 用于新建一个标签,默认为HEAD,也可以指定commit id
git tag -d                  # 删除一个本地标签
git tag -a <tagname> -m     # 可以指定标签信息
git show <tagname>          # 查看详细说明

快捷操作

git commit -am           # 可以省略使用git add命令将已跟踪的文件放到暂存区。等价于git add ; git commit -m

参考文献