设为首页 收藏本站
查看: 754|回复: 0

[经验分享] Git实用操作

[复制链接]

尚未签到

发表于 2018-1-16 06:12:17 | 显示全部楼层 |阅读模式
git
  git是现在最流行的版本管理工具,应用范围非常广泛,工作中基本都会用到(除了一些互联网金融公司外)。使用git好处有很多,包括但不限于便于多分支开发,
  
历史管理跟回滚方便,发布等。配合webhook,可以在ci上集成自动发布等。是一件利器。熟练git的一些基本操作,會给开发带来很大好处。

命令行
  个人并不是完全使用命令行来进行所有的git操作的,使用图形化工具真的會方便很多。然而有些情况下也会使用到命令行的方式来进行某些操作。了解一些命令行,會更好。


  •   基本操作
      

    git clone rep_address       // 克隆一个远程库  
    git status                  //查看当前状态
      
    git add file_name           //将某个文件添加到git
      
    git add .                  // 将所有新文件添加到git
      
    git commit -am 'message'   // 提交所有更改,带描述
      
    git push                   //提交到远程库
      
    git diff                     //查看diff

  •   分支
      

    git checkout branch_name      //checkout到某个分支  
    git branch                    //查看分支
      
    git branch some               // 新建一个名为some的分支
      
    git push [远程名] :[分支名]  //删除某一远程分支

  •   提交到远程仓库
      

    //创建本地仓库,并push到远程仓库  
    git init        //将本地目录添加到仓库
      
    git remote add [shortname] [url]
      
    git add .
      
    git commit -am 'first commit'
      
    git push --set-upstream [url]/[shortname] master

  •   提交者
      

    (PS: Md里'-'分点,下面的内容有断行就会分开,所以嵌入的代码块不能带空行,不然显示出错)  
    // 设置全局
      
    git config --global user.name 'Author Name'
      
    git config --global user.email 'Author Email'
      
    // 或者设置本地项目库配置
      
    git config user.name 'Author Name'
      
    git config user.email 'Author Email'

  •   cherry pick
      

    git cherry-pick [commit-id]  //将某个commit,cherry pick到当前分支
  •   合并
      

    git merge xxx              //将某个指定分支合并到当前分支  
    git merge [commit-id]  //将另一个分支某个commit-id为止的代码merge到当前分支

  •   stash
      

    git stash                      //保存当前的工作进度。会分别对暂存区和工作区的状态进行保存  
    git stash save "message..."   //这条命令实际上是第一条 git stash 命令的完整版
      
    git stash list                //显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候进行选择
      
    git stash pop [--index] [<stash>]              //如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。如果提供参数(来自 git stash list 显示的列表),则从该 <stash> 中恢复。恢复完毕也将从进度列表中删除 <stash>。选项--index 除了恢复工作区的文件外,还尝试恢复暂存区。
      
    git stash apply [--index] [<stash>]          //除了不删除恢复的进度之外,其余和 git stash pop 命令一样
      
    git stash clear                              //删除所有存储的进度
      
    git stash show -p                      //查看最近stash的diff
      
    git stash show -p stash@{1}     //查看某个stash的diff

  •   回滚
      

    git reset --hard [commit-id]  //回滚到某个commit , 可选 --soft, --mixed
  •   标记
      

    git update-index --assume-unchanged [filename]     //假定某个文件没有发生变化,但是切换分支,pull代码会更新index  
    git update-index --no-assume-unchange [filename]   //取消
      
    git update-index --skip-worktree  [filename]       //将某个文件从git检测中忽略
      
    git update-index --no-skip-worktree [filename]     //取消

  •   统计
      

    //统计仓库里每个人的提交行数  
    git log --format='%aN' | sort -u | while read name; do echo -en &quot;$name\t&quot;; git log --author=&quot;$name&quot; --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf &quot;added lines: %s, removed lines: %s, total lines: %s\n&quot;, add, subs, loc }' -; done

  •   ssh
      
    见gitoschina的教程,讲得很详细。--> git ssh

gui工具
  git的图像化管理工具有两个是比较推荐用的,sourceTree以及GitKraken。个人比较喜欢GitKraken,所以下面會以Gitkraken为例介绍。在sourceTree上操作也是差不多的。

简单操作
  一些克隆仓库,pull代码,commit代码,push代码等操作相当简单,就不多做介绍了。
  
如下图
  


cherry pick
  切换分支,然后在另一个分支上的某个commit上右击,选择cherry pick就可以把该commit,提交到当前分支。


stash
  stash可以将所有的未提交更改暂存起来。本地代码做了更改,可以先stash起来,然后pull更新,再次pop,stash。
  
在GitKraken里,stash也非常简单,而且每次pull代码时,GitKraken会自动帮我们进行,以下操作


  • stash 更改
  • pull 更新
  • pop stash
  • 手动处理冲突(如果有)
  非常方便/

merge
  在GitKraken上,merge分支很方便,直接将另一分支拖动到当前分支,即可合并
  


合并多个commit
  有时提交了很多commit,比如有1,2,3,共三个commit,这三个commit都是为了实现某个功能而做的更改。那么我们可以把这三个commit合并成一个再进行提交。
  
操作,右击第一个commit的前一个提交,选择reset to this commit -> soft, 这样就会把1,2,3,三个commit的更改合并在一起,然后再把这些更改重新提交一次即可。
  


参考
  ignore file without using .gitignore

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435533-1-1.html 上篇帖子: git log 查看提交记录,参数: 下篇帖子: 使用GIT进行源码管理——GIT托管服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表