一、简介
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
常见的版本控制工具有传统的SVN、GIT、CVS等。各自的优缺点本篇幅不做介绍,着重介绍开发过程中的常用的使用方法。现在的各版本都有比较友好的交互界面,看个人使用习惯,本章节主要以命令方式介绍软件开发过程当中GIT版本控制工具的使用。
1.1 GIT属于分布式版本控制,整个过程:
用户 –>
从服务器checkout到本地(cloneform blessed repository) –>
建一个本地分支(create local branch) –>
修改内容(working(modify) in branch) –>
合并到主分支(merge branch to master) –>
(发送请求push到服务器)send request to push local toremote blessed repository –>
服务器管理员审核
1.2 GIT的组成部分(三个区域)针对三种状态:
*blessed(remote) repository 远程仓库
*local repository (.git/project)本地仓库
*stage area (.git/index)临时工作区
*work area (.git所在的当前目录)
1.3 GIT文件状态生命周期
二、GIT基本命令
1. 了解git系统环境变量
/etc/gitconfig
.gitconfig
2. 设置身份
$ git config –global user.name “zhang” //global全局的,所有的版本都用这个信息
$ git config –global user.email xxx@gmail.com
3. 设置编辑器(可选)
$ git config –global core.editor emacs
4. 设置你的比较工具(可选)
$ git config –global merge.tool vimdiff
5. 更改git branch/diff/status颜色
$ vim ~/.gitconfig 添加:
[color]
branch = auto
diff = auto
status = auto
ui = auto
6. 检查你的配置
$ git config –list
7. 帮助
$ git help <verb>
$ git <verb> –help
8. 初始化一个版本仓库
$ mkdir gittest1
$ cd gittest1
$ git init //初始化一个版本仓库,把gittest1初始化一个版本仓库,初始化完成后会生成.git文件夹。
我们存的东西实际上是在.git的objects里面,
9. 提交
$ git add . //提交,“.”表示当前文件夹下所有文件,执行命令实际上是提交到 stage area中去,并没有提交到我们的版本仓库中。
$ git commit hello -m “init hello” //提交hello文件,从index 到 object
(注意:git commit -a -m == gitadd+git commit)
.git隐藏目录下,stage area(临时工作区)是通过index文件来存储的,本地仓库是在object文件夹下。
git commit -m提交的内容换行:
先输入第一个引号,按Enter即可换行,完成后再补齐后面的引号。
10. 建立仓库两种方式如下,git 快速建立仓库
$ git remote //查寻与我们本地仓库相关联的远程管理仓库
当git从远程克隆过来时,会自动建一个remote,remote仓库的信息的索引是放在我们本地的,只是指向我们远程仓库的地址。可以通过$ git remote -v 查看 。
11. git添加文件的操作
$ git add *.c //添加当前文件夹下后缀名是.c的所有文件
$ git add README //添加 README 文件
$ git commit -m “successs” //添加完成后要记住commit,m表示message
(注意:git commit -a -m 等于git add+git commit)
12. 检查文件状态
$ git status //我们可以用status跟踪我们仓库里面个文件的状态,哪些有没有提交啊……
13. 忽略指定文件
创建.gitignore文件,把要忽略的文件放到.gitignore文件中去。
echo “bin.dll” >> .gitignore //忽略bin.dll文件
14. 比较两个文件的不同
$ git diff -staged(默认) //比较workspace(当前工作区) VS staged area(临时区域).
$ git diff -cached //比较staged area(临时区域)VS local repo(本地仓库).
$ git diff origin/master //比较workspace(当前工作区)VS远程origin/master分支的区别
15. 追溯(恢复)到以前的版本
方式一:$ git reset
方式二:$ git checkout file_name
$ git checkout bin1.dll //把bin1.dll从远程仓库找回来,当文件没有了,可以用checkout给找回来
16. 文件的移动和删除
$ git mv
$ git rm bin1.dll //删除bin1.dll文件,删除后磁盘上就不存在bin1.dll文件了, 不能用gitcheckout找回来
$ git rm -Rf svn //强制删除仓库中svn文件夹,同时删除工作目录下svn文件夹,-R递归、-f强行
17. GIT各个版本的差异
$ git log //查看以往的操作,以及谁更改了的操作
$ git log –pretty=format:”%h – %an, %ar :%s”
$ git whatchanged //看每个文件发生了哪些改变
18. 如何跟远程服务器联系,提交
$ git pushorigin master //origin为远程仓库名字,可用git remote查看。master为要提交本地的哪个分支,可以用git branch 或者 git branch list列出当前所处分支
$ git clone //一般在新工程下载,当前目录为空的情况,会从远程下载仓库并checkout出来
$ git clone –no-checkout //会从远程下载仓库但不执行checkout操作,即只下载.git仓库目录,方便代码工程的拷贝,只需要.git目录即可。后续再通过git checkout即可检出代码文件
$ git clone –depth 1 //只把最近的一次commit给clone下来就好了,减少克隆下来的仓库大小
$ git pull //把远程的下下来与我本地的合并
$ git fetch //下下来后不与本地的合并,自己直接建立个分支
(pull 与clone、fetch 的区别?
pull : 把远程的下下来与我本地的合并
clone:当前没有版本仓库,直接克隆一个下来
fetch :下下来后不与本地的合并,自己直接建立个分支
)
当我们没有权限去push时候,就只能通过打补丁的方式生成相应的*.patch然后通过email的方式发送给管理员。
$ git format-patch origin/master //origin为远程仓库名字,可用git remote查看。master为要提交本地的哪个分支,可以用git branch 或者 git branch list列出当前所处分支
19. 查看分支
$ git branch //查看分支
$ git branch -al //查看远程所有分支
20. 新建分支
$ git branch zhangs //新建名字为zhangs的分支
$ git branch -m oldname newname //更改分支的名字
$ git checkout -b zhangs //新建分支zhangs,并且跳到zhangs分支
$ git checkout -b test origin/test//新建本地test,基于远程的test分支,并且切换到本地test分支
21. 切换分支
$ git checkout zhangs //切换到zhangs 的分支
22. 比较分支的差异性
$ git show-branch
23. 比较分支
$ git diff master zhangs //比较分支master与zhangs的不同,打印信息为master变成zhangs要怎么修改
24. 合并分支
$ git merge“merge zhangs to master”HEAD zhangs //把当前最新的zhangs分支合并到master分支中,(注意当前操作是在master分支下)。
1.git fetch //更新到本地
2.git merge origin/master //合并到master分支,当前分支在master分支下
合并分支的另一种做法(把zhangs分支合并到master中):
$ git checkout master
$ git pull . zhangs
合并分支通过fetch更新本地仓库两种方式:
//方法一
$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
$ git log -p master.. origin/master//比较本地的仓库和远程参考的区别
$ git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并
//方法二
$ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp//比较master分支和temp分支的不同
$ git merge temp//合并temp分支到master分支
$ git branch -d temp//删除temp
25. 删除分支
$ git branch -D zhangs //删除zhangs分支
$ git push origin –delete zhangs //删除远程分支zhangs
git-更改本地和远程分支的名称
git branch -m old_branch new_branch # rename branch locally git push origin:old_branch # delete the old branch git push–set-upstream origin new_branch # push the new branch,set local branch to track the new remote
26. git tag标识的使用(类似于windows系统增加还原点)
$ git tag -a v1.0 -m “my version v1.0” //给当前分支添加v1.0版本的还原点
$ git tag -a v1.0 commit号 -m “my version v1.0” //给某个commit添加v1.0版本的还原点
27. 切换标签
$ git checkout v1.0 //切换到v1.0标签
28. 查看标签
$ git show v1.0 //查看标签v1.0信息
29. 删除标签
$ git tag -d v1.0 //删除标签v1.0
30. 标签的发布
通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
$ git push origin v1.0 //将v1.0标签提交到git服务器
$ git push origin –tags //将本地所有标签一次性提交到git服务器
31. git reset恢复之前状态
$ git reset –hardHEAD~2(或者commit号) //硬恢复到之前状态,2个log提交之前,源码回退
$ git reset –soft HEAD~2(或者commit号) //软恢复到之前状态,2个log提交之前,源码不回退
32. git reset恢复文件
当使用了git add *后,要恢复之前的状态可以使用:git reset HEAD 要恢复的文件
33. git checkout恢复文件
修改文件后再git add * && git commit 后要恢复之前文件的编辑状态: git checkout — 要恢复的文件
34. push到远程仓库并在远程创建分支zhangs
$ git push origin zhangs //client,将本地zhangs分支提交到远程的zhangs分支
$ git fetch //server
$ git checkout –track origin/zhangs //server,服务器上拉取zhangs分支
然后今后客户机git push,在服务器上可以直接使用git pull把代码更新到服务器
35. 修改上一次的提交,如备注信息填写有误
$ git commit –amend //修改上一次的提交,如备注信息填写有误
36. 分支切换
$ git checkout master //切换到本地master分支
$ git checkout origin/zhangs //切换到远程zhangs查看远程分支zhangs的修改情况
$ git checkout-b keyfob origin/keyfob //新建本地keyfob,基于远程的keyfob分支,并且切换到本地keyfob分支
37. 设置新的git远程仓库地址路径
方法一:
$ git remote rm origin
$ git remote add origin newurl(你的新远程仓库地址)
方法二:
git remote set-url <name> <newurl>[<oldurl>]
例如:
$ git remote set-url origin git@192.168.0.33:/RK3568.git
38. 提交到远程分支与从远程分支拉取
a. git push origin keyfob //将本地keyfob分支提交到远程的keyfob分支,远程没有keyfob的时候,将会新建keyfob分支
b. git checkout-b keyfob origin/keyfob //新建本地keyfob,基于远程的keyfob分支,并且切换到本地keyfob分支
c. git merge origin/keyfob
39. 代码从.git 目录检出,理解HEAD
方法一:
1. 在含有.git的目录下,通过git log查看提交信息
2. 执行git reset –hard或者git reset–hard “commit号”
方法二:
在方法一不可行,提示fatal: Thisoperation must be run in a work tree错误的时候:
1. git clone –bare . ~/xx/xx.git ==>在.git隐藏目录下执行,生成远程仓库到xx目录的xx.git文件.
2. git clone ~/xx/xx.git ==>克隆出来
40. 忽略已跟踪的文件
git update-index –assume-unchanged filename
撤销用:
git update-index –no-assume-unchanged filename
41. 删除已入仓库的文件夹
git rm -r –cached .idea/
git commit -m “xxx”
42. git添加空目录
$ find . -type d -empty -exec touch {}/.gitignore \;
在空目录中添加.gitignore文件,然后git add -f * && git commit -a -m “msg.”操作。
今天的文章低代码开发平台哪个最好_低代码开发平台哪个最好「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85321.html