zoukankan      html  css  js  c++  java
  • git 备忘录

    git 是一个版本控制工具,最大的作用当然是版本的记录,以及实现多分支并行开发
    参考 官方文档 他人博客

    1. git操作流程

    2. git常用命令

    • 2.1 checkout 用于切换分支,更新文件
    # 从当前分支,当前位置(或者指定revision_num位置),新建一个分支,并切换到该分支
    $ git checkout -b [branch] [revision_num]
    
    # 切换到指定分支,并更新工作区
    $ git checkout [branch-name]
    
    # 将仓库最新的提交的代码,覆盖掉本地
    $ git checkout .
    
    # 删除本地分支
    $ git branch -d [branch-name]
    
    • 2.2 branch 分支的相关操作
    # 列出所有本地分支
    $ git branch
     
    # 列出所有远程分支
    $ git branch -r
     
    # 列出所有本地分支和远程分支
    $ git branch -a
    
    • 2.3 add 将修改文件加入到工作区中
    # 添加指定文件到暂存区
    $ git add [file1] [file2] ...
     
    # 添加指定目录到暂存区,包括子目录
    $ git add [dir]
     
    # 添加当前目录的所有文件到暂存区
    $ git add .
    
    • 2.4 commit 提交工作区的修改文件
    # 提交暂存区到仓库区
    $ git commit -m [message]
     
    # 提交暂存区的指定文件到仓库区
    $ git commit [file1] [file2] ... -m [message]
    
    • 2.4 push 推送仓库区的所有提交文件到远程仓库
    # 上传本地指定分支到远程仓库
    $ git push [remote] [branch]
    
    
    • 2.5 merge 合并指定分支到当前分支
    # 先切换到需要被合并的分支,如master
    $ git checkout master
    
    # 合并操作,一般最好添加--no-ff 参数, 这样就会单独生成一个合并的版本点,易于通过分支图分析查看
    $ git merge --no-ff develop
    
    • 2.6 rebase 将分叉捋顺
    #  将当前没有提交的分叉,rebase到最新提交的版本之后
    $ git rebase [<upstream>]  <branch>
    
    • 2.7 cherry-pick 合并指定历史版本提交的代码
    # 合并指定历史版本提交的代码,并提交。如果这个版本的代码依赖更早的未合并的代码,那么代码会出现在本地,但是不会commit;
    $ git cherry-pick <commitId>
    
    • 2.8 tag 给指定版本打标签,一般适合版本发布,阶段里程碑等
    # 创建一个标签
    $ git tag [-m <msg>] <tagname> [<commitId>]
    
    # 将创建的标签推送到远程仓库
    $ git push [<upstream>]  <tagname>
    
    # 列表查看标签
    $ git tag -l
    
    # 查看一个标签详情
    $ git tag -v <tagname>
    
    # 删除指定标签
    $ git tag -d <tagname>
    
    
    • 2.9 stash 将工作空间,以及暂存区的修改还原成最新提交的版本,同时生成一个包含修改内容的stash
    # 自动还原代码,同时创建一个stash
    $ git stash save [<msg>]
    
    # 查看stash列表
    $ git stash list
    
    # 将指定的stash的修改应用到当前分支, 并且移除stash记录
    $ git stash pop [<stashId>]
    
    # 将指定的stash的修改应用到当前分支,但是不会移除stash记录
    $ git stash apply [<stashId>]
    
    # 移除一个stash记录,如果不写stashId,那就回移除最新的stash记录
    $ git stash drop [<stashId>]
    
    • 2.10 diff 查看不同版本,分支的代码区别
    # 查看当前working area本地代码 和 上次提交到staging area的区别,有哪些被改动,以及改动了多少行
    $ git diff --stat
    
    # 查看当前working area本地代码 和 sit 分支 的staging area的区别
    $ git diff sit
    
    • 2.11 log 查看git历史记录,以及分支走向
    # 查看git分支图 
    $ git log --pretty=oneline --graph --all -8
    
    # 查看提交记录
    $ git log --pretty=oneline
    

    3. 修改的还原,以及版本回退

        commit后的版本回退会涉及到git reset [--soft | --mixed | --hard] 命令,--soft只会将repository(仓库区)的代码恢复到指定版本,workspace(工作区)和index(暂存区)的代码都不会变动; --mixed(默认)会将repository和index的代码恢复到指定版本,而workspace的代码不会变动; --hard会将repository,index,workspace的代码都恢复到指定版本。一般使用--hard就可以了。

    • 修改文件还没有被add的情况
    
    # 3.1 恢复暂存区的指定文件到工作区
    $ git checkout -- [file]
     
    # 3.2 恢复某个commit的指定文件到暂存区和工作区
    $ git checkout [commit] [file]
     
    # 3.3 恢复暂存区的所有文件到工作区
    $ git checkout .
    
    
    • 3.4 修改文件已经add,还没有commit的情况
    # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变,这里的HEAD表示最新的版本
    # 重置之后,因为工作区还没有变,所以还需要进一步checkout,来进行还原
    $ git reset --mixed HEAD [file]
    $ git checkout -- [file]
     
    # 3.5 重置暂存区与工作区,与上一次commit保持一致(相当于进行上面的两步操作)
    $ git reset --hard
     
    
    
    • 3.6 修改文件已经commit,但是还没有push的情况
    # 查看所有提交的记录,找到想要还原到的位置,并ctrl+m,移动光标复制id
    $ git log --pretty=oneline
    
    # 3.7 直接把工作区,暂存区,仓库区 都还原到 指定版本的位置(使用HEAD^表示上一个版本)
    $ git reset --hard HEAD"^" 
    
    • 3.8 修改的文件已经push到远程仓库
    # 查看提交的记录找到版本id,通过git revert 移除指定版本
    $ git revert HEAD
    
    • 3.9 删除已经提交到远程仓库的文件,但是不希望删除本地的
    # -r 表示递归(recursive)删除, --cached 表示会从stage,index中移除,但是工作区的文件不会受到影响
    git rm -r --cached filePath
    git commit -m "message"
    git push
    
  • 相关阅读:
    java一个简单的线程池小例子
    java通过反射复制实体类
    java通过反射获取Object的属性
    java时间对比
    软件工程基础最后第一次作业 总结
    C++语言程序化设计——第五次作业
    软件工程基础——第四次作业
    C++语言程序化设计——第四次作业
    软件工程基础第三次作业——原型设计
    C++语言程序化设计——第三次作业
  • 原文地址:https://www.cnblogs.com/IC1101/p/11236312.html
Copyright © 2011-2022 走看看