• git 常用命令


    一、入门介绍

    1. 配置用户和邮箱

    git 配置文件存储在三个位置,分别对应系统、用户、项目;

    //所有系统用户配置
    git config --system user.name 'hzu'
    
    //当前系统用户设置
    git config --globle user.name "yourName"
    git config --globle user.email youremail@qq.com
    
    //局部设置: 进入项目文件下设置(某一项目)
    git config user.name "yourname"
    git config user.email youremail@qq.com
    
    //查看配置
    git config -l
    
    //查看某一项配置
    //git config <key>
    git config user.name
    git config user.email
    
    

    2. 获取命令帮助

    //格式
    //git help <verb>
    
    git help config
    

    二、基础命令

    单词:仓库(repository) 跟踪(track) 暂存(stage) 提交(commit) 推送(push) 拉取(pull)

    获取git仓库

    1. 在现有目录中初始化git仓库(对现有的项目进行管理)
    git init
    
    git add *.c
    git commit -m '提交'
    
    1. 克隆现有仓库
    git clone 地址
    //指定本地仓库的名称
    git clone 地址 库名
    

    3.记录每次更新到仓库

    //1. 查看当前文件状态
    git status
    
    //2. 创建一个文件
    echo 'my project' > README
    
    //3. 再次查看会发现 Untracked 下面列出 README这个文件,现在添加跟踪.
    //跟踪之后进入暂存区
    git add README
    
    //4. 状态简览
    git status -s
    git status --short
    //输出:
     M README
    MM Rakefile
    A  lib/git.rb
    M  lib/simplegit.rb
    ?? LICENSE.txt
    

    前面字母对应的意思

    字母 含义
    右M 修改未放暂存区
    左M 修改并在暂存区
    A 新添加到暂存区
    ?? 新添加未跟踪
    1. 忽略文件

    创建.gitignore 文件

    #示例
    # no .a files
    *.a
    
    # but do track lib.a, even though you're ignoring .a files above
    !lib.a
    
    # only ignore the TODO file in the current directory, not subdir/TODO
    /TODO
    
    # ignore all files in the build/ directory
    build/
     
    # ignore doc/notes.txt, but not doc/server/arch.txt
    doc/*.txt
    
    # ignore all .pdf files in the doc/ directory
    doc/**/*.pdf
    
    1. 查看已暂存和已修改
    // 查看未暂存的修改:工作区与暂存区的比较
    git diff
    
    // 查看已暂存的将要添加到下次提交里的内容
    git diff --staged
    git diff --cached
    
    1. 提交更新
    // 1. 这种方式会启动文本编辑器以便输入本次提交的说明
    git commit
    
    // 2. 添加提交说明
    git commit -m '提交说明'
    
    // 3. 跳过使用暂存区:Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:
    git commit -a -m '提交说明'
    
    1. 移除文件
    // 1. 删除本地文件、跟踪、提交
    git rm a.txt
    git commit -m 'deleted a.txt'
    
    // 2. 手动删除本地文件后:依旧需要执行
    git rm a.txt
    
    // 3. 删除跟踪,但是保留本地文件
    git rm --cached a.txt
    
    //⚠️如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)
    
    1. 移动文件
    git mv fileName_from fileName_to
    //上面一行命令等效下面三个
    mv a.txt a
    git rm a.txt
    git add a
    

    查看提交历史

    git log
    

    撤销操作

    1. 提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了
    git commit --amend
    
    //示例
    git commit -m 'initial commit'
    git add *
    git cmmit --amend
    //最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
    

    2.取消暂存的文件

    git reset HEAD fileName
    
    1. 撤消对文件的修改
    git checkout -- fileName
    

    远程仓库的使用

    1. 查看远程仓库
    git remote -v
    
    1. 添加远程仓库
    git remote add <shortname远程仓库的简写引用> <url> 
    
    1. 从远程仓库中抓取与拉取
    git fetch [remote-name]
    //抓取所有的远程仓库
    git fetch --all
    
    1. 推送到远程仓库
    git push [remote-name] [branch-name]
    git push origin master
    
    1. 查看远程仓库
    git remote show [remote-name] 
    git remote show origin
    
    1. 远程仓库的移除与重命名
    //重命名
    git remote rename oldname newname
    
    //移除
    git remote rm newname
    

    打标签

    1. 列出标签
    git tag
    git tag -l 'v1.8.*'
    
    1. 创建标签

    标签分为 轻量级标签附注标签;一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。附注标签是存储在 Git 数据库中的一个完整对象。

    // 1. 创建附注标签
    git tag -a v1.4 -m '这是标签信息'
    // 查看标签信息
    git show v1.4
    
    // 2. 创建轻量级标签,不加 -a -m
    git tag v1.4-lw
    
    
    1. 后期打标签

    要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)

    //查看提交
    git log --pretty=oneline
    
    git tag -a v.14 478f06(校验和)
    
    1. 共享标签

    默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname],或者推送所有标签:git push origin --tags
    5. 检出标签

    如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支

    git 别名

    语法:git config --global alias.别名 命令
    例如: git config --global alias.ci commit

    三、分支简介

    1. 创建分支

    $ git branch 分支名
    //基于 master 分支建立特性分支
    $ git branch sc/ruby_client master
    

    创建完仍在当前分支,git并不会自动切换到新分支中去。想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令git checkout -b newbranchName

    git log --oneline --decorate 命令查看各个分支当前所指的对象,或git branch -a

    2. 切换分支

    git checkout branchname

    3. 合并分支(冲突需要自己手动解决)

    git merge branchName 将branchName 分支的内容合并到当前分支

    4. 删除分支

    git branch -d branchName 删除名为branchName的分支

    5. 查看哪些分支已经合并到当前分支

    git branch --merged

    6. 查看所有包含未合并工作的分支

    git branch --no-merged

    7.将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有

    git branch -v

    8.拉取远程分支内容到本地

    git pull
    //等效:
    git fetch
    git merge
    

    9.删除远程分支

    git push [origin] --delete [branch-name]
    

    10.变基

    10.1 将branch-a的提交变基到master(master上也有提交)上:

    git checkout branch-a
    git rebase master
    git checkout master
    git meger branch-a
    

    把a中的提交在master上重新播放,使得master 拥有来a中的提交

    10.2 特别的:

    //“取出 b 分支,找出处于 b 分支和 a 分支的共同祖先之后的修改,然后把它们在 master 分支上重放一遍”; 
    git rebase --onto master branch-a branch-b
    

    b中不包含a的提交 在master上重新播放

    使用 git rebase [basebranch] [topicbranch] 命令可以直接将特性分支(即本例中的 server)变基到目标分支(即 master)上。
    git rebase master server

    11. 变基 vs. 合并

    总的原则是,只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作,这样,你才能享受到两种方式带来的便利。

    四、服务器上的 Git

    1.生成 SSH 公钥

    $ssh-keygen
    $ cd ~/.ssh
    $ ls
    authorized_keys2  id_dsa       known_hosts
    config            id_dsa.pub
    

    五、git工具

    1. 储藏与清理

    git stash储藏会处理工作目录的脏的状态 - 即,修改的跟踪文件与暂存改动 - 然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这些改动。

    储藏工作git stash;将刚刚储藏的工作重新应用:git stash apply

    六、git 分支命名建议

    分支 命名 说明
    主分支 master 主分支,所有提供给用户使用的正式版本,都在这个主分支上发布
    开发分支 dev 开发分支,永远是功能最新最全的分支
    功能分支 feature-* 新功能分支,某个功能点正在开发阶段
    发布版本 release-* 发布定期要上线的功能
    修复版本 bug-* 修复线上代码的 bug

    此命名建议来源于网站

  • 相关阅读:
    Java 基础 | 命名和运算
    JSON类型解析
    Python 实例方法、类方法、静态方法的区别与作用
    Python中logging模块的基本用法
    python中局部变量和全局变量
    C# 中 引用类型和值类型
    VS2008+SVN插件的使用
    使用linq to xml 怎么减小内存消耗
    linq to xml 中SaveOptions和LoadOptions的介绍
    C# 中==和Equals方法在引用类型中的区别
  • 原文地址:https://www.cnblogs.com/hzyy/p/10183097.html
Copyright © 2020-2023  润新知