Git在项目中使用技巧
1.常用的命令
mkdir     文件夹名 创建文件夹
clear     清楚屏幕
ls或者ll   将当前目录下的子文件和子目录平铺在控制台
find      目录名 将对应目录下的子孙文件或子孙目录平铺在控制台
rm 文件名  删除文件
mv 源文件  重命名文件
cat  ...   查看对应文件内容
2.git高级命令
git 操作基本流程
- 创建一个文件夹(项目)
git init项目下出现 .git 文件 - git全局配置
git config --global user.name "XXXX"
git config --global user.email "XXXX" - 在所在项目中工作 (例如你在src文件下写完你的代码)
项目代码写完,执行 git add 路径 (一般直接写 git add ./ 将所有代码提交到暂存区
git add ./命令流程(先到版本库再到暂存区 git hash-object -w 文件名 git update-index 不理解就去看git的底层命令) - 代码提交  
git commit -m "注释内容"(提交到本地库) - 分支上工作(项目主分支是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操作
如何修改分支名称?
需要将分支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删除如何删除暂存区文件?(可以使用编辑自带)
1、仅仅删除暂存区文件
git rm --cache 当前文件所在目录(例如git rm --cache src/vdfvsdfvosdjfvosdfvdof.txt)
2、暂存区和工作区都删除
git rm -f 当前文件所在目录(例如git rm -f src/vdfvsdfvosdjfvosdfvdof.txt)如何删除版本库?(已提交)
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返回)**git fetch作用?
更新远程 从远端仓库中下载commits, files, refs到本地仓库中。当你想要看看其他人都在做些什么的时候,就要使用fetch命令。
你可以认为git fetch是这两者中更加安全的那个,即便下载了远端的内容,但也不会更新你本地仓库的版本状态,以保证你本地当前代码完好无损。反观git pull命令则是一个更加激进的命令,它会下载当前正在工作的分支对应的远端内容,并且在下载成功之后马上执行一个git merge命令,为新下载下来的远端内容创建一次merge commit。此时如果你有正在进行中的工作还没准备好进行合并,这些行为可能会造成代码冲突。git stash作用?(以及git stash pop)
在某分支上修改内容,这时候却需要切换其他分支,但没修改好不想提交,可以使用git stash 命令,将但前分支没修改好的代码,保存至堆栈区,在切换到别的分支操作。在别的分支操作完,切回到刚才的分支,可以先将刚才分支删除,在重新创建,切换后,在把刚才保存在堆栈的修改内容,pop出来,执行 git stash pop命令(可以在任意分支pop出来)删除分支?
git branch -D '分支名' 删除本地分支
git push origin --delete 分支名 删除远程分支如何更新本地分支内容?(例如主分支为dev,当前分支为test)
如果想拉去dev分支最新代码
方法一:git pull origin dev (做了两步操作,拉去dev最新代码,并将它合并到当前分支)
方法二:git merge dev (将dev分支合共到当前分支,dev不是最新还需要切到dev分支更新,切换之前先git stash)常用命令
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撤回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在项目中使用技巧的更多相关文章
- git在项目中的实际运用
		
项目中只运用git版本管理的情况下: 1.创建分支命令: git branch (branchname) 切换分支命令: git checkout (branchname) 当你切换分支的时候,Git ...
 - git忽略项目中的指定文件
		
git仓库提交原则:提交给远程仓库的只有源代码和相关的配置文件 如果是使用模板建立的仓库,会自带有.gitignore文件,无需再建立.当然如果需要在指定文件忽略,只需要在这个文件中添加指定的文件即可 ...
 - git统计项目中成员代码量
		
查看git上个人代码量 git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; su ...
 - Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)
		
最近在项目中使用Git进行代码管理,之前一直用SVN进行管理,现在谈一谈Git在项目中如何与EGit插件配合使用,高效同步开发. 使用过SVN一段时间的人,初识Git一定感觉很别扭,发现会遇到各种各样 ...
 - 使用git向github中添加项目并更新(备忘录)
		
今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...
 - 在Spring tools suite中使用git 共享项目
		
我们都在eclipse 和 myeclipse中使用过cvs 和 svn 版本控制工具进行团队开发,今天我学习了另外一种版本控制工具git,下面我演示如何在Spring tools suite中使用g ...
 - [git]安装git-pylint-commit-hook提高python项目中的代码质量
		
什么是'git-pylint-commit-hook' 我在工作中,团队为了保证代码和提高代码的质量,要求每个项目都要求安装git-pylint-commit-hook,它是个钩子,会在你提交代码到本 ...
 - Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出
		
从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...
 - 在VS项目中通过GIT生成版本号作为编译版本号
		
上一篇博客写了如何在 .Net 项目使用 SVN 作为版本控制工具时生成与代码对应的组件版本号.虽然在公司一直使用 SVN ,但我却对 GIT 情有独钟(可能要归功于那段捣鼓 ROM 的时光),但少有 ...
 
随机推荐
- consumer 是推还是拉?
			
Kafka 最初考虑的问题是,customer 应该从 brokes 拉取消息还是 brokers 将消 息推送到 consumer,也就是 pull 还 push.在这方面,Kafka 遵循了一种大 ...
 - CHAR 和 VARCHAR 的区别?
			
1.CHAR 和 VARCHAR 类型在存储和检索方面有所不同 2.CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 ...
 - 什么是 ThreadLocal 变量?
			
ThreadLocal 是 Java 里一种特殊的变量.每个线程都有一个 ThreadLocal 就是每 个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了.它是为创建代价 高昂的对象获取线程安全 ...
 - SpringAOP+RabbitMQ+WebSocket实战
			
背景 最近公司的客户要求,分配给员工的任务除了有微信通知外,还希望PC端的网页也能实时收到通知.管理员分配任务是在我们的系统A,而员工接受任务是在系统B.两个系统都是现在已投入使用的系统. 技术选型 ...
 - github  编写README时常用的写法
			
参考:https://github.com/HeTingwei/ReadmeLearn#%E7%BC%96%E5%86%99readme%E6%97%B6%E5%B8%B8%E7%94%A8%E7%9 ...
 - 攻防世界shrine
			
shrine import flask import os app = flask.Flask(__name__) app.config['FLAG'] = os.environ.pop('FLAG' ...
 - numpy入门—numpy是什么
			
numpy是什么?为什么使用numpy 使用numpy库与原生python用于数组计算性能对比
 - 5_终值定理和稳态误差_Final Value Theorem & Steady State Error
 - 小白上学のcanvas零基础
			
<canvas> 元素 <canvas> 看起来和 <img> 元素很相像,唯一的不同就是它并没有 src 和 alt 属性.实际上,<canvas> ...
 - 一块小饼干(Cookie)的故事-上篇
			
cookie 如果非要用汉语理解的话应该是 一段小型文本文件,由网景的创始人之一的卢 蒙特利在93年发明. 上篇是熟悉一下注册的大致流程,下篇熟悉登录流程以及真正的Cookie 实现基本的注册功能 我 ...