Git常用命令

Posted isky0824

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git常用命令相关的知识,希望对你有一定的参考价值。

阮一峰git教程

https下,git push、git pull每次需要输入密码

cd进入该项目路径,输入命令:git config --global credential.helper store,之后再次push、pull输入的密码会自动保存在本地,git就不会再提示输入密码了。

开始之前

ssh-keygen -t rsa -C "isky0824@qq.com"             创建ssh-key,将id_rsa.pub内容复制到github

git config (--global) user.name "isky0824"                                  设置名称

git config (--global) user.email "isky08240824@qq.com"      设置邮箱

 

正式开始

本地操作(HEAD表示当前最新的Commit)

git init                                    初始化一个空的git仓库

git add file                             添加单个文件

git add ./-A                            添加所有的文件(修改的、删除的、新加的)

git add -u                               添加修改的文件和删除的文件(不包含新加的文件)

git commit -m "备注"            将内容提交到缓存区

git status                               查看当前缓存区中的状态

第一次讲本地文件夹导入到github

git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:isky0824/work.git
git push -u origin master

git diff file                          查看工作区中该file与暂缓区中该file的差异,如果还没add到暂缓区,则查看工作区本次修改的差异,如果没有修改,则不作任何输出

git diff dev file                            查看工作区中该file与另一分支dev中该file的差异

git diff --cached <commit> file 查看缓存区中该file与版本库中某次提交中(默认HEAD)该file的差异

git diff HEAD file                   查看工作区中该file与版本库HEAD指向的版本中该file的差异

git log <--graph>                     查看缓存区中的历史提交(查看分支合并图)

git log -1                                          显示最后一次提交的log

git log --pretty=oneline        单行查看(简洁版)

git reflog                                显示每次操作的命令和状态

git reset --hard HEAD^         回滚到当前版本HEAD的前一次提交

git reset --hard HEAD~5       回滚到当前版本HEAD的前五次提交

git reset --hard 9527             回滚到commit id为9527的提交

git checkout -- file/.               撤销工作区的修改,回到HEAD版本

git reset HEAD .                     将暂缓区中的所有file放回工作区(删除暂缓区所有file)

git reset HEAD file                 将暂缓区中的该file放回工作区(删除暂缓区中的该file)

1、文件还没有放到缓存区,该命令将撤销工作区该file的修改内容,回到版本库的最新状态

2、文件已经提交到缓存区,然后又修改了,该命令将撤销第二次修改,file将回到缓存区的状态

git rm file                                 删除版本库里的file,要执行git commit

 

远程操作

git clone git://github.com/isky0824/test.git   克隆远程仓库到本地

git clone -b dev git://github.com/isky0824/test.git   克隆远程仓库的dev分支到本地

git remote add origin url           将本地仓库与远程关联

git remote <-v>                          查看远程的名称,使用-v可以查看详细信息

git remote show origin             显示远程origin详细信息

git remote rename a b               将远程的名字从a改为b

git push -u origin master          第一次将本地master推送至远程的master,并关联起来

git pull                                              从远程仓库更新所有分支,并merge到当前分支的工作区

git pull origin dev:master               从远程仓库更新dev分支,并merge到master分支

git fetch                                            从远程仓库更新所有分支,不merge到当前分支的工作区

git fetch origin master                    从远程仓库更新master分支到本地仓库

git fetch 与 git pull的区别:

相同点:

1、这2个命令都会将远程仓库更新到本地仓库;

2、这2个命令都会从远程仓库更新本地仓库中的所有分支,而不仅是当前分支;

不同点:

1、前者会将远程仓库更新到本地仓库,但不会merge到任何分支的工作区;

2、后者不仅会将远程仓库更新到本地仓库,还会merge到当前分支的工作区,但不会merge到其他分支的工作区(切换到其他分支后,可以使用git merge进行手动merge);

git clean                                                 清理那些没有track的文件和路径,-n 显示将要删除的文件和目录, -x 删除忽略文件已经对git来说不识别的文件,-d -----删除未被添加到git的路径中的文件,-f -----强制运行

 

 

分支操作

master分支应该是非常稳定,仅用于发布新版本,不能在上面干活;团队开发都在dev分支上(测试也可以),每个人从dev创建自己的dev-my分支,然后往dev合并;dev不稳定,等开发测试完成后,准备发布的时候,再将dev合并到master,然后在master分支发布1.0版本。

git branch                   查看所有本地分支,当前分支的前面会标一个*号

git branch -r                查看所有远程分支

git branch -a                 查看所有分支(本地+远程)

git branch dev            创建dev分支

git branch -d/-D dev      删除本地dev分支(-D是强行删除,用于删除没有合并想要丢弃的分支)

git branch -r -d/-D dev  从本机缓存中删除origin/dev分支,不删除服务器的origin/dev分支

git push origin --delete dev 删除远程dev分支(不删除本地dev分支)

git checkout dev         切换到dev分支(新clone的项目,一般只能看到master分支,如果直接创建dev分支,那么是基于master创建的dev,而且这个dev还没有和origin/dev关联,所以最好是先执行git checkout dev或者git checkout -b dev origin/dev,此命令会创建切换到dev并关联origin/dev)

git checkout -b dev                            创建dev分支,并切换到dev分支

git checkout -b dev origin/dev          创建本地dev,并和origin/dev关联

git branch --set-upstream dev origin/dev 将本地新创建的dev与origin/dev关联起来,如果origin/dev不存在,则创建origin/dev(此条好像已作废,下条可以实现相同效果,抽空试试)

git push --set-upstream origin dev   将本地新建的dev分支推送到origin(会新建dev分支)

git merge <--no-ff> dev                       将dev分支合并到当前分支(可能是master),如果合并遇到冲突,需要手动修改冲突,然后git add filename,并git commit -m "..."提交。--no-ff表示执行正常合并,在Master上执行合并时建议使用--no-ff参数,这样会在Master分支上生成一个新节点(如左图,否则如右图)。为了保证版本演进的清晰,我们希望采用这种做法。

                 技术图片                           技术图片

git merge dev --no-ff -m "备注"   将dev分支合并到当前分支(禁用Fast-forward模式,会自动生成一个commit,删除dev分支后,可以保留分支信息)

git merge --abort                          撤销merge

git reset --HARD                          merge完成后有个bug,可以回到merge之前的版本

git stash                                  存储当前的工作进度,以便于后期恢复到当前进度

git stash list                            查看所有暂存的工作进度

git stash pop                           将最后一次暂存的工作进度恢复,然后删除暂存记录

git stash apply (stash@{0})   将暂存的工作进度恢复,但是并不删除暂存记录

git stash drop (id)                   删除暂存记录

git stash clear                         清空暂存记录

git rebase                                        把本地没有push的分叉提交历史整理成直线,使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

标签管理

git tag v1.0 (123456)    创建标签v1.0(默认为HEAD打标签,这里为12345这次commit打标签)

git tag -a v1.0 -m "备注" (123456) 创建标签并打上备注

git tag                                              查看所有标签

git show v1.0                                  查看v1.0标签的详细信息

git tag -d v1.0                                  删除本地标签v1.0

git push origin :refs/tags/v1.0       删除远程标签v1.0(需要先删除本地标签v1.0)

git push origin v1.0                         将标签v1.0的commit提交到远程

git push origin --tags                      将所有本地未推送的标签推送到远程

 

其他不重要

git config (--global) color.ui true             git ui将适当地显示不同的颜色

git config (--global) alias.st status           告诉git,用st表示status

git config (--global) alias.co checkout    告诉git,用co表示checkout

git config (--global) alias.ci commit         告诉git,用ci表示commit

git config (--global) alias.br branch        告诉git,用br表示branch

git config (--global) alias.unstage ‘reset HEAD‘   告诉git,用unstage表示reset HEAD

git config (--global) alias.last ‘log -1‘       告诉git,用last表示log -1

阮一峰:http://www.ruanyifeng.com/blog/2014/06/git_remote.html

tig命令:https://juejin.im/post/5afabcb1f265da0b886d92b6

技术图片

技术图片

技术图片

以上是关于Git常用命令的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

git 常用命令

源代码管理相关命令(Git常用命令Nuget常用命令CMD常用命令)

git常用命令