• Git常用命令


    初始化

    git init

    git add filename

    git commit -m "xxx"

    查看log

    git log查看历史记录, 显示从最近到最远的提交日志
    $ git log --pretty=oneline

    回退

    在Git中,用HEAD表示当前版本,也就是最新的提交
    上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
    $ git reset --hard HEAD^回退到上一个版本
    $ git reset --hard 1094a使用版本序号回退

    撤销修改

    现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:
    庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:
    Git同样告诉我们,用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:
    现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把stupid boss提交推送到远程版本库,你就真的惨了……

    比较两个分支文件的异同

    git diff branch1 branch2 [--stat]

    分支管理

    创建分支

    $ git checkout -b dev

    分支合并

    有两个分支,两个都不是主分支
    一个是for_xxx, 另一个是dev
    在dev分支开发新的功能,for_xxx保持稳定
    在dev上commit&push之后,如果想合并到for_xxx;
    可以先checkout到for_xxx,在这个分支下$ git merge dev
    合并之后要在for_xxx分支上push一下
    这样采用的是fast-forward模式进行合并

    合并完成后,就可以放心地删除dev分支了:
    $ git branch -d dev

    解决冲突

    人生不如意之事十之八九,合并分支往往也不是一帆风顺的。(在分支上修改add+commit之后, 回到master又进行修改)
    现在,master分支和feature1分支各自都分别有新的提交,变成了这样
    这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,
    ,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:
    此时可以cat <file>查看冲突
    手动修改, 直接在文件里修改
    合并冲突解决后再删除分支
    git branch -d <branch>
    用git log --graph命令可以看到分支合并图。`

    删除分支

    删除本地分支

    $git branch -D branch_name
    -D == -delete

    删除本地分支的远程分支

    git branch -r -D origin/BranchName

    删除git服务器上的分支:

    git push origin -d BranchName

    cherry-pick

    先cd到 ~/.local/lib/python3.5/site-packages

    $ vim acuitylib/converter/caffeloader.py

    ~/.local/lib/python3.5/site-packages$ patch –p1 < /vip_data_center/test_envs/acuity_trainer/backup/4a26ea2.diff

    显示Hunk #1 succeeded at 981(offset 1 line)就算成功了

    gitignore

    有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。
    好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
    不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览: https://github.com/github/gitignore

    忽略文件的原则是:
    忽略操作系统自动生成的文件,比如缩略图等;
    忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
    忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

    远程仓库

    创建ssh key
    >$ ssh-keygen -t rsa -C "youremail@example.com"

    你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

    如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

    当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    使用,添加远程库

    在github上创建一个空的新库

    在本地的learngit仓库下运行命令:
    $git remote add origin https://github.com/xxx
    若报错
    $ git remote rm origin
    再执行上一句

    git push -u origin master
    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    从现在起,只要本地作了提交,就可以通过命令:
    $ git push origin master
    把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

    Linux gerrit clone时不需要输入密码

    选用ssh克隆方式,而不是http

    将远程服务器代码更新到本地

    git fetch origin dev
    git reset --hard FETCH_HEAD
    

    git pull 取回远程主机某个分支的更新,再与本地的指定分支合并。更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中

    git pull <远程主机名> <远程分支名>:<本地分支名>

    e.g.要取回origin主机的next分支,与本地的master分支合并,使用git pull origin next:master

    如果是远程分支与当前分支合并,则可省略冒号部分,使用git pull origin next

    其实就相当于

    git fetch origin
    git merge origin/next
    
  • 相关阅读:
    git commit之后未submit,rebase之后找不到自己代码的处理方法
    Objective-C语言--属性和实例变量
    synthesize 与dynamic的区别
    isKindOfClass和isMemberOfClass 区别
    python 报错整理
    使用fastJson 来解析 json
    使用Gson 解析json
    android json数据解析
    Android 常用布局
    cocos2dx 学习代码记录
  • 原文地址:https://www.cnblogs.com/sayiqiu/p/10675142.html
Copyright © 2020-2023  润新知