您的位置:首页 > 编程语言

代码管理工具 Git

2017-01-11 20:12 453 查看
以下是自己总结的git 使用,有些先人写得不错,就直接贴链接了,后续会陆续补充;

〇、一种很好地分支管理方法:
http://www.ruanyifeng.com/blog/2012/07/git.html
1、申请账号,登录web git,填写注册邮箱等信息;等待管理员通过;

2、安装git客户端(如windows下的git bash),上传公钥:执行 ssh-keygen.exe生成 .ssh/id_rsa.pub,将内容拷贝到web git的SSH Public Keys;

3、配置
    3.1 本地用户名和邮箱:git config --global user.name gitname, git config --global user.mail gitname@example.com
    3.2 默认编辑器 git config --global core.editor "vim" 或者 export GIT_EDITOR=vim
    3.3 保存密码,以避免每次输入:git config --global credential.helper store
    3.4 高亮git config --global color.ui true 
    3.5 配置文件位置及其作用域http://www.cnblogs.com/wanqieddy/archive/2012/08/03/2621027.html
    3.6 .gitignore 提交时忽略的文件列表

4、克隆代码:git clone
git@git.internal.company.com:project.git ,clone的地址从git的web页面获取; 
    clone子模块:git submodule --recursive --init    git submodule update [path]

5、代码操作:
    5.1 分支操作
        在远端qa分支基础上创建分支:git checkout -b dev.test origin/qa,若无法创建分支,可能是没有权限
        基于当前所在分支,创建分支:git branch name
        创建+切换分支:git checkout –b name
        合并某分支到当前分支:git merge name
        删除本地分支:git branch –D name
        删除github分支:git push origin --delete dev.test
        切换分支:git checkout tagname
        本地分支回退
        版本表示:HEAD 表示当前版本;HEAD^上个版本;HEAD^上上个版本;HEAD~100之前的第100个版本;
        查看历史命令,以便确定跳跃到未来哪个版本:git reflog
        本地所有修改的,没有的提交的,都返回到原来的状态:git checkout 
        返回到某个节点,不保留修改:git reset --hard commit_id
        返回到某个节点,保留修改:git reset --soft commit_id
        把所有没有提交的修改暂存到stash里面,可用git stash pop恢复:git stash
        修改了某文件,但是尚未 add,取消修改:git checkout -- README.md,若已经add,则 git reset HEAD -- README.md取消暂存的文件名,然后执行上一条命令取消修改
        删除某个已经push的commit:1、rebase(drop)  或者 2、http://blog.csdn.net/molaifeng/article/details/52671810
        //fetch的使用方法:git fetch gerrit refs/changes/39/1739/1
     5.2手动解决冲突:
          生成patch:git diff
          修改patch文件:patch文件中的 <<<<<<<<和>>>>>>>指出了冲突,对比两个冲突,将他们修改成你期望的那个,删掉<<<<<和>>>>>;
          尝试 git apply直到没有冲突
     5.3 tag操作:
          创建tag:git tag -a "tag name" -m "tag description"
          推送所有本地tag:git push origin --tag
          推送指定tag,若tag和分支名字相同,则推送的是分支:git push origin [tag name]
          删除远程tag:git push origin --delete tag tag-name 
    
6、获取最新短commit号git rev-parse --short HEAD 
     git  describe 显示离当前提交最近的tag,如果符合条件的tag,即最新的tag,指向最新提交,则只显示tag名字,否则显示后缀以描述该tag,后缀格式 从大tag到现在的commit个数 + 最新的commit id,如
0.11.0-3-g2985355 表示从tag 0.11.0 到最新的commit有3次提交,最新commit id 前7位是
2985355,  g表示git
    git describe --tag [<commit-ish>] 从指定commit中找到找到最近的tag 
               --dirty[=<mark>]描述工作树,如果工作树是dirty就将[mark](-ditry默认值)附在描述之后

 7、日志操作:  
          查看某个修改是谁提交的:git blame file_path | grep "key words"
          查看commit信息:git show 7c95a0f6ede86d7fdf964bfa8963c4961472dba9
          查看某人的提交日志:git log --author=username

          查看某人的修改: git log --oneline --since 2016-05-30 --author=username

          git show --stat branchname
          查看某个commit日志及对应修改了哪些文件 git log -2 --stat
          最近一次提交的细节: git log -1 -p
          查看文件修改历史git log -p <filename>

8、比较不同:
    git diff commit:filename commit2:filename #查看某一个文件不同版本的差异;
    git diff --name-status HEAD~2 HEAD~3文件列表

9、rebase与merge区别 http://blog.csdn.net/wh_19910525/article/details/7554489

10、git库迁移:
    更新git remote:git remote set-url origingit@newgit.op.ksyun.com:ebs/kdfs.git
    将本地分支重新推送到origin,例如    git push origin dev.test
   
11、git error:
     $ git pull
          Updating e2d796f..cffa116
          Unlink of file 'path/file.c' failed. Should I try again? (y/n)
          文件正在被其他应用使用,关掉即可
http://blog.csdn.net/wei_gw2012/article/details/54347504
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git