zoukankan      html  css  js  c++  java
  • git 命令常用笔记

    1. 全局操作
    git --version //git 机器上是否存在
    git init --bare project.git //服务端:初始化一个新的仓库
    chown -R zhangsan:zhangsan project.git/ //修改仓库的权限
    2. 添加、提交修改、对比、重命名
    添加/提交:
    git add <file> //添加单个文件
    git add --all //添加所有,适合项目初始化或批量提交的时候
    git add . //进入某个文件夹根目录,表示添加此目录下面所有变更的文件
    git commit -m "操作说明" //提交
    对比:
    git diff HEAD^ -- readme.md //readme.md文件与上一个版本比较差异
    重命名:
    git mv a.php b.php //重命名
    git status -s //文件关联状态
    git commit -a -m "a.php文件修改为b.php" //-a修改的全部提交
    git push origin master //推到远程
    3. 日志查看
    git log //查看所有日志
    git log -2 //查看最近提交的2行
    git log --pretty=oneline //以行的形式显示
    git log --pretty=oneline --abbrev-commit //行短标识的显示形式
    git log --graph --pretty=oneline --abbrev-commit //查看分支合并图,并以行短标识的显示形式
    3. 查看历史命令
    git reflog
    4. 回滚版本
    git reset --hard commit_id
    git reset --hard e9a838d #返回到某个节点,不保留修改。
    git reset --soft e9a838d #返回到某个节点。保留修改 
    回滚到上N个版本的快捷方式:
    git reset --hard HEAD^ //上1个版本
    git reset --hard HEAD^^ //上2个版本
    git reset --hard HEAD^^^ //上3个版本
    当然如果要回退到上100个版本不可能100个^,可以:
    git reset --hard HEAD~100
    5.撤销修改,恢复删除,获取指定commit_id信息
    工作区:
    git checkout -- <file>
    git checkout -- readme.md
    git checkout -- . //恢复在当前目录下的所有修改
    暂存区:
    第1步:git reset --hard <file>
    第2步:按工作区的处理方式处理
    已经提交版本库:
    第1步:git reset --hard commit_id
    第2步:按回退的流程处理
    推送到远程库:
    恭喜你,无药可救
    获取指定commit_id文件信息:
    git checkout commit_id <file>
    git checkout e9a838d readme.md
    与git clean 混合使用:
    git checkout -- . && git clean -xdf
    6-1:清除
    git clean -df #返回到某个节点
    git clean 参数 -n 显示 将要 删除的 文件 和 目录 -f 删除 文件 -df 删除 文件 和 目录
    6-2.删除文件
    git rm <file>
    git commit -m "操作说明"
    7.分支操作
    查看分支:git branch
    创建分支:git branch <name>
    分支推送到远程:git push origin <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>
    强制删除一个没有合并过的分支:git branch -D <name> tips:慎用
    删除远程分支:git push origin --delete <name>
    7-1.重命名远程分支
    在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
    查看远程分支:git branch -av
    删除远程分支:git push origin --delete <oldname>
    重命名本地分支:git branch -m <oldname> <newname>
    推送本地分支:git push origin <newname>
    8.分支合并保留合并记录
    git merge --no-ff -m "merge with on-ff" dev
    tips:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并;而fast forward合并就看不出来曾经做过合并,默认不加--no-ff是按fast forward的合并方式。
    9.分支临时存储
    保存:
    git stash //备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。不带备注。
    git stash save "临时修改1001bug,暂存" //带备注
    git stash -a save "临时修改1001bug,暂存" // -a选项会把项目里面新加入的代码文件同时放到暂存区
    查看:
    git stash list //显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
    恢复:
    git stash apply [--index][<stash@{id}>] //恢复后,stash内容并不删除,你需要用git stash drop来删除
    git stash pop [--index][<stash@{id}>] //恢复最新(指定stash)并删除stash
    删除:
    git stash drop [<stash@{id}>] //删除某一个进度,默认删除最新进度
    创建分支
    git stash branch <branchname> <stash@{id}> //基于暂存区创建分支
    清空:
    git stash clear //清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
    参数解释:
    --index 参数:不仅恢复工作区,还恢复暂存区 <stash@{id}> 指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度
    以下命令恢复编号为0的进度的工作区和暂存区
    git stash pop -- index statsh@{0}
    10.标签(tag)管理
    列出所有tag:
    git tag
    详情查看:
    git show <tagname> //查看指定tag包信息
    git show v1.0
    创建:
    git tag <tagname> //新建一个标签,默认为HEAD
    git tag v1.0
    git tag <tagname> commit_id //指定一个commit id
    git tag v1.0 b1b76f
    git tag -a <tagname> -m "描述tag的说明" //带有备注tag的信息
    git tag -a v1.0 -m "供应链1.0开发完成,上线" b1b76f
    git tag -s <tagname> -m "描述tag的说明" //用私钥签名一个标签,PGP签名标签
    git tag -s <tagname> -m "供应链1.0开发完成,上线" b1b76f
    删除:
    未推送到远程:
    git tag -d <tagname> //删除指定tag包
    git tag -d v1.0
    已推送到远程:
    第1步:git tag -d v1.0 //删除本地
    第2步:git push origin :refs/tags/v1.0 //删除远程tag
    推送:
    git push <主机名> <tagname> //推送指定tag
    git push origin v1.0
    git push <主机名> --tags //一次性推送全部尚未推送到远程的本地标签
    git push origin --tags
    参数解释:
    origin:远程主机名
    11.忽略特殊不用提交的文件
    第1步:编写.gitignore文件
    第2步:把你需要过滤的文件直接写在.gitignore文件中。
    tips: .gitignore要通过版本库管理起来。官方已经提供了很多文件范例参考https://github.com/github/gitignore,可以把你需要的直接copy进.gitignore文件中。
    12.配置别名
    方便管理和使用命令,如git st就表示git status这是不是很爽
    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.br branch
    git config --global alias.unstage 'reset HEAD' //撤销修改
    git config --global alias.last 'log -l' //显示最后1次提交
    配置文件存放目录:
    cat .git/config
    删除别名:
    直接删除配置文件.git/config alias节点,指定别名的那一行,保存就行
    tips:当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中.
    13.git服务器管理
    管理公钥,用Gitosis
    控制权限,用Gitolite
    14. 删除不存在对应远程分支的本地分支
    查看远程分支状态:git remote show origin
    本地版本库中去除远程删除的分支:git remote prune origin
    15. 打包指定commit修改的代码
    git archive -o update.zip 待导出的ID(a3a12c4) $(git diff --name-only 待导出的上一个提交ID(3ba0909))
    例:git archive -o update.zip a3a12c4 $(git diff --name-only 3ba0909)
    Tips: 这个其实就是比较版本之前差异,然后导出不一样的。
  • 相关阅读:
    USACO2.3.3Zero Sum
    微信公众平台消息接口开发(8)小黄鸡(小贱鸡)机器人
    微信群二维码
    PHP正则表达式入门教程[转]
    微信公众平台消息接口开发(23)图片识别之男人味/女人味指数
    微信公众平台消息接口开发(50)在线点歌/在线音乐
    微信公众平台消息接口开发(21)图片识别之亲子鉴定
    微信公众平台消息接口开发(4)天气预报
    微信公众平台消息接口开发(5)股票查询
    微信公众平台消息接口开发(40)语音识别
  • 原文地址:https://www.cnblogs.com/yittxbug/p/10911927.html
Copyright © 2011-2022 走看看