git的简单使用

关于git的在这里就不做过多的介绍了,大家只要知道git目前在软件行业很受欢迎,是一个分布式项目管理工具,知道这些就可以了,当然你要问我什么是分布式?这个你可以通过很多中方法了解到的,如果以后的博文中会遇到再做介绍。
好了,虽然这么说,但是简单的介绍还有应该有的,以方便我们开始正文
git简介
1. Git是目前世界上最先进的分布式版本控制系统(没有之一)
2. GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别
安装git

  1. 如果您使用的是Linux系统,你可以使用sudo apt-get install git 来完成git的安装,老一点的Debian或Ubuntu Linux,要把命令改为sudo apt-get install git-core
  2. 如果是在window下,直接去官网下载安装文件,安装完成后使用git --version命令查看是否安装成功这里写图片描述

创建仓库
先创建一个文件夹,使用git init 来初始化仓库,创建完成之后发现文件夹下边多了一个.git的文件,这个文件是用来保存相关配置的

提交文件
1. 文件准备,我们先创建一个txt文件并编辑相关的内容
2. 使用git status 查看与版本库之间的区别这里写图片描述
从图中可以看到1.txt文件是新增的,提示我们使用git add 来提交
3. git add 提交代码
这里写图片描述
git add 命令是将目前的代码添加到一个暂存区中,并为真正放到仓库
4. git commit -m '' 提交代码
这里写图片描述
如果是首次使用提示我们设置账号和密码
这里写图片描述
设置账号并提交代码,提交完之后代码已经添加到仓库,如果已经关联远程仓库,需要用git push来推送到远程仓库

版本回退
1. 我们对1.txt文件进行多次改动并提交
2. 使用git log查看提交记录
这里写图片描述
添加参数pertty=oneline可以简化提交日志信息
这里写图片描述
每行记录的最前边的那个字符串为head,也就是版本号,现在我们最新的版本为boss is a big….我们回退到boss is a good man这个版本
这里写图片描述

工作区和暂存区的理解和相关操作
1. 这里写图片描述
工作去表示本地的代码。暂存区表示已经进行了add操作的代码。
2. git checkout -- file 丢弃工作区的修改
3. git reset HEAD <file> 可以把暂存区的修改撤销掉(unstage),重新放回工作区

分支管理
1. 在版本回退里,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点.
2.git branch 查看当前分支
这里写图片描述
3.git checkout -b '' 创建并切换到新的分支
4. git checkout 检出并切换到分支
5. git merge branch 合并分支,创建dev分支并将dev分支合并到master
这里写图片描述

解决冲突
在团队开发中,代码冲突是经常出现的事情,接下来就教大家怎么 解决冲突。
在企业开发中,master一般为稳定的分支用来上线,dev为开发分支,所以我们开发人员都是在dev上创建自己的开发分支
1. 基于dev创建dev1和dev2分支,然后是1.txt文件中的内容冲突,编辑同一行代码即可。
先把dev1的代码合并到dev
这里写图片描述
再合并dev2
这里写图片描述
fix conflict s and commit result提示我们解决冲突并提交代码
这里写图片描述
在这个图中<<<<<和>>>>>之间的内容为发生冲突的内容
2. 解决冲突
修改冲突部分内容并提交代码并提交

远程仓库管理
1.当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。要查看远程库的信息,用git remote
这里写图片描述
如果首次使用并未关联git远程仓库,可以先在GitHub注册账号,创建一个新的仓库,创建完之后可以看到关联本地代码的提示
这里写图片描述
1. 然后关联远程仓库
点击仓库地址的ssh,拿到ssh地址复制,在本地执行git remote add origin git@github.com:lizy928/myproject.git
然后执行 git push -u origin master
如果出现以下错误
这里写图片描述
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,现在使用ssh-keygen -t rsa -C 'youname' 来生成ssh公钥
这里写图片描述
查看生成的ssh公钥
这里写图片描述
复制ssh公钥
这里写图片描述
点击设置添加ssh-key
这里写图片描述
添加完成
2. 然后将本地代码推动到远程
这里写图片描述
3. git clone git地址 可以克隆远程项目代码

分支管理
1. 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
下面我们实战一下--no-ff方式的git merge
2. 在dev分支上创建dev3分支,修改1.txt文件并提交
这里写图片描述

远程协同开发

  1. git remote 查看远程仓库信息
  2. git remote -v 查看详情、
$ git remote
origin
lizy@ck MINGW64 /e/gitRep/test (dev)
$ git remote -v
origin  git@github.com:lizy928/myproject.git (fetch)
origin  git@github.com:lizy928/myproject.git (push)
lizy@ck MINGW64 /e/gitRep/test (dev)

3 . git push origin master 远程推送,将master分支推送到远程,把master和dev都推送到远程

$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 268 bytes | 268.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:lizy928/myproject.git
   1b90ff6..b7fc5af  master -> master
lizy@ck MINGW64 /e/gitRep/test (dev)
$ git push origin dev
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (16/16), 1.20 KiB | 613.00 KiB/s, done.
Total 16 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), done.
To github.com:lizy928/myproject.git
 3. [new branch]      dev -> dev
lizy@ck MINGW64 /e/gitRep/test (dev)

4.在开发中团队成员都会随时向远程仓库推送自己的代码,因此出现冲突的纪律也是比较大,接下来就讲解演示一下如何解决这种场景下的冲突。

  1. 假如你的同事在dev分支下修改一个2.txt的文件,提交并推送到远程
lizy@ck MINGW64 /e/gitRep/test (dev)
$ git push
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin dev


lizy@ck MINGW64 /e/gitRep/test (dev)
$ git push --set-upstream origin dev
Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of known hosts.
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 268 bytes | 268.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:lizy928/myproject.git
   3c49854..01b60aa  dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

lizy@ck MINGW64 /e/gitRep/test (dev)

将编辑完成的代码推送到远程
如果此时你也对这个文件做了一些修改也要推送到远程

$ cat 2.txt
env

$ git add 2.txt

$ git commit -m "add new 2.txt"
[dev 7bd91f1] add new 2
 1 file changed, 1 insertion(+)
 create mode 100644 2.txt

$ git push origin dev
To git@github.com:lizy928/myproject.git
 ! [rejected]        dev -> dev (non-fast-forward)
error: failed to push some refs to 'git@github.com:lizy928/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

推送失败,出现代码冲突,Git提示我们,先用git pull把最新的提交从dev抓下来,然后,在本地合并,解决冲突,再推送:

$ git pull
There is no tracking information for the current branch.
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-to=origin/<branch> dev

git pull失败根据提示执行

$ git branch --set-upstream-to=dev dev
Branch 'dev' set up to track remote branch 'dev'

再执行git pull

$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.

修改完冲突的代码之后在进行提交

$ git commit -m "fix env conflict"
[dev 57c53ab] fix env conflict

$ git push
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 621 bytes | 621.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@github.com:lizy928/myproject.git
   7a5e5dd..57c53ab  dev -> dev

其它常用命令

git push -u origin master   //将本地代码推送到远程仓库
git fetch  //更新所有的远程仓库包含的分支的最新代码
git checkout head .     //本地仓库代码完全覆盖本地工作区间
git stash      //将本地修改放入缓存区
git stash pop   //取出本地修改的代码

本次教程到此结束,谢谢阅读

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值