zoukankan      html  css  js  c++  java
  • Git常用操作

     

    初始设置:

    git config --global user.name "username" 查看/设置用户名

    git config --global user.email "email"  查看/设置邮箱

    初始化本地库,关联远程库:

    git init  把当前的目录变成由git管理的仓库,生成隐藏的.git目录

    git remote add origin https://github.com/luangeng/testgit 将本地库关联到远程库origin

    git push -u origin master 将本地master分支推送到远程库,并关联其分支

    git remote 查看远程库的信息

    git remote show [name] 查看远程库详细

    git remote –v 查看远程库的详细信息

    从远程获取:

    git clone https://github.com/luangeng/testgit 从远程库克隆到本地

    git pull origin master 从远程master分支获取 并merge到本地

    git fetch origin master  从远程master分支获取 但不merge

    git merge origin/master 合并远程分支到当前分支

    git checkout -b branch-name origin/master  基于远程分支在本地创建新分支

    分支管理:

    git branch 查看本地分支 

    git branch -a 查看所有分支

    git branch dev 创建dev分支

    git checkout master 切换到dev分支

    git checkout -b dev 创建并切换到dev分支

    git branch –d dev 删除dev分支

    git merge dev 合并dev分支到当前分支

    git branch --set-upstream dev origin-dev #添加本地dev分支与远程origin-dev分支的链接

    本地修改推送到远程:

    git add 1.txt 把1.txt文件添加到暂存区

    git rm XX 删除XX文件

    git status 查看本地文件状态

    git commit –m “add 1.txt” 提交文件, –m后面的是注释

    git push origin master 把当前本地分支master推送到远程库origin的对应分支

    git commit -am 'xxxx'  add并commit 

    本地撤销:

    git diff 1.txt 查看1.txt文件修改了哪些内容
    git log 查看历史记录
    git reflog 查看历史记录的版本号id
    git reset --hard HEAD^ 回退到commit前的版本,
    git reset --hard HEAD~3 回退到commit前三个版本
    git checkout -- a.txt 把a.txt在工作区的修改全部丢弃
    git reset HEAD <file>  撤销暂存区的修改(unstage)

    git stash:

    git stash [save ‘message’]   将当前分支所有修改存档,并将工作空间还原到最近一次commit的状态(clear状态)
    git stash list          查看存档栈,按入栈的顺序展示,最后stash的在最上面
    git stash show [stash@{1}]   查看存档的修改内容 ,不加参数则显示最近一次的stash
    git stash pop [stash@{1}]   用存档恢复工作区,并删除该存档,修改有冲突时失败,不加参数则恢复最近一次的stash
    git stash apply       同stash pop ,但是不删除存档

    git stash drop        删除指定存档
    git stash clear       清空所有存档,删除其中所有的修改
    注意:不要stash太多次,避免混淆; stash操作包括暂存区。

     

    标签:

    git tag v01 添加新标签
    git tag 查看所有标签
    git tag -d v01 删除标签

    修改上一次错误的提交:(适用于未push的commit):

    git commit --amend 用于对最新一次提交进行撤回,以修补错误(提交说明或者文件),该操作会撤回并删除上一次commit,然后新生成一个commit。用例:
    1. 修改代码(包含了错误代码或漏提交文件)
    2. commit 错误代码(包含了错误的commit记录)
    3. 修改错误代码 并且add该代码文件 和 漏提交的文件,,,(然后发现错误)
    4. git commit --amend
    5. 修改错误commit记录,退出编辑,完成
    注意:该操作会删除commit记录,故该commit必须(未公开)只在本地,否则会对别人造成影响

    使用reset回退错误的commit,(适用于未push的commit):

    当commit了错误的代码,还未push,可以使用reset命令,将commit撤销,错误代码还保留着,用例:
    1. git commit -m '正确的代码'
    2. 写了错误的代码
    3. git commit -m '错误代码' 没有push(然后发现错误)
    4. git reset HEAD^ 
    5. 上次commit被撤销,回到第2步时的状态
    6. 修改错误代码,再次commit
    注意:push之后的commit不可用此方法,原因是reset之后远程commit记录滞后本地,无法再push

    使用revert 撤销错误的commit和push:

    当commit了错误的代码并push后,可以使用git revert命令,将代码回退到 错误提交前一次提交的状态,也就是相当于还没有写错误代码,然后再push一次即可。用例:
    1. git commit -m 'add 1'
    2. 写了错误的代码
    3. git commit -am 'add error 1 code' 并且 push,,(然后发现了错误)
    4. git revert HEAD
    5. 编辑revert的原因,退出编辑
    6. 此时工作空间clear,错误代码不见了,回到了第1步提交后的状态
    7. 写正确的代码,add commit push 。 全部commit记录如下:

    注意:revert会丢弃所有错误代码,而有时我们只是想再修改下,故需要先通过分支备份代码。

    修改上一次错误的提交信息:(适用于push后的commit)

    git rebase -i HEAD^
    修改pick为reword, 退出编辑
    修改提交记录,退出编辑
    git push -f origin master

    使用rebase合并分支:

    当多分支开发时出现分叉的情况时,可以使用rebase命令将其他分支的提交插入进到当前分支的提交之前的位置。

    如图,在mywork分支执行 git rebase origin 之后,把mywork分支里的每个提交(commit)取消掉,并且把它们临时保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上,

    相当于将创建分支的动作推迟到C4之后。

    .gitignore文件:

    /表示目录   如  log/  表示log目录

    * 通配符

    ?通陪单个字符

    !排除

    log/*     log目录下所有文件

           

    github关于ssh-key的帮助:

    https://help.github.com/articles/generating-an-ssh-key/

    ssh-keygen -t rsa -C "your_email@qq.com" 生成公钥私钥

    设置对比工具为beyond compare:

    修改~/.gitconfig文件为:

    [diff]   
        tool = bc3
    [difftool "bc3"]   
        cmd = /usr/bin/bcompare "$LOCAL" "$REMOTE"   
    [difftool]   
        prompt = false   
    [merge]
        tool = bc3   
    [mergetool "bc3"]   
        cmd = /usr/bin/bcompare "$LOCAL" "$REMOTE" "$BASE" "$MERGED"   
        trustExitCode = true
  • 相关阅读:
    视频测试序列的下载地址【转】
    RDO、SAD、SATD、λ相关概念【转】
    RGB、YUV和YCbCr介绍【转】
    H.264和HEVC分析软件和工具【转】
    Mysql——Innodb和Myisam概念与数据恢复
    ubuntu个人初始配置记录
    H.264学习笔记6——指数哥伦布编码
    H.264学习笔记5——熵编码之CAVLC
    C/C++语言学习——内存分配管理
    H.264学习笔记4——变换量化
  • 原文地址:https://www.cnblogs.com/luangeng/p/5738714.html
Copyright © 2011-2022 走看看