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 的时光),但少有 ...
随机推荐
- 比较HQL、Criteria、Native-SQL这三者做查询的区别,以及应该如何进行选择?
HQL功能很强大,适合各种情况,但是动态条件查询构造起来很不方便: Criteria 最适合动态查询,但不太适合统计查询,QBE还不够强大.只适合简单的查询: Native-SQL可以实现特定的数据库 ...
- JWT jti和kid属性的说明
jti chaim=== JWT ID " jti"(JWT ID)声明为JWT提供了唯一的标识符. 标识符值的分配方式必须确保将相同值偶然分配给不同数据对象的可能性可以忽略不计: ...
- 怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的 字符串?
String s1 = "你好"; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1 ...
- 解释基于 XML Schema 方式的切面实现?
在这种情况下,切面由常规类以及基于 XML 的配置实现.
- 分享一波dubbo mybatis plus百度云链接
https://pan.baidu.com/s/1VtfoVJwan-XPvmQfBIKMhA
- Citus 分布式 PostgreSQL 集群 - SQL Reference(手动查询传播)
手动查询传播 当用户发出查询时,Citus coordinator 将其划分为更小的查询片段,其中每个查询片段可以在工作分片上独立运行.这允许 Citus 将每个查询分布在集群中. 但是,将查询划分为 ...
- Flink调优
第1章 资源配置调优 Flink性能调优的第一步,就是为任务分配合适的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略. ...
- Numpy计算逆矩阵求解线性方程组
对于这样的线性方程组: x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27 可以表示成矩阵的形式: 用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量 逆矩 ...
- 安装Backstage.io应用
Backstage介绍 What's Backstage? Backstage is an open platform for building developer portals. Powered ...
- W3School 教程整理
离线版大部分整理自 w3cschool ,少部分整理自 w3school ,由本人整理. 感谢 w3cschool 站长的无私奉献. 由于本人精力有限,此处的列表不一定能够及时更新,最新版本请到本人博 ...