git使用总结

作者: shawenlx | 来源:发表于2016-06-04 02:38 被阅读134次

     前言:本文不过多介绍Git的基本命令,主要记录一些经常遇到的使用场景。
    

    一、Alias命令

    • 场景:通过这个Linux命令配置终端文件之后,就可以通过简写提高工作效率,程序猿还是要学会偷懒才行。
    alias g="git"
    alias gb="git branch"
    alias gch="git checkout"
    alias gcm="git commit -m"
    alias gc="git clone"
    alias gamend="git commit --amend -C HEAD"
    alias gst="git status"
    

    二、将分支推送到远端

    • 场景一:假设现在所在的分支是develop,指定推送到远端分支origin-develop
    git push origin develop:origin-develop
    
    • 场景二:如果要覆盖远程分支origin-develop,通过参数-f
    git push -f develop:origin-develop
    

    三、追加更新到某个之前的 commit

    • 场景:经常有这种情况,刚commit的更新发现还有不足,包括一些新增加调整修复,但是觉得提交两个commit又非常蛋疼,就可以用这种办法解决。
    git add 更新修改的文件
    git commit --amend -C HEAD 或者 gamend
    

    四、查找相关文件的commit提交

    • 场景:有时候需要查看某个文件在哪些commit中进行了修改。
    //方法一:
    git log 查找文件
    git show commit_id
    //方法二:
    git log --follow filename(文件绝对路径)
    

    五、删除某些 commit

    • 场景:有时候添加了一些垃圾文件或者错误代码但是已经commit了,这时候就可以把通过命令将其删除。
    git rebase -i HEAD~5(数字5只是样例, 进入vim编辑模式显示最近5次commit)
    

    执行完命令之后会出来5行,如果你要修改哪个,就把对应的pick改成edit,保存退出。 这时通过git log你可以发现,git的最后一次提交已经变成你选的那个.

      1 pick bfab1a3 message
      2 pick 87c23fd message
      3 pick 731a5be message
      4 pick 9049799 message
      5 pick 67dd0ae message
    

    六、追加修改到之前某个 commit

    • 场景:有时候写着写着发现之前的某个提交需要追加修改,这时候需要先把当前的工作代码保存,再追加到被修改的那个commit中。
    //如果通过 gst 发现已经有文件被修改,这时候需要把修改暂存起来。
    git stash
    
    //接着找到你需要追加修改的那个commit id,如731a5be
    git rebase 731a5be~ -i 或者
    git rebase -i HEAD~5 //列出最近5个commit
    
    //在vim中把你需要修改的 commit 前面的 pick改成 edit,保存,关闭vim编辑器,这时候会回到终端,再输入:
    git stash pop
    
    //将缓存的更新拿出来做修改,再git add .最后git rebase --continue将修改添加到你想添加的commit中。
    //注意此时不需要再commit.
    git add .
    git rebase --continue
    

    七、撤销上一次 git add . 操作

    • 场景:通常是因为忘记添加.gitignore文件,或者是粗心把一些非必要的文件跟踪了。
    //该命令会 unstage 你上一个 commit 增加的所有文件。
    git reset
    //如果你只想 unstage 某些文件:
    git reset --<file 1> <file 2> ... <file n>
    

    八、查找含有特定关键字的 commit

    git log --grep //最基本的用法
    
    //查找一个月以内commit log message里含有 flag_one 或者 flag_two的 commits
    git log --grep=flag_one--grep=flag_two --since=1.month 
    
    //查找指定作者,例如多人开发的时候查看队友关于flag关键字的提交
    git log --grep=flag --author=Linus
    
    //查找文件里面含有 flag 和 hello 的文件(不局限于同一行)
    git grep -l --all-match -e flag -e hello
    
    

    九、创建debug分支修复bug

    • 场景:bug是无处不在的,但是很多时候boss要求必须在短时间内修改bug,可是手头的工作还没有完成以及提交,可能需要1天时间,这时候就可以运用。
    //step 1:将目前的工作代码缓存起来
    git stash
    
    //step 2:假定需要在dev分支上修复,就从dev创建临时分支issue-xxx:
    git checkout dev
    git checkout -b issue-xxx
    
    //step 3:修改bug 并添加
    git add .
    
    //step 4: 修复完成后,切换到dev分支,并完成合并,最后删除issue-xxx
    git checkout dev
    git merge --no-ff -m "merged bug fix xxx" issue-xxx
    git branch -d issue-xxx
    
    //最后:工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下。
    //有两个办法:一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
    git stash apply 
    git stash drop
    //第二种方式是用git stash pop,恢复的同时把stash内容也删了。
    git stash pop
    
    //再用git stash list查看,就看不到任何stash内容了
    git stash list
    

    最后

    • 以上这些便是我这段时间使用git的一些心得,感谢Linus给我们创造了一个这么完美的工具。当然,对于这么强大的工具,我所记录的也只是冰山一角,我也需要不断积累不断更新。
    • 分享链接:一个很不错的git学习网站,网站动画满分(翻墙,你懂的) http://learngitbranching.js.org/
    • 经典书籍《Pro Git》,还没来得及看。http://git.oschina.net/progit/

    相关文章

      网友评论

      本文标题:git使用总结

      本文链接:https://www.haomeiwen.com/subject/wyhldttx.html