GitHub工具多用在多人协作开发,多团队开发的开发模式中。入职前只是稍有涉略,基本命令尚不熟练,因为没在实际过程中遇到过。尤其是一些突发状况。这边使用GIT较多,操作也较多,中间确实遇到一些问题,才正经开始认识这些常用命令。

0.忽略

不必要的改动,比如编译生成的build目录,库文件,临时可执行文件等
  git 根据提交历史里的字符串定位指定的commit
  git log -S uplus_ble_role_type_t

 查找本地对应的分支
git branch --contains $string

0.1 本地忽略,就是只针对你的git生效,同步开发的其他程序员不会看到用到这个设置。

vi  .git/info/exclude  ,

在最下面,以行为单位,添加你需要忽略的目录、文件即可。应该支持通配符。

1. 回滚

等同于ctrl+z,当你做了半天,发现不对,想反悔的时候,或者因为一些不当操作,就用到回滚这系列操作了。就是各种取消操作。

1.1  基本的 git reset --hard HEAD ,

1.2 基本的 git reset --hard HEAD^  返回上一个版本

上面两个,在所谓 push之前,都可以用来取消当前的所有修改,HEAD的意思是最近的一次commit,是的你没看错,回到最近一次的commit,可以是你pull下来的,也可以是自己提交上去的。HEAD^是最近一次的上一次操作。就是这点区别。

但是当你push了,merge了之后,发现错了想反悔了,怎么办???

1.3 git reset --hard $(commit_id),退回到某一次更新ID

就是从 git log 中找到你想要返回的commit id。当你确定时,如果你想把刚刚做的,或者这个id之前的所有commit记录都取消,那么你可要慎重考虑下,因为这种操作是要强制修改服务器的,他会把这个commit之后的所有commit,都给清除掉。

1.4 git push origin (HEAD) --force,  强制回退,刷新服务器,或者是重置服务器。HEAD可选,HEAD一般代指当前commit的分支名。不加也没事,反正我还没碰到过。这个操作会把

好了,这就把你不想要的commit都给清掉了,或者说不想要的提交都清掉了,回到了那个指定为正确的版本。

但是,有时候可能commit已经找不到了,或者删了分支,或者清除了commit。这个时候怎么办?别急。除了git log,还有一个强有力的查找历史的命令

1.4  git reflog

怎么说呢,这个命令可以让你在一个操作记录版本库里,查找你要回退的操作。嗯,他跟commit不一样。它记载了你各种git操作,比如 checkout, revert ,push,merge,等等,实际就相当于操作日志,每个日志队对应一个编码值(HASH值,命令输出的第一列). 根据你自己的回忆,找到相应的hash值后,你就可以 --force了

回滚后依然记住要git push一下

2.分支

2.1  切换分支

2.2  创建分支副本,前提是分支得在服务端存在

git  checkout -b  new_branch_local    origin/branch_name(remote)

2.3  创建新分支,然后发布服务器。基于某个分支创建新分支,保留该分支的所有commit

1.切换到你想要复制的分支

2.git pull,拉过来最新代码

3.git  checkout -b  new_branch_local2.

4.git log 对照看下是否正确

5.git push origin new_branch_local2  推到远程

6. 重点: git branch --set-upstream-to=origin/new_branch_local2  据说是保持远程服务器自动同步的操作?

7.开始自己的改动操作。

2.3   合并指定目录的代码。不影响其他目录的改动。

有时候,一个功能模块可能存在于多个工程下,但是多个工程下除了相同模块,其他功能模块可能有很大区别。

某次,相同模块在别的地方被改了,需要更新进化。那么这时候,我们肯定不想用合并,因为可能在非相同目录上产生巨量的不必要的工作量。

git有这种便利操作吗。肯定有的,那就是 cherry-pick挑拣分支。

比如,另一个工程在另一个仓库里,前提是只涉及到相同模块的一次commit,那么我们就可以用命令把这次commit挑拣过来,作为一次补丁,放心的打在我们的相同模块上,当然,可能会导致一点点冲突,解决后在用命令提交即可。

2.3.1      git checkout res_tobe_fond

2.3.2      git log // find the corresponding  commit  included the modifation u want,make it sure .

2.3.3      git checkout res_tobe_update.

2.3.4      git cherry-up  commit_specificed

2.3.5      这时候可能会有冲突,如果没有直接  git push,到这里就结束了。否则看下面

2.3.6       如果有,git status  ; git diff 后会在代码里生成改动提示。VS里应该是个插件,改动的是两个版本的各自内容,你可以在最上面选择,那一行小字。

2.3.7       git add  改动后的修改

2.3.8       git cherry-pick --continue

2.3.9       git push...

2.4  if u just want pick some of the change from a commit , u can do...

git cherry-pick -n  $commitID

如果commit里面有多个文件,执行此命令后需要先unstage 并恢复不想要改动的文件

git reset HEAD <file_name>

git checkout -- <file_name>

可能还能用到  git clean -f $filename

然后不同的是,git commit  , git push

3.多行提交

while u're going to make a new commit message , generally u would use "git commit -m "blablabla".  You may find it not supportting multi-line input, then, how to input multi-line commit messeges , that's what we talk about on this tips.

多行提交有很多方式,

3.0  在你提交阶段 commi -m阶段,如果想实现分行多行

git co -m "commit title" -m "commit description"

或者 用这个shell本身支持的命令分行

git -m "commit title  回车

>  继续编辑 commit context

> commit end "  回车

3.1 在你刚刚add了一些文件后,发现少写了一些说明

git commit --amendgit

这回调出一个文本编辑界面,最上面是刚才编辑的提交说明,你可以接着写,然后提交

然后push

3.2 如果已经push了的话,也可以用3.1里的命令。如果已经涉及到了新的改动,想强制合并,

那么可以先add. 然后再调用上面的命令,在追加信息。

然后是强制上推的命令

git push origin (HEAD) --force (慎用吧,我是自己的临时分支,所以敢乱来)

4.git rebase -i  合并一些commit,然后成一个commit.有偷天换日之能.

5.删除(不用怕之前cherry-up过来的会被delete掉,那是新的commit了已经)

已有的本地分支要删除,搞起...

5.1切换到不被删除的分支

5.2 git branch -d [branch_name]. 先删除本地分支

5.3 git push origin --delete [branch_name].再删除远程分支

其他技巧

1. 在Readme.md中加入图示.

将图片放在仓库里面,在文件里链接它,最后 push 到 github 上。

github 图片链接格式:
![](img_url)

即 叹号! + 方括号[ ] + 括号( ) 其中叹号里是图片的URL。

(http://github.com/yourname/your-repository/raw/master/images-folder/xxx.png)

然后在 README.md 里添加:

例如:我在我的 gitbug项目中有个图片

![image](https://github.com/panacena/mengqu/blob/master/readme/Screenshot_2016-07-10-22-17- 15_zkk.com.mengqu.png)

Git 基本操作(入职亲体验)相关推荐

  1. 社交牛逼症研发小哥的校招和入职初体验

    今天校招story的主人公李同学,是今年入职百度的一个有着自来卷.网上聊天时喜欢发有趣表情.分享欲十足.乐观且有点社交牛逼症的研发小哥哥. 因为文章篇幅有限且要给大家分享更多干货,小哥哥的幽默乐观可能 ...

  2. git 新入职员工流程

    新入职员工工作流程 1.新进公司,先关联公司的代码仓库 git clone 仓库地址我们可以和远程建立链接 将本地仓库和线上仓库建立关联:git remote add origin [线上仓库的SSH ...

  3. 富士康科技集团_2018届菁干班_入职初体验

    窗外的轰雷锤醒了我的昏昏午睡,翻出尘封已久的电脑,一时不知从何看起,那就先写篇生活记录吧 7月13日正式入职,由于身体不适,从长沙一路到公司,大包小包都是妈妈帮我提着,我只能打个雨伞.拿个手机乖乖跟着 ...

  4. SaaS 中 6 种常见 UI 入职模式

    新手入职 新手入职是用户首次尝试产品的过程,如果做得好,会引导用户走上一条关键的道路,这条道路会让他们最终成功地使用并获取到产品价值. 在 SaaS 产品中,通过免费试用吸引用户.如果用户在第一次尝试 ...

  5. 科技云报道:让入职效率翻倍,数字认证电子签为滴滴“加速”

    科技云报道原创. 今年的招聘旺季,滴滴出行的HR们显得很淡定.再也没有堆积成山的纸质材料,海量的信息核实和资料归档-如今,HR们只需在电脑前操作,就可以在线完成批量的劳动合同签署和管理工作:新员工们通 ...

  6. 一键扫码,10分钟入职,听说“高配”公司都是这样做的

    科技云报道原创. "明天有18个入职的,要准备108份材料,包括身份证复印件.户口本.银行卡.离职证明.劳动合同-"对于企业HR而言,这样的员工入职场景再熟悉不过.堆积成山的纸质材 ...

  7. java实习生入职体验以及领悟

    同学们要做好心理准备,很多公司实习其实并没有培训,也没有手把手教你写代码的.所以打铁需要自身硬,希望想要找实习的小伙伴们或者是即将实习的小伙伴能够提前准备好相关知识.避免入职后如果被安排工作后手忙脚乱 ...

  8. 入职体检体检错了_我们如何更新入职体验并获得更多用户

    入职体检体检错了 by William Woodhead 威廉伍德黑德(William Woodhead) 我们如何更新入职体验并获得更多用户 (How we updated our onboardi ...

  9. 圆梦微软 — 旅游和入职体验

    点击上方关注 前端技术江湖,一起学习,天天进步 作者:歪知特博 https://zhuanlan.zhihu.com/p/415505797 终于正式入职了,六点下班,吃饭回到宿舍不到七点,不定时工作 ...

最新文章

  1. ubuntu14.04下使用A3E生成satg配置
  2. 《算法竞赛进阶指南》打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归、二进制状态压缩、dfs
  3. SpringBoot无法找到加载类 ,应用Feign其他服务无法package两类问题
  4. java hashmap 常用方法_Java的HashMap中的常用方法总结
  5. 《算法》笔记 17 - 数据压缩
  6. jupyter怎么调字体_夏天冰箱调到几档最好 冷藏调多少度合适
  7. jquery 源码分析
  8. mysql字段分隔符拆分_MySQL——字符串拆分(含分隔符的字符串截取)
  9. java的datatype_java基本数据类型--Basic Datatypes
  10. 让电脑「读懂」你的思想——java工程师的职业规划
  11. QQ魔法卡片辅助工具外挂silverlight版
  12. 使用阿里云短信API接口
  13. 微信模板消息html,微信推送模板消息,偶发出现报错errcode
  14. 含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如{321,3,32},最小的数为321323...
  15. Excel——如何批量从身份证号码中提取出年龄
  16. (转)Silverlight 巧用文件生成时间强制客户端载入最新xap文件
  17. 【防诈骗】QQ账号安全检测工具-腾讯出品
  18. 【Android】NDK封装日志库
  19. 2021年4月4日腾讯笔试
  20. Matlab操作excel格式文件

热门文章

  1. Linux识别不了希捷移动硬盘,希捷(Seagate)移动硬盘无法识别怎么办?
  2. 安全网络身份认证系统的设计与实现
  3. 【工具】Excel表格数据不能编辑
  4. 基于linux的oracle_rac实时应用集群研究,基于Linux的OracleRAC实时应用集群研究毕业设计论文(资料4)...
  5. 使用Python+PCA+SVM算法实现人脸识别模型
  6. 创建RAID磁盘列表(Raid5和Raid10)
  7. 《庖丁解牛Linux内核》笔记之:调用堆栈
  8. blender建模常用建模快捷键
  9. uniapp 打包app 引入高德地图sdk
  10. GPA计算器beta1