赞
踩
git 与svn 都是为了对代码版本进行控制,git中存在一条主线,也就是第一次上传的代码会作为主线代码,一般来说,通过在主线上开辟新的分支进行开发后会将分支的代码合入master,保障一条主线版本会持续集成和升级,当然也可以在自己开出的新的分支上再开辟新的分支,合并时,合入原有分支,在分支上形成另一条线,不断集成和升级,一个好处就是可以保证在有一条主线的情况下,可以出现多个分支版本,而衍生的分支版本可以将自己的特色内容合入主线,而主线也可以合到新的分支版本上,保证了多个不同版本齐头并进,同时提供多条代码线选择。从一条可以向下发散很多,同时也可以将发散的合入起源主线,总的来和计算机中的树的概念是很吻合的。但git的树更加自由灵活。
直接去官网下载对应环境(Windows, linux, OSX)的git。
建一个新的文件夹,在文件夹内右键打开git bash命令行(安装时选项一定要勾选上,或者使用名命令行)
git init
会在文件夹内生成 .git 文件,存储git相关的信息。
这样就生成了新的git仓库
创建一个本地仓库克隆版本
git clone /path/repository(本地仓库路径)
检出远端服务器上的仓库
git clone username@host:/path/repository
本地仓库由git维护的三棵树组成:
第一个是自己本地的仓库地址,本地实际文件所在地。
第二个是暂存区(Index),类似于缓存区,临时保存改动。
第三个是HEAD,指向你的最后一次提交。
添加到暂存区 ,这是基本流程的第一步
git add <filename>
git add *
实际提交到本地仓库使用
git commit -m "提交时的附带信息"
当改动提交到本地仓库之后,本地改动会在本地仓库的HEAD中, 提交到远端仓库如下
git push origin master
master为最初的主线版本,其他的分支可以从这个上面衍生出来,修改后最终通过merge(合并) 添加到master
如果想要提交到其他分支上,则修改master为其他分支的名字即可
本地没有克隆现有仓库时,想要将仓库链接某个远程服务器使用
origin(起源)
git remote add origin <server>
然后开始上面的操作
分支,将不同的开发内容隔离开来,起到开发绝缘的作用。
说白了就是多个人都从master上创建一个新的分支,这些分支最初都和master是完全一致的,除了分支名不一致,然后每个人在自己的检出(check out)的分支上开发自己的内容,最终将所有人开发的内容合并到master上,master最终会具有所有分支上的新代码。
分支的改变实际上就是对当前指针的改变,通过改变指针的指向达到快速切换的效果。
但随着代码和人数的增加,会难以避免代码冲突,这个时候在合并代码时就需要先行解决代码冲突,最后再合入master。
而这个时候,开发的管理和任务分配,也就是前期规划就比较重要了,做的好可以减少冲突的发生。扯远了,回来。
创建分支 newbranch1 ,并切换过去
git checkout -b newbranch1
切换到主分支
git checkout master
删除新建分支
git branch -d newbranch1
只有将你的分支推送到远端时别人才能看到该分支,否则看不到
推送你的分支到远端
git push origin 分支名
要更新的你的代码到最新(首先确认你的origin 当前的远端分支是哪一个,别更新错了)
使用
git pull
获取(fetch)并合并(merge)远端改动,合并其他远端分支到你当前分支使用:
git merge <branch>
合并时可能出现冲突(conflicts),没办法只能先手动修改再合并冲突的。
改完后执行如下命令标记为合并成功
git add <filename>
合并改动之前,预览差异可以使用
git diff <源分支> <目标分支>
确定一个版本后创建标签,来管理软件
创建一个1.0.0 的标签
git tag 1.0.0 2obkj3k34n;
2obkj3k34n为想要标记的提交Id前10位,获取提交id使用
git log
只用前几位也可以,只要唯一即可
操作失误,替换掉本地文件使用
这个命令会使用HEAD中最新一次的内容替换你工作目录中的文件,已添加到Index暂存区的,以及新文件不受影响。
git checkout -- <filename>
想放弃本地所有改动和提交,可以到服务器上获取最新版本,并修改本地分支指向它使用
git fetch origin
git reset --hard origin/master
master为分支
图形化git
gitk
彩色git输出
git config color.ui true
显示历史记录时每行只显示一个提交信息
git config format.pretty oneline
交互式添加文件到缓存区
git add -i
GItX
Tower
Source Tree
GitHub for mac
GitBox
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。