git的使用笔记-转自廖前辈的网站

news/2024/5/20 22:12:38/文章来源:https://blog.csdn.net/weixin_33700350/article/details/92442166

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

-------
GIT安装
-------
1.linux安装git
sudo apt-get install git   老一点: sudo apt-get install git-core

2.maxOS安装git
brew install git

3.windows安装git
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。安装完成后,在开始
菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

---------
创建版本库
---------
1.创建版本库--版本库增加文件 ".git" 文件

  $ mkdir learngit
  $ cd learngit
  $ pwd
  /Users/michael/learngit
  把上面目录变成版本库
  $ git init
  Initialized empty Git repository in /Users/michael/learngit/.git/
2.
  初始化一个Git仓库,使用git init命令。
 
  添加文件到Git仓库,分两步:
  第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  第二步,使用命令git commit,完成。
------------------
3.查看当前版本库状态--git status

  如果只修改了没有git add
  git status尾行显示--no changes added to commit (use "git add" and/or "git commit -a")
  如果只git add了 没有git commit
  git status第二行显示--Changes to be committed
  如果第一次提交的文件没有被git add会显示
  Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
       (use "git checkout -- <file>..." to discard changes in working directory)
       modified:   readme.txt
  Untracked files:
          (use "git add <file>..." to include in what will be committed)
          LICENSE
  **************上面代码表示readme.txt文件被修改了,LICENSE从来没被添加过******************
 
-------
版本回退
-------
1.git log命令显示从最近到最远的提交日志,重要参数 --pretty=oneline
2.git回退版本(回到过去)

      在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^
      比较容易数不过来,所以写成HEAD~100
      
      $ git reset --hard HEAD^
      $ git reset --hard 3628164
      回到过去的版本
3.git回到未来版本(回到未来)
    git reflog 记录了你每一次git命令
      可以用这个回到未来的版本
4.现在总结一下:
      HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,git reset --hard commit_id。
    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

------------
工作区和暂存区
------------
1.工作区--自己本地分支的东西
2.暂存区--git add之后我们认为把代码提交到了暂存区

----------
git管理修改
----------
1.放弃工作区的修改
  git checkout -- readme.txt
  一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
  总之,就是让这个文件回到最近一次git commit或git add时的状态。
 
  $ git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  #       modified:   readme.txt
  git reset HEAD readme.txt 可以把暂存区的修改撤销掉(unstage),工作区重新变成git add之前的状态
2.git管理小结
  git checkout -- readme.txt     放弃工作区的修改
  git reset HEAD readme.txt      放弃缓存区的修改回到git add之前的状态
 
-------
删除文件
-------
1.$ rm test.txt
  # Changes not staged for commit:
  #   (use "git add/rm <file>..." to update what will be committed)
  #   (use "git checkout -- <file>..." to discard changes in working directory)
              deleted:    test.txt
  rm 直接删除是删除工作区中的文件
  a.如果你的目的是把版本库中的也删除,需要git add 然后git commit操作
  b.如果你觉得删错了还可以用 git checkout -- test.txt,把该文件从版本库中找回来
2.小结
  命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢
  复文件到最新版本,你会丢失最近一次提交后你修改的内容。

----------
建立远程仓库
----------
1.建立远程仓库
  a.创建SSH Key。
      在用户主目录下,看看有没有.ssh目录,如果有,再看这个目录下有没有id_rsa和id_rsa.pub
    这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash).
    创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
  b.登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
    另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。
  c.从github建立远程分支 把git地址记住
    touch README.md //新建一个记录提交操作的文档
    git init //初始化本地仓库
    git add README.md //添加
    git commit -m "first commit"//提交到要地仓库,并写一些注释
    git remote add origin git@github.com:youname/Test.git //连接远程仓库并建了一个名叫:origin
    git push -u origin master //将本地仓库的东西提交到地址是origin的地址,master分支下
2.github问题
  /**LINUX命令复习**/
  //删除当前文件夹下的所有 name含有.svn 文件
  find . -name ".svn" | xargs rm -Rf
  //删除当前文件夹下的所有 name含有.git 文件
  find . -name ".git" | xargs rm -Rf
  /**LINUX命令复习**/
 
  如果输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git
  提示出错信息:fatal: remote origin already exists.
  解决办法如下:

    a、先输入$ git remote rm origin
    b、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
    c、如果输入$ git remote rm origin 还是报错的话,
       error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
    d、找到你的github的安装路径,
       我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4a6720bb5c8\etc
    e、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
  如果输入$ ssh -T git@github.com
    出现错误提示:Permission denied (publickey).因为新生成的key不能加入ssh就会导致连接不上github。
    解决办法如下:
    
    a、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。
    b、如果还是不行的话,输入ssh-add ~/.ssh/id_key 命令后
      出现报错Could not open a connection to your authentication agent.解决方法是key用Git Gui
      的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token
      等配置都用命令行来做。
    c、最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,有些编辑器会帮你添加这些的。
  如果输入$ git push origin master
    提示出错信息:error:failed to push som refs to .......
    解决办法如下:

    a、先输入$ git pull origin master //先把远程服务器github上面的文件拉下来
    b、再输入$ git push origin master
    c、如果出现报错 fatal: Couldn't find remote ref master 或者
      fatal: 'origin' does not appear to be a git repository 以及
      fatal: Could not read from remote repository.
    d、则需要重新输入$ git remote add origingit@github.com:djqiang/gitdemo.git
    
-----------
添加远程仓库
-----------
    要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
    关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

------------
从远程仓库克隆
------------
    $ git clone git@github.com:michaelliao/gitskills.git
    Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
    使用https除了速度慢以外,每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议
    而只能用https。
    
------------
创建与合并分支
------------
  Git鼓励大量使用分支:
    查看分支:git branch
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>

-------
解决冲突
-------
  $ git log --graph --pretty=oneline --abbrev-commit  分支合并图
 

----------
分支管理策略️
----------
    主分支     master 最干净的一个分支不在此分支上做任何操作
    开发分支   dev    开发人员主要工作的分支,用来做周期开发,快速迭代开发
    修改bug   fixbug  修改bug的一个分支
    
⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐非常重要的一章--开始⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
---------
fixbug分支
---------
  应用场景
  你需要修改一个master(线上)分支的一个很紧急的bug,这个bug需要在1小时内解决,dev分支的功能开发到一半还
  需要很长时间(远远大于1小时),这个时候你需要怎么做呢?
  你可以这样来做:
    
    git checkout -b fixbug
    然后修改bug(现在是在最新从master检出的fixbug分支上修改bug)---修改完成
    git add ./
    git commit -m '修改***的bug'
    
    git checkout dev
      $ git stash
    # Saved working directory and index state WIP on dev: 6224937 add merge
    # HEAD is now at 6224937 add merge
    
    git status
    # From developer.playcrab.com:zhaoqiang/luck_draw
    # * branch            dev        -> FETCH_HEAD
    # Already up-to-date.
    
    git merge fixbug --no-ff -m '修改***的bug后,合并fixbug分支的内容到dev'
    工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
    另一种方式是用git stash pop,恢复的同时把stash内容也删了
    你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
    $ git stash apply stash@{0}
    
    git stash pop  (这时候你再用git stash list来查看暂存的东西)
    
    git checkout master
    git merge fixbug --no-ff -m '修改***的bug后,合并fixbug分支的内容到dev'
    
    然后删除fixbug分支  git branch -d fixbug  (-d销毁fixbug分支  -D强制销毁)
    
    这样做是为了以后dev分支开发完之后和master分支合并的时候不冲突
    
    
⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐非常重要的一章--结束⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

-------
多人协作
-------
1.当你使用git clone 从远程分支克隆的时候,本地master分支和远程的master分支会自动对应起来,且远程仓库的默认
  名称默认为origin

  查看远程库的分支git remote  或者详细信息  git remote -v
  origin  git@github.com:michaelliao/learngit.git (fetch)
  origin  git@github.com:michaelliao/learngit.git (push)

  把本地分支推送到远程分支
  git push origin 分支名称(本地分支名称一般和远程分支名称是一致的)

  # Please specify which branch you want to merge with.
  # See git-pull(1) for details

  # git pull <remote> <branch>
  # If you wish to set tracking information for this branch you can do so with:
  # git branch --set-upstream dev origin/<branch>

  上面是git pull 失败 需要的步骤

  设置dev和origin/dev的链接:
  $ git branch --set-upstream dev origin/dev
2.多人协作步骤
  因此,多人协作的工作模式通常是这样:

    q.首先,可以试图用git push origin branch-name推送自己的修改;

    b.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

    c.如果合并有冲突,则解决冲突,并在本地提交;

    d.没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

    e.如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,
      用命令git branch --set-upstream branch-name origin/branch-name。

    这就是多人协作的工作模式,一旦熟悉了,就非常简单。
    
-------
标签管理
-------
1.git打标签
    切换到需要打标签的分支
    git tag v1.0   或者
    git tag -a <tagname> -m "blablabla..."  指定标签备注的标签
    查看所有标签
    git tag
    查看标签信息
    git show v1.0
2.git标签操作
    删除标签
    $ git tag -d v1.0
    推送本地标签到远程
    git push origin <tagname>
    例如 git push origin v1.0
    一次推送本地所有未能推送到远程的标签
    $ git push origin --tags

    如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
    $ git tag -d v0.9
    # Deleted tag 'v0.9' (was 6224937)
    
    $ git push origin :refs/tags/v0.9
    # To git@github.com:michaelliao/learngit.git
    # - [deleted]         v0.9

--------
自定义git
--------
1.让Git显示颜色,会让命令输出看起来更醒目:
    $ git config --global color.ui true
2.配置快捷键
    $ git config --global alias.st status  (git status = git st)
    $ git config --global alias.co checkout(git checkout = git co)
    $ git config --global alias.ci commit  (git commit   = git ci)
    $ git config --global alias.br branch  (git branch   = git br)
  怎么删除git配置文件的快捷键
  只需要到用户主目录找到.gitconfig 文件 把对应的行删除就行了 cd  ~/
 
  或者
  git config --global --unset alias.st
 
  查看配置别名
  git config --list | grep alias
  git config --get-regexp alias
 
------------
搭建git服务器
------------
前提
    搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可
    以完成安装。
    
第一步 安装git服务
    $ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:
    $ sudo adduser git
第三步,创建证书登录:
    收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到:
    /home/git/.ssh/authorized_keys文件里,一行一个。
第四步,初始化Git仓库:
    先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
    $ sudo git init --bare sample.git
    Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服
    务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
    $ sudo chown -R git:git sample.git
第五步,禁用shell登录:
    出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
    git:x:1001:1001:,,,:/home/git:/bin/bash  改为
    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
    这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就
    自动退出。
第六步,现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:
    $ git clone git@server:/srv/sample.git
    
这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。
    
 

转载于:https://my.oschina.net/ailingling/blog/502402

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_726355.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 实现 Hover 功能( mouseover 与 mouseenter 的区别)

一、mouseover 和 mouseenter 的区别 mouseover&#xff1a;当鼠标移入元素或其子元素都会触发事件&#xff0c;所以有一个重复触发&#xff0c;冒泡过程。对应的移除事件是 mouseout mouseenter:当鼠标移入元素本身&#xff08;不包含元素的子元素&#xff09;会触发事件&…

家乡介绍网站模板html_网站被挂黑链怎么办

我们都知道做SEO优化经常会碰到网站被挂黑链问题&#xff0c;遇到这种问题我们不用担心&#xff0c;下面由水滋源郑州网站优化公司介绍几种轻松解决网站被挂黑链问题。 黑链手法&#xff1a;一般的黑链在网站的首页是不能看出来的&#xff0c;他们采取了很隐秘的手法&#xff0…

python爬取网页信息的相关库_Python基于requests库爬取网站信息

requests库是一个简介且简单的处理HTTP请求的第三方库 get()是获取网页最常用的方式&#xff0c;其基本使用方式如下 使用requests库获取HTML页面并将其转换成字符串后&#xff0c;需要进一步解析HTML页面格式&#xff0c;这里我们常用的就是beautifulsoup4库&#xff0c;用于解…

使用代理请求其他网站图片时,报403错误

需求&#xff1a;通过请求代理网址&#xff0c;获取数据&#xff0c;渲染页面&#xff1b; 问题&#xff1a;请求不到图片&#xff0c;报403错误。 解决办法&#xff1a;在 head 标签中添加一个下面的标签 <meta name"referrer" content"no-referrer"&…

邮箱@topgrid.cn是什么网站_出海企业建立的新网站如何快速增加权重?

2019年1月21日更新&#xff1a;这种方法在2018年下半年已经被Google惩罚了&#xff0c;大家慎用&#xff01;现如今把产品或服务卖给外国人&#xff0c;无论是B2B还是B2C&#xff0c;依托平台&#xff08;亚马逊&#xff0c;阿里巴巴等&#xff09;都难免受平台的制约。尤其是亚…

linux下Apache软件搭建网站

前面我讲解了Web服务器的分类与架构演变&#xff0c;从单台机到多台机的架构&#xff0c;这是我们学习Linux网站服务的核心知识&#xff0c;后面我以这个架构为中心&#xff0c;展开讲解&#xff0c;在插入相应的别的内容。毕竟我们的工作是以网站为主。说道这里我想说下Linux运…

真人秀制作网站_设计干货:9个网站,带你领略设计师的开挂日常

之前微博上有一个很火的话题叫#美术生开挂日常#&#xff0c;不知道大家看完后是否有被美术生们精湛的绘画技巧所折服。其实不仅仅是美术生&#xff0c;产品设计师们的日常更是无数的惊叹于大写的佩服。小麸今天就来和大家深入了解一下&#xff1a;产品设计师的开挂日常~01 产品…

网站该如何存储用户的密码

2019独角兽企业重金招聘Python工程师标准>>> 对那些有用户系统的网站来说&#xff0c;如果存储用户的密码是个问题。 大家都知道不能明文存储&#xff0c;这样一旦被脱了裤子&#xff0c;后果很严重&#xff0c; 简单的md5 sha加密也不可取...... 通常在做网站的时候…

电脑上调试手机网站的几种方法

手机网站开发&#xff0c;最让人头疼的是网站的兼容问题&#xff0c;不同的手机可能会出现一些莫名的问题。手机网站常见问题及解决方案&#xff0c;我会在后面的文章陆续发表&#xff0c;大家可以看一下。 本文主要讲解电脑上如何调试手机网站&#xff1a; 一、安卓手机的调试…

推荐一个免费MP4转GIF的好用的在线编辑网站

地址如下&#xff1a; 原来那个网页版视频转换付费了&#xff0c;现在推荐使用“格式工厂” http://www.pcfreetime.com/formatfactory/CN/download.html

实用工具分享:一个比ps简单的免费简单易上手的良心在线海报设计网站,关键还没水印

1.说明: 工作中我相信或多或少都存在制作海报的需求,或者制作一个精美的软件安装说明等等(向下图一样),而我们大都不是专业平面设计师,花费时间折腾ps很明显得不偿失,并且ps的操作并不那么友好,那有没有简单几步就能制作出能看、好看、有创意的海报呢?答案是有的!!…

收藏一点有意思的网站

为什么80%的码农都做不了架构师&#xff1f;>>> http://shedingkong.lofter.com/?page2&t1465821964867 设定控 转载于:https://my.oschina.net/cpWeb/blog/792911

个人主页网页设计_优秀设计师都会逛的6大网站,你知道吗?

设计师最难熬的时间莫过于灵感的枯竭&#xff0c;所以平日里除了多搜集一些优秀的设计作品外&#xff0c;常备一些好用的设计网站真的很有必要&#xff0c;它的存在可以为我们缩短思考的时间&#xff0c;完善自己的思路&#xff0c;汲取别人优秀的创意点。now&#xff01;小编为…

iis 站点内存高_Java处理高并发、高负载类网站的优化方法

一.-网站关注点之数据库-首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用&#xff0c;数据库的响应是首先要解决的。一般来说MySQL是最常用的&#xff0c;可能最初是一个MySQL主机&#xff0c;当数据增加到100万以上&#xff0c;那么&#xff0c;MySQL的效能…

php收费视频网站实现,超好影视网站PHP源码,一键采集视频资源,对接第三方免签码支付,能设置每个视频能否收费...

搭建环境&#xff1a;PHPapachermysql搭建环境&#xff1a;PHPapachermysql搭建环境&#xff1a;PHPapachermysql源码详情该源码是一套影视网站PHP完整源码&#xff0c;支持会员系统&#xff0c;支持后端一件采集视频资源&#xff0c;对接第三方免签支付【码支付】&#xff0c;…

《网站建设与网页设计从入门到精通Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript》——3.5 设置头信息...

本节书摘来自异步社区《D网站建设与网页设计从入门到精通DreamweaverFlashPhotoshop&#xff0b;HTMLCSSJavaScript》一书中的第3章&#xff0c;第3.5节&#xff0c;作者&#xff1a;何新起 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.5 设置头信息 文件头标签也…

什么是网站维护,做好网站维护需要具备哪些知识

网站维护对于相当一部分中小企业老板而言就是&#xff0c;找个网管来每天发发文章&#xff0c;保证网站正常运营&#xff0c;即可。其实真正的网站维护远远不止这些工作。 网站维护&#xff0c;一个好的网站需要定期或不定期地更新内容&#xff0c;才能不断地吸引更多的浏览者&…

【无删减】Python老司机收藏夹的17个国外免费学习网站

用Python编写代码一点都不难&#xff0c;事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发&#xff0c; Python是一个不错的开始&#xff0c;甚至想做游戏的话&#xff0c;用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。许多程序员都把Py…

html5增强式网页体验,使用HTML5,CSS3和jQuery增强网站用户体验

记 得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验&#xff1f; 是不是立刻就想到了flash实现&#xff1f;这彷佛年代久远的事了。使用现在最流行的web技术 HTML5&#xff0c;CSS3和jQuery&#xff0c;同样也可以实现类似的用户体验。而且使用这些特性将会比…

在线SVG转png的网站

网址&#xff1a;https://svgtopng.com/zh/