介绍:
git是一个分布式的版本管理工具,在我的理解里,git不存在主仓库,任何一个节点都可以当成主仓库
1、centos环境下yum安装git
yum -y install git
2、git 用户设置
git config -h //查看帮助
git config --list //查看git配置
git config --global user.name "Your Name Here" //设置全局git用户名
git config --global user.email "your_email@example.com" //设置全局git邮箱
3、创建仓库
git init --bare testRepo.git
注意:bare参数表示主仓库没有工作空间(也就是你上传到仓库的文件是在目录中看不到的)
4、克隆仓库
git clone ssh://root@10.12.13.14/usr/local/gitroot/testRepo.git
5、提交“readme”到主仓库目录
a> echo "this is first file" >> readme
b> git add readme
c> git commit -m "this is first commit" readme
d>git push origin master
6、git解决冲突
vim readme //编辑冲突文件,编辑完成保存
git status //查看一下文件状态
git add readme//增加readme 标记冲突文件为不冲突
git commit -m "resolve conflict "
7、git remote
介绍:remote是一个非常好的功能,因为git是一个分布式的版本管理工具。所以的仓库都是独立的,如果想把两个仓库之间进行关联就必须使用remote,例如:a和b同时克隆宿主仓库,a修改的coding需要供b使用,但是a修改的coding如果提交到主仓库又有一定的风险,这时b就可以直接remote到a的仓库中pull出a的coding在bending使用,而跳过了主仓库。
应用:(注意:remote只是做连接的作用,连接的仓库必须实际存在才能使用)
git remote add test13 ssh://root@10.12.13.13/usr/local/gitroot/testRepo //建立remote连接
git remote -v //查看远程连接信息
git push test13 master //push代码到test13主分支上
git pull test13 master //从test13上pull代码
8、git branch
介绍:创建分支
应用:
git branch brn1.0 //创建本地分支brn1.0
git branch -v //查看分支
git push origin brn1.0 //上传分支到远程仓库中
git checkout --track refs/heads/brn1.0 //切换分支
git pull //下载远程分支
git ls-remote //查看远程仓库分支
git push origin --delete brn1.0 //删除远程分支
9、git merge
介绍:合并分支
应用:
git merge brn1.0 //合并brn1.0 到当前分支上
git push //把合并结果上传到主仓库中
10、git rebase
介绍:rebase意思是为重新定义起点,例如:
应用:
git checkout brn1.0 //切换到brn1.0分支上
git rebase master brn1.0 //分支移动到主干的最后的起点
git push //上传
11、git reset
git reset --hard HEAD~3 //会将最新的3次提交全部重置,就像没有提交过一样
12、git stash
介绍:使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。
在这里顺便提下git format在这里顺便提下git format-patch -n , n是具体某个数字, 例如 'git format-patch -1' 这时便会根据log生成一个对应的补丁,如果 'git format-patch -2' 那么便会生成2个补丁,当然前提是你的log上有至少有两个记录。
应用:
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
git stash apply stash@{0} //应用回当前的工作空间