• 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命令.jpg

    git-ml.png

    git常用命令图解.png

  • 相关阅读:
    java第二次作业 数组和String类
    java第一次作业
    选择
    latex math
    sum的写法
    qt 4.8.5 vs 2012编译
    物联网笔记四:物联网网络及协议
    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
    物联网学习笔记二:物联网网关
    物联网学习笔记一:物联网入门的必备 7 大概念和技能
  • 原文地址:https://www.cnblogs.com/isky0824/p/12103214.html
Copyright © 2020-2023  润新知