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

[经验分享] Git入门私房菜

[复制链接]

尚未签到

发表于 2018-1-15 06:02:45 | 显示全部楼层 |阅读模式
  昨天下午参考廖雪峰的博客和其他一些文章,简单了解了一下传说中的Git,发现常见用法入门还是挺容易上手的,在此做一些笔记,方便以后查阅和复习。
  
DSC0000.jpg



Git安装

Linux
  sudo apt-get install git命令安装Git

Windows
  官网下载 安装即可,不赘述。
  注:安装时注意一步:选择第二项,将git添加到path中。

创建版本库


  •   创建项目文件夹,例如:demo

  •   进入demo目录下:git init命令将这个目录变成git可以管理的仓库(repository)。将仓库建好后,仓库目录下会多了一个.git隐藏文件夹。可以用ls -ah查看隐藏文件。

  •   向库里添加一个readme.txt文件:

  •   git add告诉git,要把文件添加到仓库:
      

    git add readme.txt  

      执行命令,其实,这一步的作用就是将文件添加到stage(暂存区)。

    •   git add .将所有文件添加到暂存区。

    •   git add -u将所有文件添加暂存区,同时,将删除的文件从仓库中删除。


  •   git commit命令,将文件提交到仓库。
      

    git commit -m "wrote a readme file"  

      注:-m是对本次提交的说明,不该偷懒省去。

  •   git status查看当前版本库的状态。

  •   git diff显示具体的尚未缓存的改动记录。

  •   git log记录每次commit的信息。git log --pretty=oneline将每次commit的记录打印成一行,内容精简。

  •   git reset修改命令:

    •   git reset HEAD废除这次修改记录,当前文件回到上一次提交的状态。


    •   `git reset --hard [commit>

  •   git rm慎用。这个命令会将所有版本库记录删除。

远程仓库
  创建SSH Key。在类似C:\Users\xiang_000\.ssh这样的主目录下,查看是否有id_rsa和id_rsa.pub文件。如果有了,直接可以将公钥添加到github账户上。如果没有,打开Shell(windows下的Git Bash):
  

ssh-keygen -t rsa -C "youremail@example.com"  

  id_rsa.pub是公钥,可以放心的告诉任何人。
  在github的Account settings里,Add SSH Key。

从远程库克隆
  如果从零开发,推荐的方式是先在github上创建远程仓库。然后,从远程库克隆
  在github创建名为:learngit的新仓库。勾选添加README.md。
  git clone克隆一个本地库:
  

git clone git@github.com:michael728/learngit.git  

添加(关联)远程库
  建完本地库,又想在github创建一个git仓库,让两个仓库进行远程同步。
  在github创建新的repo,名字为:demo
  根据github的提示,在本地的demo仓库下运行命令:
  

git remote add origin git@github.com:michae728/demo.git`  


  •   请千万注意,把上面的michae728替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

  •   添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

  将本地库的所有内容推送到远程库上:
  

git push -u origin master  

  把当前分支master推送到远程。由于之前远程库是空的,第一次推送master分支时,加上了-u参数。git不但把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程的master分支关联起来,以后推送或者拉取就可以简化命令。
  从现在起,本地提交,可通过命令:
  

git push origin master  

分享与更新项目

git push:


  •   git push origin dev表示提交到远程的dev分支。

  •   通常在本地的dev分支推送到远程的dev分支,注意两地分支命名要相同,保证不发生混乱

git pull:


  • git pull origin dev表示拉远程dev分支到本地,并和本地dev分支合并
  git fetch(不常用):


  • git fetch origin dev表示拉远程dev分支到本地,但是,不和本地dev分支合并
git remote:


  • git remote add github git@github.com:michael728/test.git将本地仓库推送到github上名为test的仓库里
分支管理

创建于合并分支
  创建dev分支,然后切换到dev分支:
  

git checkout -b dev  

  相当于下面两条命令:
  

git branch dev  
git checkout dev
  

  git branch命令用于查看当前分支。当前分支前面会有*:


  •   git branch查看本地分支

  •   git branch -a查看本地和远程所有分支

  •   git branch -r查看远程分支

  •   git branch -d删除本地分支

  •   git push :origin dev删除远程dev分支

  •   git checkout master命令用于dev分支完成工作后,切换回master分支。

  git merge用于本地的指令。如果当前分支是master,本地另一个分支是dev,用下面命令将分支合并到master:
  

git merge dev  

后悔药

版本回退
  git log来查询历史记录。git log --pretty=oneline显示精简信息。
  git中,HEAD表示当前版本,上一个版本就是HEAD^,上上个版本HEAD^^,上100个版本,写成HEAD~100。
  回到上一个版本:
  

git reset --hard HEAD^  

  或者通过git reset --hard [commit>回到指定版本号的版本。
  git版本的回退速度很快,因为git内部有个指向当前版本的HEAD指针。git仅仅是通过修改HEAD指向就可以完成版本切换的工作。
  git reflog用来查看命令历史。通过这个,就可以查到之前的版本号啦!

工作区和暂存区
  工作区(Working Directory)
  例如我们创建的demo文件夹,他就是一个工作区。
  版本库(Repository)
  工作区有一个隐藏目录.git,这个不算工作区,它是git的版本库。
  git的版本库里存了很多东西,最重要的是称为stage的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
DSC0001.jpg

  
说明:


  •   git add实际上就是把文件修改添加到暂存区;

  •   git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

  因为我们创建爱你git版本库是,git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。(因为以后还有可能往分支上提交啊!)
  

    + `git status`可以查看状态。如果有文件从来没有被添加过,那么它的状态是:`Untracked`。  

  + 提交成功后,如果没有对工作区做任何修改,那么工作区就是`working directory clean`
  

管理修改


  • git diff HEAD -- README.md 命令查看工作区和版本库里最新版本的区别。
撤销修改
  分为两种情况的修改:
  修改了工作区某个文件的内容,想直接丢弃修改:
  

git checkout -- filename  

  注:--前后都有空格。
  当修改了工作区内容,同时,添加到了暂存区,分两步:


  •   用命令git reset HEAD filename,回到场景1

  •   用场景1的方法操作。

删除文件
  当删除了工作区的文件,git知道删除了文件,因此,工作区和版本库就不一致。git status命令会立刻告诉那些文件被删除了。有两个选择:


  •   确实要从版本库里删除该文件,用命令git rm fimename,之后git commit提交。

  •   误删,因为版本库里还有,可以很轻松的把误删的文件恢复到最新版:git checkout -- filename

  注:git checkout其实是用版本库里的东西替换工作区的版本。无论工作区是修改还是删除,都可以一键还原。

附件
DSC0002.jpg

  欢迎来我的博客:Michael翔的小窝

参考


  • 廖雪峰git教程
  • 21分钟入门Git

运维网声明 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-435186-1-1.html 上篇帖子: git命令使用方法 下篇帖子: 在vscode中使用Git
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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