设为首页 收藏本站
查看: 2026|回复: 0

[经验分享] git常用操作

[复制链接]

尚未签到

发表于 2018-9-17 11:00:50 | 显示全部楼层 |阅读模式
  git的核心思想是:
  工作区  暂存区 分支仓库
  工作区 暂存区是全局的,和分支无关的!
  分支切换只是改变commitID而已。 内容即也是更改在分支版本库中的
  HEAD指向,MASTER 指向, 分支指向的产物。
  1 克隆一个git仓库的开发项目
git clone   
  
  给自己的仓库命名和配置邮箱选项(这个可以省去,但是系统会提示自动给你分配用户和邮箱,还是自己设定一下吧)
git config --global user.name "andy"  
git config --global user.email "735896273@qq.com"
  如果没有设置,系统会将你系统的用户名(root)和root@主机名作为邮箱
  2 在该目录下苍创建文件,创建文件后要add commit的常用操作
git add   
git add .
  git commit -m "提示标记信息"
  3 要查看状态
git status  
git log -p -2  # 查看最近两次详细修改内容的diff,以patch补丁形式查看
  
git remote -v
  4 发现不对要撤销
git checkout   
git checkout .
git reset   
git reset .
  5 如果有分支
  查看分支信息
git branch  
git branch -v
  新建分支
  git branch
  删除分支
  git branch -d
  强制删除
  git branch -D
  6 提交到远程
git push origin master  7 常用工具
git mergetool  对比工作区和stage区的文件差异
git diff  8 回滚
  方法一:
  找到你要回滚的版本
git log --pretty=oneline   和 git log --oneline差不多  回到指定的版本号
git reset --hard a7a84e6547626f304efa2067b568f4077998030f  同步远程仓库
push push origin master -f  方法二:
  直接切回指定的版本号:(游离态)
git checkout a7a84e6547626f304efa2067b568f4077998030f  切回master
git checkout master  克隆一个分支到本地,本地会有一个git的项目目录
  git clone
  git
remote -v
  git status
  git
remote add ops15 ops@10.59.76.15:/home/ops/ops_controller
  git
add .
  git add -A
  git add youfile
  git stash
  git diff
  git log -p
  git log -p -2
  git mergetool
  git branch
  git checkout
  git pull origin master
  git push origin master
  git rm filename (等于 rm filename  git rm filename)
  git mv filename(等于 mv filename  git mv filename)
  撤销工作区的所有修改
  git checkout .
  撤销工作区的指定文件的修改
  git checkout
  撤销所有的stage区域 到工作区
  git reset .
  查看所有分支
  git branch
  删除指定分支
  git branch -d
  查看各个分支的提交状况
  git branch -v
  创建新分支
  git branch
  【重点理解--状态】
  git status -s 简短形式查看状态
  M 第一列字符含义,版本库和暂存区状态有差异
  M 第二列字符含义,工作区和暂存区有差异
  ?? 新文件,未被跟踪的文件
  1 修改能不能直接提交? "不可以"
  2 git diff   工作区和暂存区的比较
  git diff HEAD 工作区和HEAD比较
  git diff --cached 暂存区和HEAD的比较
  3 将工作区的内容暂存起来--搁置问题,是各分支共享的。
  git stash
  git stash pop
  git stash list
  【重点理解-对象】
  git对象
  $ git log --pretty=oneline
  $ git log --pretty=short --graph
  $ git log --pretty=short --graph 5c2004ee59ec0ba88715caa779853078e4b4546d
  git log --pretty={raw|oneline|short} --graph 提交的版本
  sha1sum 算法
  head 永远指向所在分支
  #查看仓库中的对象类型 大小 内容
  git cat-file -t sha1ID
  git cat-file -s sha1ID
  git cat-file -p sha1ID

  git-cat-file - Provide content or type and>  -t 查看对象的类型
  -s 查看对象的大小
  -p 查看对象的内容
  类型:
  commit
  tree
  parent
  blob
  以下四中表达方式是一样的:
  git log -1    #简写查看一条log记录
  git log -1 head   #查看head指向的第一条记录
  git log -1 master  #查看master中的第一条记录
  git log refs/heads/master   #查看master中的第一条记录
  git cat-file blob head:test.txt   #查看head指向的blob中test.txt中的文件内容
  【重点理解-重置】
  git重置(reset)  (head可上可下就 游标的修改)
  git reset
  git reflog
  git reflog show master
  git reflog head
  如果修改某一个文件(没有git add, (已经被跟踪了的文件)),想撤销这次修改(确定没有作用的文件)
  git checkout filename or /dir/
  如果修改某一个文件(git add过,已经暂存在暂存区),想要撤销这次修改
  git reset filename
  git reset .
  (git reset {--soft|--hard})  重置引用
  如果已经修改某几个文件,但是想撤销到某个版本(本地版本库回到要撤销到的版本),但是当前暂存区,工作区不想撤销
  git reset --soft commitid
  此时git diff head会变化
  如果修改了某几个文件也被提交暂存区了,想撤销到某个commit(工作区和暂存区都改变),回到一个干净的状态(git status 工作区 暂存区 版本库是和commitID中的内容一致)
  git reset --hard commitid
  如果想撤销到某个commit,且将暂存区同步为某个commit中的内容,但是工作区不变
  git reset --maxed commitID = git reset commitID
  git log和git reflog的区别:
  git log只查看提交到版本库的记录
  git reflog 查看所有commit 或者 reset的记录 包括已经被删除的commit记录
  阅读; git commit --amend 修补提交
  【重点理解--checkout检出】
  切换到游离状态
  分离头指针(checkout 切换的是指定的commitID 而不是分支)
  git checkout commitid
  git branch
  git reflog
  git merge commitID
  git log --pretty=oneline --graph  #此时会看到merge游离的状态图示
  切换分支的检出
  master
  commit 0b62718c50c903e3e7f6a49ced2dbffa28a9b7e9
  dev
  commit 0bf0d2df146f5a04aa2ae5a56ab46a54c6456893
  从dev切换到master 在git merge dev====> 在log中算是一个commit提交。 git log -1   git log --pretty=oneline --graph
  commit 0bf0d2df146f5a04aa2ae5a56ab46a54c6456893
  【命令区别】
  git add .  和  git add -A 的区别
  git add . 是将本路径下所有修改的文件和新的文件 add到暂存区(非本路径及本路径下的目录文件 是不会被add到暂存区的。)
  git add -A 是将本路径下所有修改的、新增的、删除的 更新到暂存  相当于执行(git add . git rm .)
  【仓库和裸仓库的区别】
  裸仓库是一个不含有工作目录的仓库(不能执行git status的)。
  初始化裸的仓库
  1. git clone --bare 远程仓库 目录.git
  克隆一个参考到一个裸目录(参考)
  2.git init --bare 目录.git
  将目录仓库为一个裸仓库
  查看远程仓库的信息
  git ls-remote 远程仓库  ?
  删除与远程库的关联
  git remote rm
  如:
  git remote rm origin



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588307-1-1.html 上篇帖子: NetBeans 使用远程Git库 下篇帖子: git 基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表