初始化配置
#配置使用git仓库人员姓名
git config --global user.name "your name come here"
#配置使用git仓库的人员email
git config --global user.email xxx@xxx.com
#配置到缓存 默认15分钟
git config --global cerdential.helper cache
#修改缓存时间
git config --global cerdential.helper ‘cache --timeout=3600’
git config --global color.ui true
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global core.editor "mate -w"
#列举所有配置
git config -1
#用户的git配置文件~/.gitconfig
获取git仓库
#初始化一个仓库
git init
#clone远程仓库
git clone git@xxx.git
#添加远程仓库 origin 语法为 git remote add [shortname] [url]
git reomte add origin git@xxx.git
#查看远程仓库
git remote -v
提交修改内容
#添加当前修改的文件到暂存区
git add .
#自动追踪文件,包括已经手动删除的,状态为deleted
git add -u
#提交你的修改
git commit -m ‘你的注释’
#推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
git push origin master
#查看文件状态
git status
#跟踪新文件
git add readme.txt
#仅在暂存区删除,保留文件在当前目录,不在跟踪
git rm -cached.txt readme
#重命名文件
git mv readme.txt readme
#查看提交的记录
git log
#修改最后一次提交注释的,利用-amend 参数
git commit --amend
#忘记提交某些修改,下面的三条名lion过只会得到一个提交
git commit -m "add readme.txt"
git add readme_forgotten
git commit -amend
#假设你已经使用git add . ,将修改过的文件阿a,b提交到暂存区
#现在你只想提交a文件,不想提交b文件,应该这样
git reset HEAD b
#取消对文件的修改
git checkout --readme.txt
查看,切换,创建,删除分支
#查看远程分支
git branch -r
#创建新的分支
git branch <new_branch>
#查看各分支最后提交的信息
git branch -v
#查看已经被合并到当前的分支
git branch --merged
#查看尚未被合并到当前的分支
git branch --no-merged
#切换到某个分支
git checkout <branch>
#创建新的分支,并且切换过去
git checkout -b <new_branch>
#基于branch创建新的分支
git checkout -b <new_branch> <branch>
#把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
git checkout $id
#把某次历史提交记录checkout出来,创建成一个分支
git checkout $id -b <new_branch>
#删除某个分支
git branch -d <branch>
#强制删除某个分支(未被合并的分支需要强制删除)
git branch -D <branch>
查看提交记录
#查看提交记录
git log
#查看该文件每次提交的记录
git log <file>
#查看每次详细修改内容的diff
git log -p <file>
#查看最近两次详细修改内容的diff
git log -p -2
#查看提交统计信息
git log --stat
mac上可以使用tig代替diff和log,brew install tig
git基本的分支管理
#创建一个分支
git branch dev
#切换工作目录到dev
git checkout dev
#将上面的命令合到一起,创建的分支并切换到dev
git checkout -b dev
#合并dev分支,当前工作目录为master
git merge dev
#合并完成后,没有冲突,删除dev分支
git branch -d dev
拉去远程仓库的数据,语法为 git fetch [reomte-name]
git fetch
#fetch 会拉取最新的远程仓库数据,但不会自动到当前目录下,要自动合并
git pull
#查看远程仓库信息
git remote show origin
#建立本地的dev分支追踪远程仓库的develope分支
git checkout -b dev origin/develope
git远程仓库管理
#查看远程服务器地址和仓库名称
git romote -v
#查看远程服务器仓库状态
git remote show origin
#添加远程仓库地址
git romote add origin git@xxx.git
#设置远程仓库地址(用于修改远程仓库地址)
git romote set-url origin git@xxx.com
#删除远程仓库地址
git remote rm <repository>
创建远程仓库
#用带版本的项目创建纯版本仓库
git clone --bare robbin-site robbin-site.git
#将纯仓库上传到服务器上
scp -r my_project.git git@git.csdn.net:~
#在服务器上创建纯仓库
mkdir robbon_site.git && cd robbon_site.git && git --bare init
#设置远程仓库地址
git romote add origin git@xxx.git
#客户端首次提交
git push -u origin master
#首次将本地develope分支提交到远程develope分支,并且track、
git push -u origin develope
#设置远程仓库的HEAD指向master分支
git remote set-head origin master
#也可以设置跟踪远程仓库和本地仓库 ### ~~~
git branch --set-upstream master origin/master
git branch --set-upstream develope origin/develope
git安装注意事项
mac电脑下载homeview
安装程序下一步 -> 下一步 -> 下一步
*注意选项:
use git from branch only 只能git branch使用
use git from the windows command prompt 只能用windows的操作窗口 win + r -> cmd git
—version 可查看到git
use git and optional unix tools from the windows cpmmand prompt (把linux命令集成到windows中)能用git 和 window命令窗口
LINUX基础命令
#查看当前目录结构(-a包含隐藏文件)
ls -l/-a:
#清屏
clear
#进入当前路径
cd xxx[路径地址]
#进入同级
cd ./
#进入上级
cd ../
#创建文件夹
mkdir [文件夹名字]
#创建空文件
touch [文件名字]
#向文件中插入或者管理一些内容
vi
#进入插入模式
i
#保存并退出内容的插入模式
ESC + :WQ
#向指定的文件中插入内容(有该文件就写入,如没有该文件会自动创建并写入)[每次会覆盖执行]
echo xxx > xxx.txt
#查看文件中的内容
cat
#拷贝文件
cp
#删除文件
rm -r 递归删除 -f 强制删除(一旦删除无法还原)
例:删除依赖 rm node_mouldus -rf 删除所有 rm * 强制删除所有后缀为js的 rm *.js -rf
git的常规流程
git分为三个区域:
工作区:代码开发
暂存区:暂存代码
历史区(暂存区):保存历史版本代码
#创建git仓库
git init
#当前工作区修改的所有内容全部提交到暂存区
git add ./-A
#[可以指定提交的某个文件
git add xxx.js]
#暂存区提交到历史区,生成一个历史版本
git commit -m ‘提交描述’ [可指定提交 git commit xxx.xx -m '指定提交某个文件']
#[每次区域间进行提交后,都不会删除原有区域中的内容,这样保证下次提交,把区域对比出来不一样的内容提交,而不是所有的]
#怎么查看当前修改的文件处于哪个区域?
git status #红色:工作区 绿色:暂存区 看不见:已经提交到历史区,三区保持一致了
#把暂存区的某个文件删除(场景:提交到暂存区的内容不好,我们可以删除)
git rm --cached xxx.xx
#把暂存区的文件全部删除
git rm --cached . -r
#如果在删除过程中发现从暂存区删除的文件在工作区被修改了,只有加上 -f 才能强制从暂存区把内容删除掉
#场景:提交到暂存区一份,把工作区的修改了,但改的东西不好,想把暂存区内容撤回到工作区(覆盖新的内容)
git checkout xxx.xx [暂存区内容没有消失,只是把工作区最新修改的信息覆盖了,让工作区和暂存区保持一致]
#比较各区之间的区别
#工作区vs暂存区
git diff
#工作区vs 历史区 master分支
git diff master
#暂存区vs历史区
git diff --cached
git回滚
#暂存区回滚到工作区
git checkout .
##把上一个暂存区中的内容撤回到工作区
#把最近的暂存区的内容删除掉
git reset HEAD .
#暂存区回滚到工作区
git checkout .
#历史区撤回到工作区
git reset --hard 版本号[前7位即可]
#查看历史操作信息
history > xxx.txt
#查看历史回退信息
git reflog
git团队协作开发
一:基本开发流程
(1)首先创建中央仓库,可基于gitHub/codding/gitLab/码云来创建
(最好不要创建空仓库,因为空仓库中没有任何分支,只有提交一次历史信息才会生成master分支)
把开发者都列入仓库的开发群组中,这样每个开发者用自己的账号,都有权限操作这个仓库了
[当然也可以不这样做,所有开发者用统一的账号也可以,为了防止不知道是谁提交的,
我们需要让每一个客户端在本读的git全剧配置中设置和当前使用代码管理网站相同的用户和邮箱
git config --global user.name ‘xxx’ ...]
(2)创建客户端本地仓库(一个开发者就是一个仓库),还需要让本地仓库和远程仓库产生关联,
这样才能实现后续的信息同步
git init 创建本地仓库
git remote add origin ‘远程仓库地址’ 连接远程仓库
git remote -v 查看连接信息 (origin 是连接名称,一般都用这个名字,当然名字可以随便设置)
git remote rm origin 移除本地仓库和远程仓库连接
git remote update origin 更新远程仓库
有更简单的方式:只要把远程仓库克隆到本地,就相当于创建本地仓库,而且自动建立了连接,
并且把远程仓库中的内容也同步到了本地
git clone ‘远程仓库地址’ ‘本地创建文件夹名称(不写默认是仓库名字)’
(3)各自和中央服务器同步信息
#把本地历史区的信息推送到中央服务器上(推送)
git push origin master (每一次push之前最好都pull一下,如有冲突,在本地处理下,在提交)
#把中央仓库的信息和本地仓库保持同步(拉取)
git pull origin master
团队协作开发 存在潜在问题 代码冲突
团队协作解决冲突
无分支管理模式
提交项目先拉取
git pull origin master
git add .
git commit -m '描述'
git push origin master
同一行代码冲突:在提示的冲突命令行中同意即可
ESC :wq (按enter键即可)
然后提交
不是同一行代码冲突:尝试合并失败,我们需要收到把代码进行合并,然后提交
单分支管理模式
每天第一件事先把master分支代码拉取到本地master分支,每个人在自己本地仓库中,先进行分支创建和切换
git pull origin master
分支是指历史区的分支,创建分支就是创建不同的线路来管理历史版本
git branch 查看当前分支
* master 星代表当前在哪个分支上
git branch dev 创建一个叫dev的分支(创建完成后,会把本地的master的内容同步到dev分支上)
git checkout dev 切换到dev分支
git checkout -b dev 创建并切换到这个分支
当工作区有新修改内容不想提交生成历史版本时:
git stash 暂存文件
git stash pop
分支已经有生成历史版本的,也有没开发完的,这时不能直接切换分支,需要先暂存内容
所以 使用场景为: 当工作区和暂存区还有没提交到历史版本的代码,要进行分支的切换,先进行 git stash进行暂存,在git checkout master切换分支,用git stash pop还原暂时存储的内容,最后合并分支 git merge dev [A分支merge B, 把B合并到A分支]
important
常用:
git clone “远程仓库地址” 把远程仓库克隆到本地(本地自动和远程建立连接,自动把远程中的信息同步到本地了,本地也是一个单独的仓库:建议远程仓库不要是空的,至少要有一个master分支)
git pull origin master 把远程仓库master信息同步到本地仓库master中
git push origin master 把本地仓库master中的信息同步到远程仓库master
中(需要使用gitLab的用户密码来进行权限校验:一般都是租场在远程仓库中把组员的账号都放到小组中,这样组员用自己的账号也有权限操作仓库了。最好在本地的git配置中把用户名和邮箱修改为和gitLab账号相同的信息)
如有冲突:
1.进入到编辑框模式, i -> ESC -> :wq 即可
2.自己会把两份代码都保存到本地存储中,自己手动去选择要哪个,改完后重新提交
git checkout -b xxx 创建分支并且切换到指定分支(可以本地master中的历史信息同步到新创建的分支中)
git branch 查看分支
git branch xxx 创建分支
git checkout xxx 切换分支
git branch -D xxx 删除分支
git merge xxx 把xxx分支的信息合并到当前分支下
git stash / git stash pop 暂存在切换分支时,有一部分信息并没有提交成为历史版本,为了防止信息的丢失,我们需要先使用stash保存,然后再j基于 stash pop 还原