赞
踩
Git是目前世界上最先进的分布式版本控制系统。我们每一台电脑都可以做代码仓库,我们对当期代码做的任何更改都会存放到我们的Git记录中。当我们写完了手中的代码,我们就可以上传到中间服务器,其他人可以拿到我们的代码,做出更改,使协同开发非常方便。
先来个实操,后面对所有命令一一解析。
#先创建一个工作目录,然后创建你要写的项目代码
#然后执行以下操作
git init #创建版本库
touch README.md #创建README文件是必要的
git add . #.表示添加工作区的所有文件
git commit -m 'first commit' #为当前的更改创建第一个版本
git remote add origin https://github.com/xxxxx/xx.git #添加你的github仓库origin
#git remote ##此命令可以查看你已有的远程仓库,如果origin已存在则不需要再添加
#git remote rm origin ##此命令可以删除远程仓库
git -u push origin master #推送到远程master分支
#如果此步推送出现问题,如fatal: 'origion' does not appear to be a git repository。
#可以先删除origin这个仓库,然后再通过上述git remote add来重新添加一次
#然后重复推送操作即可
这样我们就成功上传了我们的第一个项目。
git init #初始化,生成.git文件
git add test.c #
git commit -m '版本信息' # 创建一个版本
git log #查看版本信息
git add test.c #
git commit -m '版本信息' #再次创建一个版本
当前版本只记录了对上一个版本的修改,不是简单的覆盖,当需要进行版本回退时,执行下面语句:
git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD~10 #回退到倒数第10个版本
注意上述操作并没有删除当前版本,可以再回到当前版本,此时需要用到版本序列号,通过git log或git reflog来查看。
git reset --hard 版本序列号前几位即可 #回到版本序列号对应的版本
#修改未加入暂存区
git checkout -- test.c #未加入暂存区时,撤销工作区中对test.c文件的修改
#修改已加入暂存区
git reset HEAD test.c #把暂存区的修改撤销,回到工作区
git checkout -- test.c #此时即可撤销对test.c的修改
git diff HEAD -- test.c #拿版本库的文件和工作区的文件的不同
git diff HEAD HEAD^ -- test.c #版本库的当前版本和上一个版本进行比较
#删除文件也是对工作区的改动
rm test.c
git add test.c #或者git rm test.c
git commit -m '删除test.c' #创建新版本库,该版本中test.c已删除
git branch #查看分支信息
git checkout -b dev #创建一个分支dev,并切换到其上工作
git checkout master #切换回master分支
git merge dev #快速合并dev分区
# git merge --no-ff -m '禁用快速合并' dev
git branch -d dev #删除dev分支
git checkout -b dev #创建一个分支dev,并切换到其上工作
# 此处是你做的一些修改,在dev分支修改test.c并提交一个版本 #
git checkout master #再切换回master分支
# 此处是你做的一些修改,在master分支修改test.c并提交一个版本 #
git merge dev #快速合并dev分区
上述过程会发生冲突,在冲突的文件test.c中会有如下的内容出现:
<<<<<<< HEAD
冲突的内容1
=======
冲突的内容2
>>>>>>> dev
可以手动修改如下:
冲突的内容1 #保留其中之一,或者全保留,或者都不保留
冲突的内容2
再进行以下操作:
git add test.c #冲突文件
git commit -m '解决冲突' #重新提交
当正在自己的分支coding时,若有bug修复任务到来,执行以下操作:
git stash #保护工作现场
git checkout master #切换到有bug的分支
git checkout -b bug-001 #创建临时的分支来修复bug
git add test.c
git commit -m '修复bug' #修复bug后提交
git checkout master #回到master分支
git merge --no-ff -m '修复bug-001' bug-001 #禁止快速合并,并合bug-001并分支
git checkout dev #回到自己的工作分支
git stash list #显示保存工作现场
git stash pop #恢复工作现场
禁止快速合并是为了防止临时的bug分支被删除后,找不到修复bug的记录,因此禁止快速合并,让git帮我们做一次新提交,而不是快速合并。
git clone git@github.com:xxxx/test.git #ssh协议克隆
git https://github.com/xxxx/test.git #https协议克隆
#如果添加了ssh密钥,就使用ssh协议克隆,不需要每次都输入密码
如果克隆出错,可以执行以下命令:
eval "$(ssh-agent -s)"
ssh-add
git push origin master #向(github)远程分支推送自己的分支(没有创建新分支,则默认master)
#推送时,github上如果没有master分支,就会自动创建一个master分支。
#第一个master是远程分支,第二个master是本地分支
git branch --set-upstream-to=origion/master master
#如果打开了跟踪远程分支,就可以在需要向远程提交更新时,只需以下命令
git push
git pull origin master #master是远程分支,视情况而定,可以是其他任何分支
项目的仓库由项目负责人创建,开发人员在本地克隆后,创建本地的工作分支,如dev,在dev分支中进行各自的开发,开发完成后再将本地分支推送到远程的dev分支上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。