连续复制
一键复制
一键打包

1、创建用户名和邮箱

   git  config  --gloabal user.name "lau0400810121"
   git  config  --gloabal user.email "lau0400810121@163.com"

2、建立版本仓库

   git init

3、在仓库的工作区创建文件、添加到缓存区、提交到版本仓库

    vim 1.php  创建
    git add 1.php  添加到缓存区
    git status  查看当前工作区的状态
    git diff HEAD -- 1.php 查看当前修改和版本库中文件的差别
    git commit -m '版本修改说明'

4、版本回退

   git log 查看所有的版本信息
   git reset --hard HEAD^  回到上一版本
   git reset --hard HEAD^^  回到上上一版本
   git reset --hard 版本ID
   git reflog 查看版本操作命令(方便进行版本回到未来的操作)

5、撤销工作区内容的修改(在commit之前)

  1. (已经add但没有提交)

    git reset HEAD 1.php
  2. (未提交之前的修改)

    git checkout -- 1.php

会回退到最初的工作区的状态

但一旦提交到了版本仓库了之后,那就使用 git rest --hard 版本ID 来实现版本的回退,尽量不要托管到远程仓库再进行修改

总结:
 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

6、删除文件

 1)先在本地文件管理目录进行删除  git rm 1.php 然后提交到版本仓库 git commit -m 'delete 1.php'  实现本地和版本仓库的一致性
 2)撤回删除  git checkout --  1.php 

7、远程仓库

第1步:生成秘钥文件

ssh-keygen -t rsa -C "lau0400810121@163.com"

一路下一步,最终在”C:Usershasee.ssh“下看到2个文件
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
第3步:团队开发,添加多个ssh key

8、添加远程仓库

在github上创建一个新的仓库,假设仓库名称为study

  1. 本地库与远程库建立联系

    git remote add origin git@github.com:自己的github账号名/study.git
  2. 远程仓库下拉与本地库合并

    git pull origin master --allow-unrelated-histories
  3. 把本地仓库下的内容推送到GitHub仓库中

    git push -u origin master   把本地master分支推送到远程仓库的master分支中
    git push -u origin master:developer 把本地master分支推送到远程仓库的developer分支中,再在远程master中进行合并
  4. 以后只要本地做了提交到本地版本库,就可以使用下面命令推送到

        git push origin master   推送到GitHub
  5. 假如远程仓库已经有了文件了,先得同步到本地

    git pull --rebase origin master 
    或者
    git rebase orgin master
  6. 从github拉取下来最新的和本地进行合并

        git pull origin dev   从远程的dev分支上拉取到本地的master分支上
如果远程仓库走的是https协议,必须输入仓库的用户名和密码
如果是ssh协议,则不需要,前提是初始化时的用户名和邮箱必须和远程仓库的保持一致

9、从远程库中克隆

在github上创建一个新的版本仓库,命名为mygit
克隆远程仓库到本地形成一个本地仓库

git clone git@github.com:GitHub账号/mygit.git(既可以是git@github.com,也可以是https://github.com/GitHub账号/mygit.git)
  然后在本地的mygit库中查看同步的文件

10、分支

  创建并切换到新分支  git checkout -b dev 
      相当于: git branch dev(创建)    git checkout dev(切换)
   git branch 查看当前分支

   分支合并: 
        首先切换到主分支上  git checkout master
        在主分支上进行合并  git merge dev
   分支删除:
       git branch -d dev

11、冲突解决

 1)当在一个分支上修改一个文件提交到分支版本库时,同时主分支也进行修改该文件并进行提交,
     接着进行合并时就会出现冲突
 2)直接在主分支上打开冲突文件(可以使用git status查看),并进行相应的修改,最后提交即可
 3)删除分支
 4)git log --graph --pretty=oneline --abbrev-commit 可以看到分支合并图
 

12、分支处理策略

  master分支只作为发布版本,平时不在上面操作
  dev分支用来做开发使用,每个人往dev分支上开发,最后进行合并
     git merge --no-ff -m "merge with no-ff" dev

13、BUG分支

 
  假定手头有分工作正在dev分支上操作,但是没有完成,但此时需要修复BUG
  可以先隐藏当前的分支
    git stash
    通过git status  查看工作区
   假设需要在主分支上修复BUG,此时切换到主分支上去
   git checkout master
    在主分支上创建BUG分支
    git checkout -b  bug_01
    在BUG分支完成修改提交后,切换到主分支进行合并并删除掉BUG分支
    接着重新跳到dev分支上工作
     git checkout dev
    重新返回到原工作区
     git stash pop

14、强行删除(一个未合并的)分支

  git branch -D feature-vulca

15、多人操作

   查看远程仓库  git remote  -v
   推送分支  git push origin master 
             git push origin dev
    master分支是主分支,因此要时刻与远程同步;
    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
    feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

16、多人协作开发

多人协作的工作模式通常是这样:

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

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

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

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

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

17、打标签方面更好的查找,比版本ID更容易记

  
    在指定分支上添加标签  git  tag v1.0
     查找所有的标签       git tag
     查看所有的版本信息  git log --pretty=oneline --abbrev-commit
     创建带有说明的标签   git tag -a v0.1 -m "version 0.1 released" 3628164
      查看标签信息 git show v0.1
 
  删除标签 git tag -d v0.1
     推送标签到远程  git push origin v0.1
                     git push origin  --tags

  删除已经推送到远程的标签
                 先在本地删除  git tag -d v0.1
                 再删除远程  git push origin :refs/tags/v0.1

18、搭建git服务器

第一步,安装git

yum -y install git

第二步,创建git用户来管理git

adduser git
passwd git

第三步,创建证书登陆

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令

git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

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 clone ssh://git@server:端口号/srv/sample.git

19、git打包两个版本差异文件

git diff 61d2112 f3c0f99 --name-only | xargs tar -cvf update.tar