安装git:
sudo apt-get install git
创建repository(版本库/仓库):
1.创建一个普通目录:
mkdir 目录名
2.初始化仓库:
git init
#初始化完成后在目录下将出现一个.git的隐藏目录,标记当前的目录就是一个仓库,可以进行追踪仓库中的任何变化。【可以跟踪管理版本库】
3.把文件添加到仓库 :
明确一点,任何的版本控制系统,其实都只能追踪那个文本文件的改动,实质上追踪的是改动【删除一个文件属于一个改动,增加一个文件也属于一个改动,向文件中添加内容也属于一个改动】
git add 文件名 # 添加改动
git commit -m "描述信息" # 提交到git
# -m表示每一次提交的日志,可以输入任意内容,当然最好是有意义的。
如果是第一次使用,系统会让你进行账户配置:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
查看仓库当前状态
git status
查看具体修改的内容
git diff
如果对本地的某个文件做了修改,但是还没有add,则通过git diff就可以查看本地文件按和仓库之间的差异,当修改被add之后,再查看差异则没有任何输出。
查看工作日志【提交记录】
git log --pretty=oneline
回退至之前的版本
在git中,用HEAD表示当前版本,上一个版本使用HEAD^,上上一个版本则使用HEAD^^,如果要回退到的版本比较久远,则使用commit id。
git reset --hard HEAD^
# 回退到最近的一个版本【--hard能够使得版本回退到最近的一个版本】
git reset --hard 0da4f317
# 通过commit id回到某个指定的版本,commit id是唯一的。
git reflog
# 查看git的提交记录,可以获取过去和未来的所有的版本。
撤销修改
情况1-修改了文件,但是还没有添加到暂存区:
git checkout -- 被修改的文件
情况2-修改了文件,添加到了暂存区,但是还没有提交到版本库:
git reset HEAD 文件名
git checkout -- 文件名
情况3-修改了文件,直接提交到了版本库:
# 直接回退到上个版本即可
git reset --hard HEAD^
删除文件
1.删除出工作区中的文件:
rm filename
2.删除版本库中的文件:
git rm filename
远程仓库
远程仓库的配置
1.生成ssh key。在终端使用命令:
ssh-keygen -t rsa -C "git注册的邮箱地址"
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有,直接打开使用。
2.添加ssh key到GitHub
注意复制公钥的时候不包含邮箱。
3.检测ssh key是否添加成功:
ssh -T git@github.com
添加远程仓库
1.建立本地仓库和远程仓库之间的连接:
git remote add origin git@github.com:name/respname.git
2.将本地仓库中的内容推送到远程仓库:
git push -u origin master
# -u是将本地master和远程的origin进行关联,以后再次进行推送的时候就可以简化命令。
从远程仓库克隆
git clone git@github.com:github账户名/远程仓库名称.git
git支持多种协议,包括https,一般在公司中使用https协议,使用ssh支持的原生git协议速度更快。
分支管理
实际开发中并不会在master分支上直接进行开发,一般会创建多个子分支。例如:一个团队有3个人,每个人有自己的一个子分支,进行开发,当开发完成后,只需要将各自分支合并到master分支。好处:安全,不影响其他人的工作【避免冲突】
子分支可以创建,删除和切换。
切换到一个新分支dev:
git checkout -b dev
# 创建并切换分支
查看分支:
git branch
切换到分支master:
git checkout master
将子分支合并到当前分支:
git merge dev
删除分支:
git branch -d dev
bug分支
每个bug通过一个新的临时分支修复,修复后,将临时分支合并,然后将临时分支删除。
如果bug还未修复完成,暂时需要去处理其他的任务,bug分支还不能合并到主分支上,可以将当前工作现场储藏起来。
feature分支
软件开发过程中,总有很多的新功能会添加进来。
添加一个新功能的时候,给新功能创建一个新的子分支,最后将性功能的分支合并到主分支即可。
说明:如果某个功能被废弃掉,没有必要合并到主分支,则可以使用命令git branch -d 需要被删除的分支名称 直接删除【强制删除】。
多人协作
1.获取远程仓库中默认的master主分支:
git remote
2.获取推送和抓取的路径:
git remote -v
推送分支
git push 远程xxx 本地xxx
抓取分支
git pull
如果进行团队开发,每次在进行push之前,需要将对方的代码pull下来【先pull,如果出现冲突,解决完冲突之后将结果push】
标签管理
创建标签
git tag 标签名
# 给当前最新的版本创建标签
git show 标签名
# 显示指定标签的详细信息
git tag 标签名 commitid
# 给指定commit_id的版本添加标签
操作标签
1.删除本地仓库中的标签:
git tag -d 标签名
2.推送标签到远程仓库:
git push origin 标签名
git push origin --tags
3.删除远程仓库中的标签:
git push origin :refs/tags/标签名