第一次初始化
git init 初始化仓库
git add .
git commit -m "init"
git remote add origin <git@github.com>:账号名/仓库名.git
git pull origin master
git push origin master // -f 强推
git clone <git@github.com>:账号名/仓库名.git
工作中常用命令
-
git checkout master切换到master分支 -
git fetch origin获取最新变更 -
git checkout -b dev origin/master基于master分支创建dev分支,并切换到dev分支,如果基于当前所在的分支创建新的分支,则不需要写后面的origin/master -
git add .将本地目录下所有发生变更的文件添加到暂存区 -
git commit -m "注释"将暂存区内容提交到本地仓库 -
git push将本地代码推送到远程仓库 -
git pull将远程仓库代码拉取到本地 -
git push -u origin dev远程仓库没有dev分支时,将dev分支代码推送到远程仓库使用这个命令 -
git fetch origin master获取远程仓库master分支最新代码 -
git status查看仓库当前状态 -
git clone <git@github.com>:账号名/仓库名.git从远程仓库克隆项目到本地 -
git merge dev合并指定分支到当前分支
文件相关操作
将文件添加到仓库
-
git add 文件名将工作区的某个文件添加到暂存区 -
git add .将本地目录下所有发生变更的文件添加到暂存区 -
git add -u添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件 -
git add -A添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件 -
git add -i进入交互界面模式,按需添加文件到缓存区
将暂存区文件提交到本地仓库
-
git commit -m "注释"将暂存区内容提交到本地仓库 -
git commit -a -m "注释"跳过缓存区操作,直接把工作区内容提交到本地仓库
比较文件异同
-
git diff工作区与暂存区的差异 -
git diff 分支名工作区与某分支的差异,远程分支这样写:remotes/origin/分支名 -
git diff HEAD工作区与HEAD指针指向的内容差异 -
git diff 提交id 文件路径工作区某文件当前版本与历史版本的差异 -
git diff –-stage工作区文件与上次提交的差异(1.6 版本前用 –-cached) -
git diff 版本TAG查看从某个版本后都改动内容 -
git diff 分支A 分支B比较从分支A和分支B的差异(也支持比较两个TAG) -
git diff 分支A…分支B比较两分支在分开后各自的改动另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 –stat 参数
查看历史记录
-
git log查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明) -
git log -p -次数查看最近多少次的提交记录 -
git log --stat简略显示每次提交的内容更改 -
git log --name-only仅显示已修改的文件清单 -
git log --name-status显示新增,修改,删除的文件清单 -
git log --oneline让提交记录以精简的一行输出 -
git log –-graph –-all –-oneline图形展示分支的合并历史 -
git log -–author=作者查询作者的提交记录(和grep同时使用要加一个--all-match参数) -
git log --grep=过滤信息列出提交信息中包含过滤信息的提交记录- 例如:
git log --grep=master --grep=feat --all-match// 满足这两个查询条件,后面需要使用--all-match
- 例如:
-
git log -S查询内容和–grep类似,S和查询内容间没有空格 -
git log fileName查看某文件的修改记录 -
git log --committer=提交者名称查看指定提交者相关的提交
代码回滚
-
git reset HEAD^恢复成上次提交的版本 -
git reset HEAD^^恢复成上上次提交的版本,就是多个^,以此类推或用~次数 -
git reflog引用日志reflog并不是Git仓库的一部分,它单独存储,它纯属是本地的。 (git reflog命令显示的内容,应该是存储在.git/logs/HEAD文件中,或者是.git/logs/refs目录中的文件。)也就是说
git reflog命令中保留了从clone仓库开始,用户所有在本地库中的操作。
可以通过使用git reflog命令,就可查看到所有历史版本信息。由于查看所有历史版本信息的目的,大多是为了进行版本回退或恢复操作所使用,从中找到所需的commit索引,所以该命令被命名为reflog,即:引用日志。作者:繁华似锦Fighting
链接:www.jianshu.com/p/7e4cef386… -
git reset –hard 版本号 -
–soft:只是改变HEAD指针指向,缓存区和工作区不变; -
–mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变; -
–hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态;
版本库相关操作
git rm 文件名删除版本库文件git checkout — test.txt版本库里的版本替换工作区的版本
远程仓库相关操作
-
git push -u origin master同步远程仓库 -
git remote add origin <git@github.com>:帐号名/仓库名.git本地仓库内容推送到远程仓库 -
git clone <git@github.com>:git帐号名/仓库名.git从远程仓库克隆项目到本地 -
git remote查看远程库信息 -
拉取远程分支到本地仓库:
git checkout -b 本地分支 远程分支会在本地新建分支,并自动切换到该分支git fetch origin 远程分支:本地分支会在本地新建分支,但不会自动切换,还需checkoutgit branch –set-upstream 本地分支 远程分支建立本地分支与远程分支的链接
-
git fetch origin master同步远程仓库更新
分支相关操作
-
git checkout -b dev创建分支, -b表示创建并切换分支-
上面的命令相当于下面的两条命令:
-
git branch dev创建分支 -
git checkout dev切换分支
-
-
-
git branch查看分支 -
合并分支:
git merge dev用于合并指定分支到当前分支git merge --no-ff -m “merge with no-ff” dev// 加上-–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
-
git branch -d dev删除指定分支,注意:当前所在的分支不能是要删除的分支,需要切换到别的分支后,再删除指定分支 -
git push origin --delete dev删除远程分支 -
git log --graph --pretty=oneline --abbrev-commit查看分支合并图 -
git branch -m dev development重命名分支, 将dev分支重命名为development
git 相关配置
安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效)
-
git config --global user.name “用户名”设置用户名 -
git config --global user.email “用户邮箱”设置邮箱 -
git config --global user.name查看用户名是否配置成功 -
git config --global user.email查看邮箱是否配置
其他查看配置相关
-
git config –-global -–list查看全局设置相关参数列表 -
git config --local --list查看本地设置相关参数列表 -
git config –-system –-list查看系统配置参数列表 -
git config –-list查看所有Git的配置(全局+本地+系统) -
git config --global color.ui true显示git相关颜色
撤消某次提交
-
git revert HEAD撤销最近的一个提交 -
git revert 版本号撤销某次commit
标签
-
git tag 标签打标签命令,默认为HEAD -
git tag显示所有标签 -
git tag 标签 版本号给某个commit版本添加标签 -
git show 标签显示某个标签的详细信息