分布式版本控制系统与集中式版本控制系统的不同:
clipboard.png
首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库
多个人如何协作:比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
1、创建一个版本库
- $mkdir file
- $cd file
- $pwd(用于显示当前目录)
2、初始化GIT仓库
- git init
3、添加文件到GIT仓库
- git add file(可反复使用添加多个文件)
- git commit-m "wrote a readme file xxx"提交完成
4.修改
- git status(查看当前工作区状态)
- git diff xxx(查看修改内容)
5、版本回退
- HEAD(当前版本)
- HEAD^(上一个版本)
- HEAD^^(上上个版本)
- HEAD~100(往上100个版本)
- git log(查看历史记录,以便确定要回退到哪个版本)
- git log --pretty=oneline(简略看历史记录)
*git reflog(查看每一次命令历史,以便确定要回到未来的哪个版本)- git reset --hard commit id(HEAD..)(回到某个版本)
6、删除修改
- git checkout -- file(丢弃工作区的修改,注意两空格,还未git add 到工作区)
- git reset HEAD file(丢弃暂态区的修改,然后在用git checkout -- file丢弃工作区)
- git reset -- hard commit id(丢弃已经提交的,但前提是没有推送到远程库)
7、删除文件和恢复
- rm file(删除工作区的文件,此时还存在版本库里)
- git rm file \ git commit -m"file"(删除版本库里的并提交)
- git checkout -- file(误删,恢复到最新版本,但是会丢失最近一次提交后你修改的内容)
8、添加远程库
- git remote add origin git@server-name:path/repo-name.git(关联远程库)
- git push -u origin master(第一次推送master分支的所有内容)
- git push origin master(以后每次本地提交之后,有必要时可以直接使用此推送最新修改)
ps:要注意路径是否正确,是否提交了
9、克隆远程库
- git clone git@...(仓库的地址)
10、创建和合并分支
- git banch(查看分支)
- git banch name(创建分支)
- git checkout name(切换分支)
- git checkout -b name(创建+切换分支)
- git merge name(合并某分支到当前分支)//fast forward这次合并是快进模式
- git branch -d name(删除分支)
- $ git log --graph --pretty=oneline --abbrev-commit(看分支合并图)
*git merge --no-ff -m "merge with no-ff"dev(用--no-ff参数合并分支,禁用Fast forward)
//合并分支时,加上--no-ff参数可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
11、解决冲突
- 即在一个分支上的修改和主支上的修改不同步,即保留一个版本或者再改然后再添加提交
12、分支管理
clipboard4.png
- 小伙伴们平时都在分支工作,时不时合并一下,master分支应该很稳定,只用来发布新版本
13、bug分支
修复分支时通过创建新的分支进行修复然后合并最后删除
当手头工作没有完成时,先把现场工作git stash一下,然后去修的bug,修复后再git stash pop(=git stash apply恢复+git stash drop删除)回到工作现场
- git stash
- git stash list(查看)
- git stash pop
(git stash apply、git stash drop)
14、feature分支
clipboard5.png
- 开发一个新feature,最好新建一个分支
- 如果要丢弃一个没有被合并过的分支,可以通过
- git bran -D branch-name(强行删除)
15、多人协作
- git remote(查看远程消息)
- git remote -v(更详细的查看)
- git push origin branch-name(从本地推送分支)
- git pull(如果推送失败,先抓取远程的新提交,但如果有冲突,要先解决冲突,//有可能要 建立本地分支和远程分支的关联)
- git checkout -b branch-name origin/branch-name (本地和远程分支的名称一样最好)
- git branch --set-upstream branch-name origin/branch-name(建立本地分支和远程分支的关联)
16、标签管理
- git tag <name>(新建标签,默认为HEAD,也可以指定一个commit
- id(通过git log --graph --pretty=oneline --abbrev-commit找))
- git tag -a <tagname> -m"balabala"(指定标签信息)
- git tag -s <tagname> -m "balabala"(用PGP签名标签)
- git tag( 查看所有标签)
- git show <tagname>(查看标签信息)
- git push origin <tagname>(推送一个本地标签)
- git push origin --tags(推送全部未推送过的本地标签)
- git tag -d <tagname>(可以删除一个本地标签)
- git push origin :refs/tags/<tagname>(删除远程标签(已推送到远程的要先删除本地再删除远程))
17、GITHUB
clipboard6.pnggit clone git@github.com:Viaphlyn/bootstrap.git
clipboard7.png18、自定义git
让git适当显示颜色
- git config --global color.ui true
19、忽略特殊文件
clipboard8.png clipboard9.png20、配置别名
clipboard10.png
- git config --global alias. y your
网友评论