Git 操作

1.svn和git的区别

1.svn是集群式管理,就是版本控制都在服务器上
        缺点:万一服务器挂了,name公司的多人协同开发和版本控制受阻

2.git 是分布式管理,服务器和客户端都有版本控制的能力,都能进行代码的提交合并

2.git和svn的表现形式

1.svn 会在每个文件夹下创建一个.svn的隐藏文件
     项目体积相对git管理的项目管理要大
      冲突相对git管理的项目要多

2.git 只会在根目录下创建一个.git隐藏文件夹
        项目体积相对svn管理的项目药效
        冲突相对svn管理的项目要少

3.git和svn的各个用途

svn  公司内部用,一般不会公布出去
git   开源项目用,单人开发常用

4.svn和git的操作流程

svn 服务器---> 客户端  --->服务器
git  服务器--->本地---> 客户端--->本地--->服务器

Git的指令操作
1.创建本地项目文件test

/user/haha/Desktop/test

2.在本地项目文件目录下,创建本地仓库(版本控制)

cd  /user/haha/Desktop/test
git init

3.在项目文件里创建hello.py文件,用于版本控制
4.修改文件之后,查看修改之后和之前的对比

git diff

* 绿色表示新增,红色表示删除 / 修改

5.把新建的hello.py文件添加到本地仓库(版本控制)里面

git add .   或者  git add 文件名

6.查看当前版本控制里面的文件状态

git status
* 红色表示新建文件或者新修改的文件,都在‘工作区’
* 绿色表示文件在‘暂存区’

提示 : 终端命令git add . 只是把文件从工作区添加到暂存区,此时还没有到本地仓库,要到本地仓库需要 git commit .
7.在commit之前命令之前,需要设置个人信息,可以添加--global参数,给所有的git仓库添加一个统一的配置项。这个配置项保存在~/.gitconfig文件中

配置用户名   git config --global user.anme"张三"
配置邮箱  git config --global user.email "[email protected]"

也可以给这一个Git仓指定自己的用户名和邮箱。会保存在当前仓库.git/config文件里

配置用户名 git config user.name "zhangsan"
配置邮箱 git config user.emial "[email protected]"

8.把文件从暂存区提交到本地仓库

git commit -m '描述操作'

9.把文件从暂存区提交到本地仓库之后,再查看版本控制里面的文件状态

git status

10.把先由工作区添加到暂存区,再提交到本地仓库合并成一句命令

git commit -am ' 描述操作'

11.查看所有的详细的历史版本

git reflog(可以看到被删除和退回的提交记录)
或者
git log (不能看到已经删除和回退的提交记录)

12.回到某个置顶版本

git reset --hard 版本号前6位

git 远程服务器

1.复制码云里的项目下载地址,使用git clone 命令将码云里的项目下载到本地。这个过程中,需要输入码云的注册用户名和码云用户密码。注意:只有被添加到项目里的成员和管理者才能下载代码
2.代码的提交:当用户在本地操作完数据以后,需要调用git push将修改推送至远端服务器

1.从远端服务器获取最新的代码

git pull 

2.修改本地文件

vim hello.py

3.将修改提交到本地仓库

git add hello.py 
git commit -m '修改了hello.py

4.将本地仓库修改推送至远端服务器

git push

Git代码冲突
1.容易出现的冲突操作方式

1.多个人同时操作了同一个文件
2.一个人一直写代码但是不提交
3.修改代码之前,不更新代码
4.提交之前,不更新最新代码
5.擅自修改同时代码

2.避免冲突

1.养成良好的代码习惯,先pull再修改,修改完立即commit和push
2.一定要确保自己正在修改的文件是最新版本
3.分模块开发,各自开发各自的模块
4.如果要修改公共文件,一定要先确认有没有人正在修改
5.下班前一定要提交代码,上班第一件事拉去最新的代码
6.不要擅自修改同时的代码

Git 分支
分支的作用

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还
没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨
大风险。 现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上
正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这
样,既安全,又不影响别人工作。

分支的本质

Git分支的其实本质仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,
你其实已经有一个指向最后那个提交对象的master
支。 它会在每次的提交操作中自动向前移动。

.git/HEAD这个特殊指针来表示当前到底在哪个分支。
1.创建本地分支
查看所有分支

git branch 

新建一个分支

git branch name

切换到置顶分支

git checkout 分支名 

2.合并分支
首先切换到主分支

git checkout master

.get/HEAD指向当前所处分支

cat .git/HEAD

将develop分支里的内容合并到master主分支

git merge develoop

3.查看本地分支远程分支的映射关系

git branch -vv

4.创建远程分支拉去到本地

git pull origin develop:develop  #将远端上develop分支拉去到本地的develop分支

6.删除远端分支

git push origin --delete develop #将远端分支develop删除

7.分支的其他的相关指令
git fetch 只是拿到远端的分支的最新commit_id,并不会自动合并,需要手动合并

git fetch origin test  #将远端test的最新commit_id获取到本地
git merge origin/test test # 将远端的test的修改内容合并到本地的test分支

git rebase 用法和git merge类似

git rebase  # 如果在合并时有冲突,需要手动解决冲突
git add .    # 标记为已解决所有冲突
git rebase --abort  # 终止合并
git rebase  --continue  # 解决完冲突以后,不在git commit,
而是使用git rebase --continue 提交修改冲突后的数据

SSH连接

码云生成部署SSH Key:[http://git.mydoc.io/?t=154712](http://git.mydoc.io/?t=154712)

gitHub生成SSH Key:[https://help.github.com/articles/connecting-to-github-with-ssh](https://help.github.com/articles/connecting-to-github-with-ssh)/

你可能感兴趣的:(Git 操作)