Git使用

一、Git是什么?

git是一个版本控制软件

张开的故事:

小张是一个很有野心的程序员,经过万般努力终于开发出了1个视频网站,并上线;

 

由于网站很火,又要开发新的功能,在开发功能的时候可能会出,就需要把目前的网站代码保留下来留条退路。

如何保存呢?打包压缩?

 

缺点:数据量越积压越多

 

于是小张选择了Git做版本控制

 1、进入程序目录下

2、右击Git Bash Here,进入git终端(Linux中的命令都支持)

 

二、git基本使用

1、git init 命令 创建一个.git的隐藏文件夹(存储git发布的版本)

2、$ git status   查看当前文件的状态(红色 初始状态)

 

2、git add .  把当前目录中所有文件从工作区添加的暂存区  ; 状态改变变成绿色

 

3、git commit -m '第一次上线'   从暂存区添加到分支生产一个版本;保存在.get目录中;

 

若第一次使用Git会出现以上报错,请在全局声明邮箱和用户

 

4、Git把管理的文件分为了2个区(工作区、版本库)4种状态(原内容、修改过的内容、暂存、分支)。

4.1、其中原内容---------》修改过会被自动检测到,把修改过的内容--------》提交到暂存状态使用git add .-------》提交到分支使用git commit -m '版本描述信息' (生成1个版本)

4.2、使用 git status 查看当前文件的状态 如果原文件已经修改 状态为红色,暂存状态为绿色。

4.3、git log 查看当前版本之前的版本 、git reflog 查看所有版本

 

5、git add *  把所有工作区中修改过的内容 提交到暂存区,注意但不生成版本!

 

 

6、git log 查看版本信息

 

7、git reset --hard 14555da1d4d31af4875d210c5605bcd729726eaa(版本唯一标识) 回滚到原版本

 

版本回滚

 

 

 上回说的小张要开发新的功能 非洲专区,假设此时原来程序出BUG了

 

所以需要把新功能非洲专区暂存到一个位置, 然后再去修改日韩专区、欧美专区的BUG

 

8、git stash 把新增的内容保存到一个位置,自动迁移了非洲专区

 

 小张修改了第一次上线版本的BUG, 该日韩专区为中日韩专区

 

 

 第1版本修改完BUG,提交无BUG版本

$ git add .
Administrator@PC-20170811HMNW MINGW64 /d/test09 (master)


$ git commit -m '第1版本BUG修复完毕'

[master cdcb19d] 第1版本BUG修复完毕 3 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 .idea/vcs.xml

 

 这时怎么把非洲专区拿回来呢?

 9、git stash pop

 把新版本和 拿去的功能(非洲专区)进行完美合并  这就是Git厉害之处

 

 

 

10、如果在git stash 期间, 多次修该一处代码并提交了版本,git stash pop就会出现冲突()

因为git stash pop不知道和哪个版本进行合并

 

补充:

git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作
                          区还原到当前版本未修改过的状态
git stash list        查看“某个地方”存储的所有记录
git stash clear     清空“某个地方”
git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
git stash drop      编号,删除指定编号的记录

 

 

 

 

三、分支

Git默认分支为master,也可以设置多个分支,开发工作中为了避免线上代码受到影响、也能保证版本功能升级一般 设置会2条分支

master分支:放线上版本代码;

dev分支:复制一份线上代码 ,放在dev分支以便开发出带有新功能的版本 ;开发完成后合并为稳定版本2;

 

 

 

1、创建分支 git branch  分支名称 ; git branch 查看已有分支

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$ git add .

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$ git commit -m '开始分支学习'
[master 1ad25a2] 开始分支学习
 3 files changed, 61 insertions(+), 2 deletions(-)
 create mode 100644 readme.txt

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$ git status
On branch master
nothing to commit, working tree clean

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$ git branch dev

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$ git branch
  dev
* master

Administrator@PC-20170811HMNW MINGW64 /d/Git_test (master)
$

 

2、分支切换  git checkout 分支名称  (注意由于 dev 分支是由master分支创建的,所以dev分支代码和master是一致的)

$ git checkout dev
Switched to branch 'dev'

 补充:

切换分之前一定要确保 工作区域是没有被修改过的内容。否则会报错,解决:git stash   git stash clear

$ git checkout master

error: Your local changes to the following files would be overwritten by checkout:
        .idea/workspace.xml
Please commit your changes or stash them before you switch branches.
Aborting

 

3、分支合并  git merge dev 分支名称

在dev分支开发完毕,测试通过之后,进入master分区,进行分区合并

 div分支的版本也已经合并到master分支

 

 

 

四、GitHub

我们在公司做完开发,如果在家或者出差也要继续工作怎么办?可以结合GitHub,GitHub类似一个网盘,帮我们托管维护代码;

 

1、创建一个仓库

 

 

 

 2、在本地创建项目

Administrator@PC-20170811HMNW MINGW64 /d/s5day83 (master)
$ git add .

Administrator@PC-20170811HMNW MINGW64 /d/s5day83 (master)
$ git commit -m '初次提交'
[master (root-commit) d650438] 初次提交
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

Administrator@PC-20170811HMNW MINGW64 /d/s5day83 (master)

$ git remote add origin https:
//github.com/zhanggen3714/s5day83.git Administrator@PC-20170811HMNW MINGW64 /d/s5day83 (master) $ git push -u origin master Username for 'https://github.com': zhanggen3714 Counting objects: 3, done. Writing objects: 100% (3/3), 243 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/zhanggen3714/s5day83.git * [new branch] master -> master Branch master set up to track remote branch master from origin. Administrator@PC-20170811HMNW MINGW64 /d/s5day83 (master) $

 

3、拉GitHub中的项目  git clone https://github.com/zhanggen3714/s5day83

 

 

 

 4、在GitHub上把项目克隆到本地之后,修改完毕怎么再次提交到GitHub呢?

 查看别名: vim .git/config

git push origin master    提交本地版本到GitHub

5、git pull origin master   从GitHub拉取代码到工作区(和克隆区别,拉更改部分)

 

 

总结:

公司:

  1、创建远程仓库

  2、写readme

       3、git add .

  4、git commit -m ' 在公司写得代码'

  5、git push origin mastet(提交代码到GitHub)

 

回家:

回家之后假设没有带电脑回家

  1、git clone https://github.com/zhanggen3714/s5day83(把在公司开发的代码克隆到家里这电脑上)

  2、git add .

  3、git commit  '在家开发的代码'

  4、git push origin mastet(把在家写得的代码提交到GitHub)

 

第二天回到公司:

  1、git pull  origin  master  (把在家写得,拉下来)

 

状况1:如果到公司没有先 pull 在家写得代码,而是修改了一番,在pull就会出现冲突;

解决:解决冲突,再次提交新版本到GitHub;

 

补充:

git pull 是一步从远程拉代码到工作区

也可以通过一下2个步骤

git fetch  origin 分支  从远程拉到分支

git merge origin master (合并分支到master)  =  git rebase origin/master 

 

 

四、协同开发

1、合作者模式: 将用户添加到仓库合作者之后,该用户就可以向 test 仓库里面上传自己的代码了。

 

 2、组织:创建一个组织,把添加用户,一起做项目。

2.1 创建组织

 

2.2 邀请其它用户加入

 

 

 

 

 

 3、如果你在GitHub上看到一个很牛逼代码有BUG,怎么给别人修正呢?大喊一声 fork,不是fuck。

 

3.1、搜素到该项目

3.2 fuck一下它

 

 3.3 提交你的 修复方案

 

 

 

BUG修复说明

 提交

 

 

 

 

 

 

 

 以上操作 之后 该用户就会接收到你的 pull request;

 

 

五、git的配置

1. 配置文件

Git的配置文件有三个:

  • 系统配置: /private/etc/gitconfig
  • 用户配置: ~/.gitconfig
  • 项目配置:.git/config

 

2. ssh 无密码连接远程仓库

 1、生成一对秘钥

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator.PC-20170811HMNW/.ssh/id_rsa):
/c/Users/Administrator.PC-20170811HMNW/.ssh/id_rsa already exists.
Overwrite (y/n)?

Administrator@PC-20170811HMNW MINGW64 /d/在公司 (master)
$ cd ~/.ssh/

Administrator@PC-20170811HMNW MINGW64 ~/.ssh
$ ls
id_rsa  id_rsa.pub

Administrator@PC-20170811HMNW MINGW64 ~/.ssh
$ cp id_rsa.pub /d/在公司

Administrator@PC-20170811HMNW MINGW64 ~/.ssh
$ cd /d/在公司
View Code

2、把公钥copy到GitHub

 

 

 

 

 

3、配置忽略的文件

 $ vim .gitignore

 添加要忽略的文件

 

 

 

 

参考链接:银角大王 http://www.cnblogs.com/wupeiqi/p/7295372.html

转载于:https://www.cnblogs.com/sss4/p/7543904.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值