多分支,不会污染代码,开源式的社交网站,及代码托管网站
基本操作
第一步:(初始化仓库)
git init
第二步:(配置个人信息:id和邮箱)
git config --global user.name "Promise-lx"
git config --global user.email "1787088023@qq.com"
查询语句
1、查看是否配置好:
git config --list
第三步:(从工作区提交到暂存区)
git add index.html
第四步:(从暂存区提交到版本区)
git commit -m "第一次提交“
2、查看文件改动状态
git status
(modified: index.html为红色,说明改动过;
为绿色,说明没改动,至少要提交到暂存区才能检测)
3、查看每次提交过的文件,每个不同完全版本号;
git log
(commit b3243243242432342
Author: Promise-lx 1787088023@qq.com
Date:时间
)
查看缩写版本号
git reflog
4、原文件被删,让原文件复原回退
(注意,暂存区如果没有commit进版本区,暂存区文件消失回退不了)
git reset --hard HEAD (回退到删除前的文件(该文件默认都提交commit版本区里))
git reset --hard HEAD^ (回退到删除前的文件上一个版本(上一个commit版本区里的文件))
git reset --hard HEAD^^ (上上个版本)
回退到指定版本号:
先查看缩写版本号;再复制版本号
git reset --hard 546374
5、当不知道工作区是否保存到了暂存区,可以查看工作区和暂存区的区别;
git diff index.html
(看红色文件内容,-开头表示该红色内容结尾(只有一个减号内容),+开头红色内容为后面添加的(表示没有添加进暂存区,为后面修改的),
删除操作
第五步:删除文件内容
rm index.html
(不用git开头);
分支操作
master:为主分支,一般情况下不在主分支进行操作
1、查看分支
git branch
2、创建分支
git branch name(名字随意)
3、切换分支
git checkout name
4、创建并切换分支
git checkout -b name
秘钥的获取
ssh-keygen -t rsa -C "1787088023@qq.com"
(一路回车,或文件在C:UsersAdministrator.ssh id_rsa.pub文件里打开)
查看秘钥
cat ~/.ssh/id_rsa.pub
git linux 语言编写
pwd:查看当前文件的路径
touch:创建文件
mkdir:创建文件夹
ls:列出当前文件夹所有的东西
cat:查看文件内容
流程图
简单的保存流程
第一步:克隆项目地址(注意是http开头的);
git clone https://github.com/Promise-lx/cs-1804.git name(保存的文件夹名字)
在该name文件夹里创建文件比如index.html
第二步:进入该文件夹并查询分支是否变化;
cd name
git status
第三步:添加暂存区和版本区
git add index.html
git commit -m "保存文件"
第四步:push进存储区
git push
当文件改变时,重复执行
git status
git add index.html
git commit -m "第二次保存"
git push
实际工作流程:
第一步:克隆项目地址(注意是http开头的);
原分支master,有index.html文件
git clone https://github.com/Promise-lx/cs-1804.git zhangsang(保存的文件夹名字)(改bug角色)
git clone https://github.com/Promise-lx/cs-1804.git lisi(增加功能角色)
第二步:创建不同分支
改原项目BUG过程
来到张三的文件夹
cd zhangsan
创建张三分支并切换到
git checkout -b zhang
查询文件是否改动
git status
当文件改动过了,为红色时,提交暂存区
git add index.html
提交版本区
git commit -m "张三提交"
此时git push会报错,应把此时创建好的分支更新到远端的github里Branch去,本地文件创建github里没有改分支无效,只需执行一次,后面不用
git push --set-upstream origin zhang
git push
主分支master合并子分支文件内容操作(cto操作,老大操作)
回退
cd..
进入主分支文件夹,分支默认回到master
cd masterfile
此时git checkout zhang切换到张分支检查文件内容,会报错没有改分支,不同文件夹创建的分支不能相互访问,需要把线上github里的每个分支取到
(pull会把所有字分支文件取到,取单个分支用git fetch
git pull
查看所有分支,不过并没有zhang分支,原因不明
git branch
可以切换到zhang分支
git checkout zhang
切换到主分支
git checkout master
主分支文件内容合并子分支文件内容(由原先内容变为了张三写的内容)
git merge zhang
保存到github储存区
git push
开发原项目新功能过程
李四在原分支master,有index.html文件里新增了index.js文件
回退
cd..
切换李四文件夹
cd lisi
创建分支li并切换
git checkout -b list
查询文件是否改动
git status
提交暂存区
git add index.js
提交版本区
git commit -m "李四开发的功能"
拉取主分支代码,先切换到主分支
git checkout master
可以直接pull取得
git pull
再次切换到lisi分支
git checkout lisi
子分支文件内容合并主分支文件内容
git merge master
此时出现一个这样的显示框
按esc,输入 :wq 回车
意思是退出当前可编辑的状态
保存到github储存区,git.push,不过远端的github里Branch并没有lisi分支,先更新
git push --set-upstream origin lisi
push进存储区
git push
到主分支master合并子分支文件内容操作(cto操作,老大操作)
回退
cd..
进主分支文件
cd masterfile
此时找子分支lisi,切换到lisi分支会报错,先要取得李四的分支
git fetch
查询所有分支,此时看不到lisi分支,原因不明
git branch
可以切换到lisi分支
git checkout list
先回到主分支
git checkout master
再合并子分支
git merge lisi
存到GitHub存储区
git push
继续张三步骤
回退
cd..
找张三文件夹
cd zhangsan
切换主分支,(经过李四的操作,发现该文件代码还未更新时)
git checkout master
更新本地文件(代码)时,用git pull;更新分支时,用git fetch
git pull
切换张三分支
git checkout zhang
合并主分支代码
git merge master
此时张三新增了一个list.js文件
添加暂存区
git add list.js
添加版本区
git commit -m "张三新功能"
此时线上github里有zhang分支
直接push存储区
git push
又是老大操作,合并子分支
回退
cd..
主分支文件
cd masterfile
拉取所有子文件内容
git pull
主分支内容更新了,子分支未更新时,需要删除子分支
在当前分支master下
git branch -D zhang
git branch -D lisi
本地分支删除,远端github里Branch
查询远端分支
git remote show origin
删除远端分支
git push origin --delete zhang
所有操作都在子分支操作,不要去动主分支文件;每个分支文件内容操作互不影响