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 checkout
git commit
的反向命令git reset HEAD
-
git 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.git
origin
:关联远程库时给远程库所指定的名字,origin默认习惯命名。 -
git remote -v:查看远程库信息
-
git remote rm:删除远程库
例:git remote rm origin
-
git 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
查看,然后恢复指定的stash -
git push:推送分支
例:
git push origin master
git push -u origin master
git 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
规则外的写法就是!
+文件名。例:!.gitignore
-
git check-ignore -v <file>:检查指定文件匹配到哪一个忽略规则。
-
配置别名。例:
git config --global alias.ci commit
-
git 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