1.常用的命令

mkdir     文件夹名 创建文件夹
clear 清楚屏幕
ls或者ll 将当前目录下的子文件和子目录平铺在控制台
find 目录名 将对应目录下的子孙文件或子孙目录平铺在控制台
rm 文件名 删除文件
mv 源文件 重命名文件
cat ... 查看对应文件内容

2.git高级命令

git 操作基本流程

  1. 创建一个文件夹(项目)

    git init 项目下出现 .git 文件
  2. git全局配置

    git config --global user.name "XXXX"

    git config --global user.email "XXXX"
  3. 在所在项目中工作 (例如你在src文件下写完你的代码)

    项目代码写完,执行 git add 路径 (一般直接写 git add ./ 将所有代码提交到暂存区

    git add ./命令流程(先到版本库再到暂存区 git hash-object -w 文件名 git update-index 不理解就去看git的底层命令)
  4. 代码提交 git commit -m "注释内容" (提交到本地库)
  5. 分支上工作(项目主分支是dev,开发使需要创建新的分支,例如创建test)

    1. 创建分支 git branch test

    2. 切换分支 git checkout test (切换操作,必须保持分支的处于已提交状态)

    注:可以直接创建并切换 git checkout -b test

    3. 分支上工作顺序 (首次无需拉取远程dev代码)

    4. 拉取远程dev代码(或者合并dev代码)

    git pull origin "dev"或git merge dev

    处理冲突,然后工作

    5. 事情处理完,将修改后内容添加至暂存区

    git add ./

    6. 添加暂存区后再添加到本地仓库

    git commit -m "注释"

    7. 将分支代码提交到远程仓库

    如果项目是首次创建,需要和远程仓库连接(如果项目是直接从远程 clone,则无需操作)

    git remote add origin 地址

    git push -u origin test

    8. 提交分支后,团队leader会审查代码,再合并到dev上

git操作

  1. 如何修改分支名称?

    需要将分支br_rename_old修改为br_rename_new,执行如下步骤:

    1、执行命令git checkout br_rename_old

    2、执行命令git pull origin br_rename_old将代码更新到和远程仓库一致

    3、执行命令git branch -m br_rename_old br_rename_new将本地仓库的br_rename_old的名称修改为br_rename_new

    4、执行命令git push --set-upstream origin br_rename_new将本地分支push到远程仓库

    5、执行命令git push origin --delete br_rename_old将远程分支br_rename_old删除

  2. 如何删除暂存区文件?(可以使用编辑自带)

    1、仅仅删除暂存区文件

    git rm --cache 当前文件所在目录 (例如git rm --cache src/vdfvsdfvosdjfvosdfvdof.txt)

    2、暂存区和工作区都删除

    git rm -f 当前文件所在目录 (例如 git rm -f src/vdfvsdfvosdjfvosdfvdof.txt)

  3. 如何删除版本库?(已提交)

    1.仅仅只是撤销已提交的版本库,不会修改暂存区和工作区

    当我们执行 --soft 命令后,可以看到控制台无任何输出。它只是把HEAD指向了上一个版本

    git reset --soft HEAD^(指向上一个版本)

    git reset --soft 版本库ID


    2.仅仅只是撤销已提交的版本库和暂存区,不会修改工作区

    git reset ----mixed HEAD^

    3.彻底将工作去/暂存区和版本库记录恢复到指定的版本库

    git reset --hard HEAD^ (返回上一个)

    git reset --hard HEAD@{n}(通过reflog返回)或者
    git reset --hard 版本库id(通过reflog返回)**

  4. git fetch作用?

    更新远程 从远端仓库中下载commits, files, refs到本地仓库中。当你想要看看其他人都在做些什么的时候,就要使用fetch命令。

    你可以认为git fetch是这两者中更加安全的那个,即便下载了远端的内容,但也不会更新你本地仓库的版本状态,以保证你本地当前代码完好无损。反观git pull命令则是一个更加激进的命令,它会下载当前正在工作的分支对应的远端内容,并且在下载成功之后马上执行一个git merge命令,为新下载下来的远端内容创建一次merge commit。此时如果你有正在进行中的工作还没准备好进行合并,这些行为可能会造成代码冲突。

  5. git stash作用?(以及git stash pop)

    在某分支上修改内容,这时候却需要切换其他分支,但没修改好不想提交,可以使用git stash 命令,将但前分支没修改好的代码,保存至堆栈区,在切换到别的分支操作。在别的分支操作完,切回到刚才的分支,可以先将刚才分支删除,在重新创建,切换后,在把刚才保存在堆栈的修改内容,pop出来,执行 git stash pop命令(可以在任意分支pop出来)

  6. 删除分支?

    git branch -D '分支名' 删除本地分支

    git push origin --delete 分支名 删除远程分支

  7. 如何更新本地分支内容?(例如主分支为dev,当前分支为test)

    如果想拉去dev分支最新代码

    方法一:git pull origin dev (做了两步操作,拉去dev最新代码,并将它合并到当前分支)

    方法二:git merge dev (将dev分支合共到当前分支,dev不是最新还需要切到dev分支更新,切换之前先git stash)

  8. 常用命令

    git branch -r 查看所有远程分支 git branch -a 列出所有本地分支

    git checkout - 切换到上一个分支 (可以方便两个分支之间进行切换)

    git push origin --delete 分支名 删除远程分支

    git status 显示有变更的文件

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

    git diff 显示暂存区和工作区的差异 (你可以查看你改了什么,前期你没有添加到暂存)

    git fetch 下载远程仓库所有变动 (哪些分支新建了等)

    git stash (未跟踪的文件不会被缓存,例如新创建的文件)

    git stash list 查看缓存了几条

    git stash save "test-cmd-stash"

    git stash pop //命令恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个stash删 除,并将对应修改应用到当前的工作目录下。(并将缓存拷贝删除)

    git stash apply //命令,将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝。

    git stash apply stash@{n} n表示第几个到工作区

    git stash drop //移除stash 移除具体哪一个

    git stash drop stash@{n}

    git stash clear //删除所有缓存的stash

  9. 撤回push操作?(远程仓库)撤回已经提交到远程的代码

    先head指向要回到的版本,在强行推送到远端

    git push --force

例如撤回前两个,只需将本地head指向第三个,在强行推送到远端

git reset --hard 1c41df20421e36343d453d64477e0594fd98b041

git push --force

10. reset回退commit,后悔咋办?

例如执行git reset --hard HEAD^,指向了别的版本,想在回来。

执行git reflog 查看所有 HEAD的切换 找到版本id,在执行git reset --hard 版本id

上图是执行git reflog后的结果

git reflog展示你历史操作记录,在你执行错误命令时,可以帮助你快速返回执行错误之前的状态

reflog第一个记录(HEAD@{0})就是你最新的操作记录,如果你想返回这操作之前的一个步骤,只需将 HEAD指向HEAD@{1} ,具体操作如下:

git reset --hard HEAD@{1} 或者 git reset --hard baa789e (对应的版本id)

Git在项目中使用技巧的更多相关文章

  1. git在项目中的实际运用

    项目中只运用git版本管理的情况下: 1.创建分支命令: git branch (branchname) 切换分支命令: git checkout (branchname) 当你切换分支的时候,Git ...

  2. git忽略项目中的指定文件

    git仓库提交原则:提交给远程仓库的只有源代码和相关的配置文件 如果是使用模板建立的仓库,会自带有.gitignore文件,无需再建立.当然如果需要在指定文件忽略,只需要在这个文件中添加指定的文件即可 ...

  3. git统计项目中成员代码量

    查看git上个人代码量 git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; su ...

  4. Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)

    最近在项目中使用Git进行代码管理,之前一直用SVN进行管理,现在谈一谈Git在项目中如何与EGit插件配合使用,高效同步开发. 使用过SVN一段时间的人,初识Git一定感觉很别扭,发现会遇到各种各样 ...

  5. 使用git向github中添加项目并更新(备忘录)

    今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...

  6. 在Spring tools suite中使用git 共享项目

    我们都在eclipse 和 myeclipse中使用过cvs 和 svn 版本控制工具进行团队开发,今天我学习了另外一种版本控制工具git,下面我演示如何在Spring tools suite中使用g ...

  7. [git]安装git-pylint-commit-hook提高python项目中的代码质量

    什么是'git-pylint-commit-hook' 我在工作中,团队为了保证代码和提高代码的质量,要求每个项目都要求安装git-pylint-commit-hook,它是个钩子,会在你提交代码到本 ...

  8. Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出

    从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...

  9. 在VS项目中通过GIT生成版本号作为编译版本号

    上一篇博客写了如何在 .Net 项目使用 SVN 作为版本控制工具时生成与代码对应的组件版本号.虽然在公司一直使用 SVN ,但我却对 GIT 情有独钟(可能要归功于那段捣鼓 ROM 的时光),但少有 ...

随机推荐

  1. 为什么要使用 kafka,为什么要使用消息队列?

    缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理. 解耦 ...

  2. maven常用命令含义

    今天在开发过程中,对一个mapper.xml文件的sql进行了改动,重启tomcat后发现没有生效,首先考虑是不是远程服务开启着,导致代码没有走本地,确认远程服务是关闭的,的确是本地修改没有生效,于是 ...

  3. 为什么要配置JDK环境变量?

    1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH ...

  4. idea中Git的配置和Github上推拉项目

    1.去官网下载Git,并且安装它.安装步骤较为简单,此处就不再赘述. 2.在idea中配置Git信息 Git路径就是你电脑中安装Git的位置,找到git.exe文件(正常情况下,idea都会自动给你匹 ...

  5. C++ 虚继承实现原理(虚基类表指针与虚基类表)

    虚继承和虚函数是完全无相关的两个概念. 虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝.这将存在两个问题:其一,浪费存储空间:第二,存在二义性问题,通常可 ...

  6. AngularJS的核心对象angular上的方法全面解析(AngularJS全局API)

    总结一下AngularJS的核心对象angular上的方法,也帮助自己学习一下平时工作中没怎么用到的方法,看能不能提高开发效率.我当前使用的Angularjs版本是1.5.5也是目前最新的稳定版本,不 ...

  7. 简单才是美! SpringBoot+JPA

    SpringBoot 急速构建项目,真的是用了才知道,搭配JPA作为持久层,一简到底!下面记录项目的搭建,后续会添加NOSQL redis,搜索引擎elasticSearch,等等,什么不过时就加什么 ...

  8. 设计模式-观察者模式Observe的实现

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  9. java中请给出一个抽象类,可以继承实体类的例子

    例1.7.2(抽象类可以继承实体类)- class VehMark_to_win {    void steer() {        System.out.println("Turn st ...

  10. 微信小程序时间戳转为日期格式

    通常后台传递过来的都是时间戳,但是前台展示不能展示时间戳.就需要转化了. 功能说明: 微信小程序里,时间戳转化为日期格式,支持自定义. 拷贝至项目utils/utils.js中,并注意在js中声明下: ...