Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1189905
  • 博文数量: 221
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2139
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-27 19:53
个人简介

JustForFun

文章分类

全部博文(221)

文章存档

2024年(6)

2023年(8)

2022年(2)

2021年(2)

2020年(29)

2019年(11)

2018年(23)

2017年(41)

2016年(76)

2015年(23)

我的朋友
最近访客

分类: LINUX

2019-01-11 14:08:46

 Git 命令汇总

书籍
Git Gui 安装:
sudo apt-get install git-gui
yum install git-gui
 安装完成后,使用Alt-F2,输入“git gui”来运行。
初始化配置

    #配置使用git仓库的人员姓名
    git config --global user.name "Your Name Comes Here"

    #配置使用git仓库的人员email
    git config --global user.email you@yourdomain.example.com

    #配置到缓存 默认15分钟
    git config --global credential.helper cache

    #修改缓存时间
    git config --global credential.helper 'cache --timeout=3600'

    git config --global color.ui true
    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.st status
    git config --global alias.br branch
    git config --global core.editor "mate -w" # 设置Editor使用textmate
    git config -1 #列举所有配置

    #用户的git配置文件~/.gitconfig


查看、添加、提交、删除、找回,重置修改文件

    git help # 显示command的help
    git show # 显示某次提交的内容
    git show $id

    git co -- # 抛弃工作区修改
    git co . # 抛弃工作区修改

    git add # 将工作文件修改提交到本地暂存区
    git add . # 将所有修改过的工作文件提交暂存区
    git status 会看到暂存前后的两个版本文件状态:     
    git diff 看暂存前后的变化
     
    git rm # 从版本库中删除文件
    git rm --cached # 从版本库中删除文件,但不删除文件

    git reset # 从暂存区恢复到工作文件
    git reset -- . # 从暂存区恢复到工作文件
    git reset --hard # 恢复{BANNED}最佳近一次提交过的状态,即放弃上次提交后的所有本次修改

    git ci
    git ci .
    git ci -a # 将git add, git rm和git ci等操作都合并在一起做
    git ci -am "some comments"
    git ci --amend # 修改{BANNED}最佳后一次提交记录
    
    查看一个分支当前指向提交对象的SHA值
    git rev-parse 分支名

    git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象
    git revert HEAD # 恢复{BANNED}最佳后一次提交的状态  
    
    ///////////////////////////////////////////


    b)发现问题

    我们现在发现当前的版本有点问题,还不能提交到版本库。

    1.从git commit 中返回

       切换到主分支

       git reset --soft HEAD^

    解释一下,HEAD是当前分支的{BANNED}最佳新版本。^表示父节点。当前节点的父节点,就是上一次提交的版本
    
    
    放弃所有未修改的内容和暂存的内容
git reset --hard HEAD
git reset HEAD 是将咱暂存区和HEAD的提交保持一致
git reset --hard HEAD 是将工作区、暂存取和HEAD保持一致

reset --hard 会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容。当你在 reset 后面加了 --hard 参数时,你的stage区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉

查看一个分支当前指向提交对象的SHA值
git rev-parse onebit-s2


版本回退:可以将当前仓库回退到历史的某个版本git reset

{BANNED}中国第一种用法:回退到上一个版本(HEAD代表当前版本,有一个^代表上一个版本,以此类推)

git reset --hard HEAD^

第二种用法:回退到指定版本(其中d7b5是想回退的指定版本号的前几位)

git reset --hard d7b5




远程仓库回退            使用“git reset --hard 目标版本号”命令将版本回退  使用“git push -f”提交更改
////////////////////////////////////
    
    //////////////////////////////////////////////////////////////////////


查看文件diff
git diff # 比较当前文件和暂存区文件差异

    git diff
    git diff <$id1> <$id2> # 比较两次提交之间的差异
    git diff .. # 在两个分支之间比较
    git diff --staged # 比较暂存区和版本库差异
    git diff --cached # 比较暂存区和版本库差异
    git diff --stat # 仅仅比较统计信息

查看提交记录

    git log
    git log # 查看该文件每次提交记录
    git log -p # 查看每次详细修改内容的diff
    git log -p -2 # 查看{BANNED}最佳近两次详细修改内容的diff
    git log --stat #查看提交统计信息

取得Git仓库

 #初始化一个版本仓库

    git init

    #Clone远程版本库
    git clone git@xbc.me:wordpress.git

    #添加远程版本库origin,语法为 git remote add [shortname] [url]
    git remote add origin git@xbc.me:wordpress.git

    #查看远程仓库
    git remote -v

提交你的修改

    #添加当前修改的文件到暂存区
    git add .

    #如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件
    git add -u

    #提交你的修改
    git commit –m "你的注释"

    #推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
      git push origin [本地分支]:[远程分支]

    #查看文件状态
    git status

    #跟踪新文件
    git add readme.txt

    #从当前跟踪列表移除文件,并完全删除
    git rm readme.txt

    #仅在暂存区删除,保留文件在当前目录,不再跟踪
    git rm –cached readme.txt

    #重命名文件
    git mv reademe.txt readme

    #查看提交的历史记录
    git log

    #修改{BANNED}最佳后一次提交注释的,利用–amend参数
    git commit --amend

    #忘记提交某些修改,下面的三条命令只会得到一个提交。
    git commit –m "add readme.txt"
    git add readme_forgotten
    git commit –amend

    #假设你已经使用git add .,将修改过的文件a、b加到暂存区

    #现在你只想提交a文件,不想提交b文件,应该这样
    git reset HEAD b

    #取消对文件的修改
    git checkout –- readme.txt
    $git checkout .      当前目录及子目录退回所有修改内容


查看、切换、创建和删除分支

    git br -r # 查看远程分支
    git br # 创建新的分支
    git br -v # 查看各个分支{BANNED}最佳后提交信息
    git br --merged # 查看已经被合并到当前分支的分支
    git br --no-merged # 查看尚未被合并到当前分支的分支

    git co # 切换到某个分支
    git co -b # 创建新的分支,并且切换过去
    git co -b # 基于branch创建新的new_branch

    git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
    git co $id -b # 把某次历史提交记录checkout出来,创建成一个分支

    git br -d # 删除某个分支
    git br -D # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)


分支合并和rebase

    git merge # 将branch分支合并到当前分支
    git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交

    git rebase master # 将master rebase到branch,相当于:
    git co && git rebase master && git co master && git merge


Git补丁管理(方便在多台机器上开发同步时用)

    git diff > ../sync.patch # 生成补丁
    git apply ../sync.patch # 打补丁
    git apply --check ../sync.patch #测试补丁能否成功

Git暂存管理
 git stash # 暂存

    git stash list # 列所有stash
    git stash apply # 恢复暂存的内容
    git stash drop # 删除暂存区

Git远程分支管理

    git pull # 抓取远程仓库所有分支更新并合并到本地
    git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
    git fetch origin # 抓取远程仓库更新
    git merge origin/master # 将远程主分支合并到本地当前分支
    git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支
    git co -b origin/ # 基于远程分支创建本地分支,功能同上

    git push # push所有分支
    git push origin master # 将本地主分支推到远程主分支
    推送数据到远程仓库
    git push origin test:test              // 提交本地test分支作为远程的test分支

    项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单:git push [remote-name] [branch-name]。
    git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
    git push origin # 创建远程分支, origin是远程仓库名
    git push origin : # 创建远程分支
    git push origin : #先删除本地分支(git br -d ),然后再push删除远程分支
    

基本的分支管理

    #创建一个分支
    git branch iss53

    #切换工作目录到iss53
    git chekcout iss53

    #将上面的命令合在一起,创建iss53分支并切换到iss53
    git chekcout –b iss53

    #合并iss53分支,当前工作目录为master
    git merge iss53

    #合并完成后,没有出现冲突,删除iss53分支
    git branch –d iss53

    #拉去远程仓库的数据,语法为 git fetch [remote-name]
    git fetch

    #fetch 会拉去{BANNED}最佳新的远程仓库数据,但不会自动到当前目录下,要自动合并
    git pull

    #查看远程仓库的信息
    git remote show origin

    #建立本地的dev分支追踪远程仓库的develop分支
    git checkout –b dev origin/develop

Git远程仓库管理

    git remote -v # 查看远程服务器地址和仓库名称
    git remote show origin # 查看远程服务器仓库状态             如果别人推送了。我就要先pull下来再推送
    git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址
    git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)
    git remote rm # 删除远程仓库

创建远程仓库

    git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库
    scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

    mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库
    git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址
    git push -u origin master # 客户端首次提交
    git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track

    git remote set-head origin master # 设置远程仓库的HEAD指向master分支


    git branch --set-upstream master origin/master
    git branch --set-upstream develop origin/develop
阅读(9736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~