• git常用命令


    git常用命令

    下面是几个专用名词:

    • workspace: 工作区
    • Index/Stage: 暂存区
    • Repository: 仓库区(本地仓库)
    • remote: 远程仓库
    • file: 文件
    • dir: 文件夹,目录

    新建代码库

    1. git init
    2. git init [project-name]
      • 新建一个目录,初始化为git代码库
    3. git clone [url]
      • 克隆整个项目

    配置

    git的设置文件为 .gitconfig , 他可以在主目录下,也可以在项目目录下;

    1. git config --list

      • 显示配置列表
    2. git config --global user.name "[name]"

      git config --global user.email "[email address]"

      • 设置提交代码时的用户信息
    3. 让git记住用户名和密码:
      在本地项目文件夹中找到 .git 文件夹,打开里面的 config 文件
      添加:

       ```
            [credential]
                  helper = store
       ```
      

      再输入一次用户名密码后就可以保存住了;

    增加/删除文件

    1. git add [file1] [file2]
      • 添加指定文件到暂存区
    2. git add [dir]
      • 添加指定目录到暂存区
    3. git add .
      • 添加当前目录的所有文件到暂存区;
    4. git rm [file1] [file2]
      • 删除工作区文件,并将这次删除放入暂存区
    5. git rm --cached [file]
      • 停止追踪文件,但是文件会保存在工作区

    代码提交

    1. git commit -m [messsage]
      • 提交暂存区到仓库区
    2. git commit [file1] [file2] -m [message]
      • 提交暂存区的指定文件到仓库区
    3. git commit -a
      • 提交工作区自上次commit之后的变化,直接到仓库区
    4. git commit -v
      • 提交时显示所有的diff信息

    git remote

    为了便于管理,git要求每个远程主机都必须指定一个主机名,git remote 命令就是用于管理主机名.在克隆版本库的时候,所使用的远程主机自动被命名为origin;

    1. git remote
      • 列出所有的远程主机。比如: origin
    2. git remote -v
      • 查看远程主机的网址。比如: origin git@github.com:jquery/jquery.git(fetch)
    3. git remote add <主机名>
      • 添加远程主机
    4. git remote rm <主机名>
      • 删除远程主机
    5. git remote rename <原主机名> <新主机名>
      • 修改远程主机名

    分支

    1. git branch
      • 列出所有的分支
    2. git branch -a
      • 列出所有的本地分支和远程分支
    3. git branch [branch-name]
      • 新建一个分支,但是依然留在当前分支
    4. git checkout [branch-name]
      • 切换到指定分支,并更新工作区
    5. git checkout -
      • 切换到上一个分支
    6. git merge [branch]
      • 合并指定分支到当前分支
    7. git cherry-pick [commit]
      • 选择一个commit,合并进当前分支
    8. git branch -d [branch-name]
      • 删除分支

    查看信息

    1. git status

      • 显示有变更的文件
    2. git log

      • 显示当前分支的版本历史
    3. git log --stat

      • 显示commit历史,以及每次commit发生变更的文件
    4. git log -follow [file]

      git whatchanged [file]

      • 显示某个文件的版本历史,包括改文件名;
    5. git log -p [file]

      • 显示指定文件相关的每一次diff
    6. git log -3

      • 显示过去的3次提交记录
    7. git diff

      • 显示暂存区和工作区的差异
    8. git diff HEAD

      • 显示工作区与当前分支最新commit之间的差异
    9. git diff [first-branch] [second-branch]

      • 显示两次提交之间的差异

    远程同步

    1. git pull
      • 取回远程仓库变化,并与本地分支合并
    2. git push
      • 上传本事指定分支到远程仓库
    3. git push [remote] --force
      • 强行推送当前分支到远程仓库,即使有冲突
    4. git push [remote] --all
      • 推送所有分支到远程仓库

    撤销

    1. git checkout [file]
      • 回复暂存区的指定文件到工作区
    2. git checkout [commit] [file]
      • 恢复某个commit的指定文件到暂存区和工作区(撤销某一次提交)
    3. git checkout .
      • 恢复暂存区的所有文件到工作区
    4. git reset [file]
      • 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
    5. git reset --hard
      • 重置暂存区与工作区,与上一次commit保持一致;
    6. git reset [commit]
      • 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
    7. git reset --hard [commit]
      • 重置当前分支的HARD为指定commit,同时重置暂存区和工作区,与指定commit一致
    8. git reset --keep [commit]
      • 重置当前HEAD为指定commit,但报纸暂存区和工作区不变
    9. git stash
      • 暂时将未提交的变化移除,稍后再移入
    10. git stash pop
      • 将git stash移除的变化移入.这个命令不能用在两个差别很大的分支上,否则不但会移入未提交变化,还会合并一些两分支有区别的代码,导致大量的bug,
        比如以a分支为基础,创建了b分支,在b分支上做了一些修改,此时git stash.在切换到a分支,这种情况下可以git stash pop.来把在b分支做的修改挪到a分支上;
    11. git revert [commit]
      • 撤销某一次提交,并生成一个新的commitId.简单的说就是把某一次添加的代码删除,然后以删除操作当成一次提交生成一个commitId.与git reset [commit] 的区别.比如原来有3次提交,git revert [commit],会生成第四次提交,而git reset [commit],则会变成两次提交;
        12 git revert HEAD
      • 撤销上一次提交,并生成新的commitId;

    submodule

    1. git submodule update

      • 根据主目录保存的子目录的commit,把子目录的commit对应的代码拉下来;
    2. git submodule init

      • submodule初始化
    3. git submodule update --init

      • 将submodule初始化,并把子目录的commit对应的代码拉下来
    4. git submodule add 仓库地址 文件路径

      • 仓库地址指子模块远程仓库地址,路径指将子模块放置在当前项目下的路径,如果没有会直接创建出来,比如:
      git submodule add git@github.com:lifei1016206057/jqfirst.git JqueryFirst
      

      JQueryFirst是子模块在主目录下的路径,之后就是git commit -m "创建submoduel子目录",git push了;

      submodule提交的流程,应该是这个样子的:

      • 1 确保主项目在wg分支,submodule也在wg分支
      • 2 cd进入submodule所在的目录,add + commit + push
      • 3 cd进入主项目所在的目录,用git status命令,应该可以看到刚才的submodule有new commit, 然后add + commit + push 昨天发的提交流程,是没有冲突时的情形。
        如果有冲突,则流程如下:
      • 1 确保主项目在wg分支,submodule也在wg分支
      • 2 cd进入submodule所在的目录,add + commit + push
      • 3 cd进入主项目所在的目录,用git status命令,应该可以看到刚才的submodule有new commit, 然后add + commit + push
      • 4 服务器提示冲突,执行命令 git pull, 紧接着执行 git submodule update
      • 5 现在,本地所有模块的版本都与服务器版本一致(你刚刚想要提交的版本也被还原了)。 此时,进入到你刚才修改的模块,切换到你想要的版本
      • 6 执行步骤3

    其他

    1. git config --global credential.helper store
      • 设置默认的用户名,密码
    2. git rebase
      • 合并commit,将多个合并为一个;
    3. git push --set-upstream origin fuhua
      • 本地有一个fuhua分支,远端没有.直接在远端创建一个fuhua分支,并把本地代码提交上去;
    4. 在vi编辑器中,ESC退出到命令状态, Ins进入编辑状态, shift + q进入编辑状态; wq退出并保存
  • 相关阅读:
    hadoop文件写入
    elastic(10) 基本查询
    hadoop 小知识点
    "hadoop namenode -format"命令的作用和影响的文件
    elastic(9)映射
    Linux 学习笔记之 --- epoll 事件模型详解
    Linux 学习笔记之 --- select 与 poll 事件模型详解
    Tornado 高并发源码分析之二---Tornado启动和请求处理流程
    Tornado 高并发源码分析之五--- IOLoop 对象
    Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
  • 原文地址:https://www.cnblogs.com/bridge7839/p/7233193.html
Copyright © 2020-2023  润新知