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

[经验分享] 好记性不如键盘手

[复制链接]

尚未签到

发表于 2018-1-13 12:30:33 | 显示全部楼层 |阅读模式
  以前已经把git 看过一遍了,由于好久没有用它 ,现在已经忘了。现在呢,要用它进行同步代码,所以呢,我打算记一记,再复习复习。
  参考文件:https://git-scm.com/book/zh/v2

第一章: 了解GIt
  Git 的特点:

  1. 直接记录快照,而非差异比较;
  2. Git 的基本所有的操作都是在本地进行的;因为它本地有数据库的镜像;
  3. git的完整性,Git 中所有数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

  记住 Git 的三种状态:

  已提交(committed)、已修改(modified)和已暂存(staged)。   已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
  Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作“索引”,不过一般说法还是叫暂存区域。
  所以,基本的Git工作的流程如下:


  •   在工作目录中修改文件。

  •   暂存文件,将文件的快照放入暂存区域。

  •   提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

  git 的安装与配置:

  1. 我的电脑为debian系统的,所以呢,最简单的方法就是:sudo apt-get install git. 其它系统详细参考:https://git-scm.com/download/linux
  2. 安装完成以后,现在来配置一下我们的Git 工作环境。
  它的配置可以通过命令 git config 工具来进行配置,也可以直接修改配置文件。反正通过命令来配置也是修改配置文件的。
  配置分为三个等级:
  第一, /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置,如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。
  第二:~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。可以传递 --global 选项让 Git 读写此文件。
  第三:当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
  现在,我们通过 git config工具来配置一些基本的信息:
  用户信息:
  

$ git config --global user.name "John Doe"  
$ git config
--global user.email johndoe@example.com  

  文本编辑器:
  

$ git config --global core.editor emacs  

  通过 git config –l 可以列出你已经配置完的信息;通过 git config 可以列出 git config的相关选项来。
  3. git 的帮助: git help 可以查看一些详细的操作等。


第二:基本的操作:
  获取 Git 仓库:

  两个方法:
  1,把本地的文件导入到git库中; 用 git init ,就OK了。 这时,会出现一下.git的目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件。
  2. 从服务器克隆出一个现有的git库; 命令为:
  

git url  
或 git url 目录名
//用于自定义本地的目录名字,如果省略的话,就会用服务器上的目录名;  

  git支持的传输协议:https:// 协议, git:// 协议,还可以用使用 SSH 传输协议,比如 user@server:path/to/repo.git

  qeq
  
  查看文件状态:
  git status 命令的输出十分详细,但其用语有些繁琐。如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出。
  说明:对于-s的命令,新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

忽略文件:
  很多时候我们不需要一些文件(比如日志文件,或者编译过程中创建的临时文件等)纳入git的管理,这时,我们可以忽略它。方法为:创建一个名为 .gitignore 的文件,列出要忽略的文件模式。       文件 .gitignore 的格式规范如下:


  •   所有空行或者以 # 开头的行都会被 Git 忽略。

  •   可以使用标准的 glob 模式匹配。

  •   匹配模式可以以(/)开头防止递归。

  •   匹配模式可以以(/)结尾指定目录。

  •   要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

  所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等
  提交至仓库过程:
  现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。
  1. 作用命令 git add 跟踪一个文件。 git add 文件名或目录。 跟踪以后相当于把文件放置了暂存区中;
  2. 用 git commit 提交更新 。
  git commit 文件名, 表示提交某一个文件, git commit 提交所有的文件; 这时会弹出一个对话框,写入一些提交的备注就OK了。。也可以用 –m 加备注信息;
  当我们要跳过 add 直接提交时,那么加 –a 参数;
  文件的删除与改名:
  1. 从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。删除文件时,不要直接从目录下面把文件删除掉。
  2. 当从Git 中移除某个文件,并且你想让文件保留在磁盘时,我们用:--cached选项,即 git rm –cached
  3. 当移动与重命名文件时,我们用 git mv 命令,这个命令其实相当于运行了三个命令:
  

$ mv README.md README  
$ git rm README.md
  
$ git add README
  

  4. 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:即:git commit –amend 命令。
  5. 如果我们想从到 暂存区里把已经 add的文件删除的话,我们用 git reset 命令哦;
  6. 假如我们已经在我们的工作目录里修改并保存了一个文件,现在我们不想修改了,想恢复它,怎么办??我们可以用 git checkout -- 文件名 来恢复它。注意:

你需要知道 git checkout — [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。
  7. 最后,要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff,若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令,具体看help.
  8. 查看提交历史,用git log ,它有很多选项的,用到的话,自己查看一下子啦。

远程仓库使用
  1. it remote 命令查看远程服务器的简写,记住:origin 是 git 仓库服务器的默认名字。
  git remote –v ,会显示需要读写的远程仓库的简写与URL.
  2. git remote add <short name> <url> 添加一个新的远程git 仓库。
  3. git fetch 命令 可以访问远程库,从中拉取所有你没有的数据。注意:git fetch 命令会将数据拉取到你的本地仓库,它并不会自动合并或修改你当前的工作。
  使用 git pull 可以自动抓取然后合并远程分支到当前分支。
  4. git push <remote-name> <branch-name> ,把东西推送到上游。
  5. 使用git remote show [remote-name]名字 查看一个远程仓库的更多信息。
  6. git remote rename <原名字> <现名字> 可以去修改一个远程仓库的名字,注意:这样也同样也会修改远程分支的名字。
  7. git remote rm 可以移除一个远程仓库。

运维网声明 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-434624-1-1.html 上篇帖子: Git版本控制系统之基本使用 下篇帖子: git 远程仓库版本的回退以及git reset 几种常用方式记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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