zoukankan      html  css  js  c++  java
  • git 指令

    git 命令行操作

    参考网络上的总结和笔记,并亲身实践,稍作整合如下,送给你,希望有所帮助

    ----------------先明确几个概念-----------------
    工作区A、暂存区B、本地仓库C、远程仓库D

    关系如下:
    在IDE编辑文件属于工作区A
    add指令提交工作区A的更改到暂存区B
    commit指令提交暂存区B的内容到本地仓库C
    pull指令拉去远程仓库D的更改到本地仓库C并同步工作区A
    push指令推送本地仓库C的更改到远程仓库D

    ----------------一般的开发提交和冲突解决流程-----------------
    1 将所有/指定文件由工作区A添加到暂存区B
    git add .
    git add client/App.vue

    2 提交暂存区B到本地仓库区C
    git commit -m "更新全局通用组件"

    3 取回远程仓库D变化,并与本地仓库C合并,同时更新工作区A
    git pull
    git pull = git fetch + git merge
    git pull --rebase = git fetch + git rebase
    注意:
    实际操作中为避免提交记录中的乱merge现象,这里一般选择 git pull --rebase,
    在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决冲突,
    在解决完冲突后,用"git-add"命令去更新这些内容, 然后,你无需执行 git-commit,
    只要执行: git rebase --continue,这样git会继续应用余下的补丁。
    在任何时候,都可以用git rebase --abort参数来终止rebase的行动,并且mywork分支会回到rebase开始前的状态。

    4 如果有冲突,在工作区A解决冲突,更新这些内容的索引,然后同步本地仓库C
    git add .
    git rebase --continue

    5 将本地仓库C推送到远程仓库D
    git push

    ----------------git rm 的使用场景-----------------
    1 对于工作区A新增加的文件,如果还未add到暂存区B,如下操作会直接删除掉工作区A的该文件
    rm client/sss.css

    2 对于工作区A新增加/修改的文件,如果已经add到暂存区B,以下操作会删除工作区文件,并且将这次删除放入暂存区
    git rm -f client/sss.css

    ----------------撤销操作-----------------
    1 对于工作区A修改的文件,如果还没add到暂存区B,以下操作会撤销工作区A的修改,与暂存区B同步
    git checkout client/App.vue (撤销工作区A编辑的内容)

    2 对于工作区A修改/新增的文件,如果已经add到暂存区B,以下操作会重置暂存区B的指定文件,与上一次commit保持一致,但工作区不变
    git reset client/App.vue (撤销add,但是保留工作区A的修改和新增)

    3 对于工作区A修改/新增的文件,如果已经add到暂存区B,以下操作会重置暂存区与工作区的所有文件,与上一次commit保持一致
    git reset --hard (撤销add,同时撤销工作区A的修改和新增,使得工作区A暂存区B都同步恢复到之前)

    4 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
    git reset 9bd51685d

    5 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
    git reset --hard 9bd51685d

    6 重置当前HEAD为指定commit,但保持暂存区和工作区不变
    git reset --keep 9bd51685d

    ----------------远程同步-----------------
    1 git fetch 相当于是从远程获取最新到本地,不会自动merge
    git pull = git fetch + git merge

    git pull origin master
    = 如下指令:
    git fetch orgin master //将远程仓库的master分支下载到本地当前branch中
    git log -p master ..origin/master //比较本地的master分支和origin/master分支的差别
    git merge origin/master //进行合并
    = 以下指令:
    git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支
    git diff tmp //將當前分支和tmp進行對比
    git merge tmp //合并tmp分支到当前分支

    2 显示所有远程仓库
    git remote -v

    ----------------查看信息-----------------
    1 显示暂存区和工作区的文件变动 一般配置简写 gst
    git status

    2 显示当前分支的版本历史
    git log

    3 显示commit历史,以及每次commit发生变更的文件
    git log --stat

    4 显示指定文件相关的每一次diff
    git log -p [file]

    5 显示过去5次提交
    git log -5 --pretty --oneline

    6 查找改动某个文件所有的日志
    git log --pretty=oneline client/App.vue

    7 格式化输出
    git log --pretty=format:"%h %an %cd %s" client/App.vue
    git log --pretty=format:"%h %an,%cd:%s" client/App.vue
    选项 说明
    %H 提交对象(commit)的完整哈希字串
    %h 提交对象的简短哈希字串
    %T 树对象(tree)的完整哈希字串
    %t 树对象的简短哈希字串
    %P 父对象(parent)的完整哈希字串
    %p 父对象的简短哈希字串
    %an 作者(author)的名字
    %ae 作者的电子邮件地址
    %ad 作者修订日期(可以用 -date= 选项定制格式)
    %ar 作者修订日期,按多久以前的方式显示
    %cn 提交者(committer)的名字
    %ce 提交者的电子邮件地址
    %cd 提交日期
    %cr 提交日期,按多久以前的方式显示
    %s 提交说明

    ----------------比较差异-----------------
    1 显示暂存区和工作区所有变动文件的代码差异 一般配置简写 gd
    git diff

    2 显示暂存区和工作区指定文件的代码差异 (用于add前的比较)
    git diff client/App.vue

    3 显示暂存区和上一个commit的差异 (用于add后的比较)
    git diff --cached client/App.vue

    4 显示工作区与当前分支一个commit之间的差异(注意是工作区与commit之间的差异)
    git diff HEAD

    5 显示两次提交之间的差异(配合 git log -5 --pretty --oneline 使用)
    git diff 9bd51685d 9db0116a8
    git diff master develop

    -----------------查看提交----------------
    1 显示某次提交的元数据和内容变化
    git show 9bd51685d

    2 显示某次提交发生变化的文件
    git show --name-only 9bd51685d

    3 显示某次提交时,某个文件的内容
    git show 9bd51685d:src/views/index.ejs

    -----------------暂存操作----------------
    1 暂时将未提交的变化移除,稍后再移入
    git stash
    git stash pop

    ----------------分支-----------------
    1 列出所有本地分支
    git branch

    2 列出所有远程分支
    git branch -r

    3 列出所有本地分支和远程分支
    git branch -a

    4 新建一个分支,但依然停留在当前分支
    git branch [branch-name]

    5 切换到指定分支,并更新工作区
    git checkout [branch-name]

    6 新建一个分支,并切换到该分支
    git checkout -b [branch]

    7 新建一个分支,指向指定commit
    git branch [branch] [commit]

    8 切换到上一个分支
    git checkout -

    9 合并指定分支到当前分支
    git merge [branch]

    10 将本地分支dvelop_chen推到远程
    git push --set-upstream origin [branch]

    ----------------tag-----------------
    1 列出所有tag
    git tag

    2 新建一个tag在当前commit
    git tag [tag]

    3新建一个tag在指定commit
    git tag [tag] [commit]

    4 删除本地tag
    git tag -d [tag]

    5 删除远程tag
    git push origin :refs/tags/[tagName]

    6 查看tag信息
    git show [tag]

    7 提交指定tag
    git push [remote] [tag]

    8 提交所有tag
    git push [remote] --tags

    9 新建一个分支,指向某个tag
    git checkout -b [branch] [tag]

    ----------------其他-----------------
    git rebase

    ----------------删除本地、远程分支-----------------
    删除本地分支:
    git branch -d 分支名(remotes/origin/分支名)

    强制删本地:
    git branch -D 分支名

    删除远程分支:

    git push origin --delete guojing(分支名)

    远程已被删除,本地git branch -a 仍然显示的分支,采用命令更新:
    git fetch -p

    ----------------分支其他操作-----------------
    切换回历史分支:
    git checkout 8b473249(常用于排错)

    回退至上一版本:
    git reset --hard HEAD^
    回退至上上一版本:
    git reset --hard HEAD^^
    回退往上100个版本:
    git reset --hard HEAD~100

    本地回退:
    git reset --hard commit_id(可用 git log –oneline 查看)
    远程回退(接上步,然后强推到远程):

    git push -f

    ----------------补充操作-----------------
    终止rebase的行动:
    git rebase --abort

    出现 Your branch and 'origin/master' have diverged,
    (use "git pull" to merge the remote branch into yours)
    nothing to commit, working tree clean
    如果不需要保留本地的修改,只要执行下面两步:
    git fetch origin
    git reset --hard origin/master

    最近在公众号无意刷到的:https://mp.weixin.qq.com/s/Gl2JnYBTikYC_-9Ui0OKMA

    工欲善其事 必先利其器
  • 相关阅读:
    jquery验证手机号码和固定电话号码
    window下安装mongodb及php mongo扩展
    Html form 表单提交前验证
    验证电话号码中间四位加※
    php方法 隐藏手机号中间四位
    win7 64位安装redis 及Redis Desktop Manager使用
    Redis系列-远程连接redis并给redis加锁
    使用密码记录工具keepass来保存密码
    【消息队列MQ】各类MQ比较
    Syslog-ng
  • 原文地址:https://www.cnblogs.com/fengyouqi/p/11139285.html
Copyright © 2011-2022 走看看