git快速入门
git工作流程
git配置
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
常用命令行
git init:把当前目录变成Git可以管理的仓库
git add:把文件添加到暂存区
注:git add .添加当前目录下的所有文件到暂存区git commit:把暂存区内容提交到当前分支
git commit -m "add a new file"git status:查看工作目录状态
git diff:查看文件差异
git diff比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。若要查看已暂存的将要添加到下次提交里的内容,可以用git diff --cached命令。请注意,
git diff本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行git diff后却什么也没有,就是这个原因。git diff HEAD -- filename:工作区和库(HEAD)之间差异git add的反向命令git checkoutgit commit的反向命令git reset HEADgit log:查看commit记录
注:- 记录中
HEAD表示当前版本 - 如果要表示上一个版本,可以使用
HEAD^。同理上上一个版本,可以使用HEAD^^表示。 - 如果要表示往上10个版本,10个
^不但不方便书写,也不方便查看。往上10个版本,可以使用HEAD~10表示。 git log --pretty=oneline查看简要信息git log --graph --pretty=oneline --abbrev-commit以简要信息的形式查看分支合并图
- 记录中
git reflog:查看包含git reset回退到某一版本的记录,可用于查看回退版本之前的commit id。
git reset --hard <>:回到某一版本
git reset --hard HEAD^ # 回退上一版本git reset --hard <commit id> # 回退到某一指定版本注:慎用
--hard,会丢失之前的修改内容。不清楚的情况下建议不带--hard参数,即:git reset <commit id>git checkout -- file:让这个文件回到最近一次git commit或git add时的状态。主要用来丢弃暂未使用
git add添加到暂存区的修改。
注:新版本使用git restore代替git reset HEAD file:撤销暂存区的修改,与HEAD保持一致。主要用来回退已经使用
git add添加到暂存区的修改,将回退到git add之前的状态。
注:新版本使用git restore --staged代替git remote add:添加远程库。适用于先有本地库,后有远程库。
例:git remote add origin git@server-name:path/repo-name.gitorigin:关联远程库时给远程库所指定的名字,origin默认习惯命名。git remote -v:查看远程库信息
git remote rm:删除远程库
例:git remote rm origingit clone:从远程库克隆。适用于先有远程库。
git clone -b branchA url:从远程库克隆后默认切换到branchA分支。
git clone -b branchA --single-branch url:从远程库克隆只克隆branchA分支。
git branch dev:创建dev分支
git branch:查看当前存在哪些分支
git switch -c dev:创建dev分支,并切换到dev分支。
注:- git switch命令加上
-c参数表示创建并切换。上述命令相当于下面两条命令。git branch dev 创建dev分支
git switch dev 切换到dev分支 - 旧版本使用
git checkout -b dev表示创建dev分支,并切换到dev分支。 - 旧版本使用
git checkout dev表示切换到dev分支。
- git switch命令加上
git merge:合并指定分支到当前分支。
git branch -d:删除指定分支
git stash:把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list:查看被“储藏”的工作现场
git stash apply:恢复现场,但是stash内容不删除
git stash drop:删除stash内容
git stash pop:恢复现场,并删除stash内容
注:
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stashgit push:推送分支
例:git push origin mastergit push -u origin mastergit push --delete origin [branch name]# 本地分支删除之后,同步删除远程仓库对应分支
注:
第一次推送master分支时,加上-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。git branch --set-upstream-to=origin/dev dev:指定本地
dev分支与远程origin/dev分支的链接git pull:抓取分支
git rebase:把本地未push的分叉提交历史整理成直线
git tag <tagname>:打一个新的标签。默认标签是打在最新提交的commit上。
git tag <name> <commit id>:打一个新的标签。指定某一commit。
git tag -a <tagname> -m “massage” <commit id>:创建带有说明的标签。
-a指定标签名,-m指定说明信息。git tag:查看所有标签。
git show <tagname>:查看标签信息
git tag -d <tagname>:删除本地某一标签
git push origin <tagname>:推送某一标签到远程
git push origin --tags:推送全部尚未推送到远程的本地标签
git push origin :refs/tags/<tagname>:删除一个远程标签
忽略某些文件时,需要编写
.gitignore。参考https://github.com/github/gitignore.gitignore文件本身要放到版本库里把指定文件排除在
.gitignore规则外的写法就是!+文件名。例:!.gitignoregit check-ignore -v <file>:检查指定文件匹配到哪一个忽略规则。
配置别名。例:
git config --global alias.ci commitgit cherry-pick <commit id>:类似merge,区别在于该命令只将其他分支某一次提交合并到当前分支。
git config --global core.editor vim:修改git默认编辑器为vim
参考文章:
https://www.liaoxuefeng.com/wiki/896043488029600
https://blog.csdn.net/u011535541/article/details/83379151