第一次接触git,新建git库,添加文件,提交文件,clone远程文件,提交更新代码文件到远程库,一切感觉都很新鲜,现在只是了解了一些皮毛,感觉还有很多东西不是很理解。一开始都是乱弄,弄了几次然后才开始理一下,但是整理过程又发现很多不懂,果然学无止境。
一、在GitHub上创建账户,然后新建一个git库,新建abc文件夹和config.xml文件。最后在本地克隆下来。打包文件移到www目录,解压。www目录建git库,实现连接远程库,并上传更新代码到远程库。
1、GitHub.com网站上新建库,只遇到一个问题。就是不懂如何建文件夹。
注册后选择新建库,进入如下图新建文件,然后获取clone路径。
GitHub上新建库,注意要新建文件夹直接在文件夹后面加“/”即可。如下图。
2、Linux克隆远程git库代码,打包压缩。
git clone https://github.com/yiyiwoju/test3.git //从GitHub clone代码下来。
tar -czvf istester.tar.gz a b c config.xml //打包几个文件为istester
tar -czvf istester.tar.gz -C /usr/local/app/www //解压到www
3、www目录建立版本库,添加文件,提交文件
git init //在www目录下执行此命令,初始化www目录为git可以管理的仓库
git add . //把当前目录下文件信息添加到索引库
git commit -m”add a b cdirectory” //确认提交暂存区内容到本地库,并备注修改内容。加-a?
git log //查看历史记录,包括版本号,修改者,修改日期,你-m标注的修改内容。
4、配置用户名和邮箱,实现本地和远程库的关联,更新代码到远程库
git config --global user.name "yiyiwoju" //配置用户名
git config --global user.email "3792*[email protected]" //配置邮箱
ssh -keygen -t rsa -C"3792*[email protected]" //生成公钥在~/.ssh/目录
cat ~/.ssh/id_rsa.pub
复制密钥到github,见下图:
ssh -T [email protected] //测试是否连上,已连上有提示successful
git remote -v //获取远程更新
git pull origin master //取得远程主机更新,再与本地分支master合并
git push origin master // 推送本地master分支的更新到远程origin主机的origin。
此处会有几个报错见后面。
5、更新文件代码,推送到远程库.以及一些常用的查看信息命令
vi usr/local/app/www/a/ahhh.txt
git status
git add a
git commit -m"second"
git push origin master
git status //查看状态ahhh.txt已经修改但是没有上传确认
git diff //查看更改了什么
git log //查看更改历史记录
git log --pretty=oneline //单行显示输出信息
git reflog //记录了每一次命令前面的数字是commit id。
git reset --hard commit id //输入对应版本号即可退回对应版本
git reset --hart HEAR^ //退回上一个版本的命令
git reset --hart HEAR^100 //退回前100个版本
报错1、获取或推送更新报错,拒绝合并无关项目,也无法更新代码到远程
百度解决方法:
git pull origin master --allow-unrelated-histories //允许合并不关联的项目
2、执行上面之后还是报错Automatic merge failed即合并失败,需要解决冲突,然后重新提交
网上搜索解决方法,如上图git status查看,原来是config.xml远程分支合并出错,保留一个
(1)保留远程文件,丢弃本地文件:git reset --hard origin/master
(2)不丢弃本地文件,只能修改删掉冲突部分,然后重新提交:
$:git add config.xml
$:git commit -m"message"
显示ok了。
二、本地新建git库。然后添加文件夹和文件到库里面,提交文件,最后打包移到APP/www目录解压。
mkdir -p ./test/{a,b,c} //新建一个test文件夹,test文件夹下面新建a,b,c上文件
cd test
git innit
git add .
git commit -m”add a b cdirectory”
git log
cd /usr/local/APP/bak
git clone --bare /home/test //克隆/home/test的裸版本库,只包含版本库内容
tar -czvf istester.tar.gz a b c config.xml
mv istester.tar.gz ../www
cd ../www
tar -xzvf istester.tar.gz
三、总结
经过做练习过程了解了下git的一些基本命令,还有发现问题是寻找解决方案时,查看各路前辈们对于问题的分析,好像对于分析问题有了一定的提升,有时候自己也尝试从log分析查找问题,这是个不错的开端,O(∩_∩)O哈哈~
对于git fetch和git pull区别,粗略看了下,感觉还得有空慢慢消化。
还有尝试了下创建中心库也很好玩,可以把之前的库删了, 直接从中心库克隆出来。
感觉git的基础知识还是有点欠缺。在github上新建文件夹时,一开始弄成了新建分支,然后克隆库之后发现没有abc文件,后来再去查才知道了怎么建文件夹。对应一个库可以存在多个代码,分支,项目,这些名词和它们之间关系还是不够了解。还有对于本地库,远程库,中心库,各种库的上传克隆,还有好多小细节很多东西不是很明白。
还有虽然做了好几次练习,但是有一些命令还是不够熟悉,总之越学越觉得很多不懂。但是这个至少说明你在学习的路上,而不是静止不动,感觉很好。