1.创建版本库:
mkdir learngit 相当创建文件夹
pwd 用于显示当前目录
git init 可以将刚建立的文件夹变为Git可以管理的仓库
git add git_note.txt 在仓库中添加文件
git commit -m 提交到仓库 反馈的信息中有改变的文件及行数
-m 后为提交的说明
-a 表示提交所有修改(即使你的修改没有git add也会被提交)
2.对于git的版本的提交和操作
git status 掌握仓库当前的状态 eg:你的文件被改变了,但还未经过提交时
git diff 查看具体改变了什么内容
git log 可以显示提交日志 –pretty=oneline 可以简化日志
git reset 可以根据参数的不同返回不同的版本 –hard HEAD 中HEAD指向当前版本,HEAD^表示上一个版本,
HEAD^^表示上上一个版本,HEAD~100表示前100个版本,而日志中的commit id 可以帮你回退到任意版本
git reflog 再次打开命令行之后,显示的历史日志记录
3.git链接远端仓库
ssh-keygen -t rsa -C “email” 得到你在远端的公钥
cat ~/.ssh/id_rsa.pub 在命令行上查看,并将得到的公钥复制到你的码云上
git remote add origin git@gitee.com:dorui/git_learning.git 关联远程库
这里的git@gitee.com:dorui/git_learning.git是你项目的SSH(提前需要建好一个项目)
git push origin master 推送到码云,若出错 git push origin master -f
刷新码云就可以看到自己之前在git上写的和提交的东西了
之后你的commit就可以直接到远端仓库了
4.与修改息息相关的三个区以及对之前命令的再理解
当你在你的文件中,比如,我现在的gitnotes.txt写了一些东西,然后输入git status,git将会告诉你的gitnotes.txt有改变,此时,git diff你就会发现你改动的内容了,这些改变就在你的工作区;
确定改变之后 git add gitnotes.txt此时刚才的改变(即工作区的东西)将会存在一个暂存区,就好像淘宝里的购物车一样;
当你git commit后,你所做的改变就提交到本地版本库区了,这时你在码云上仍旧看不到自己commit的东西,需要 git push将此次更改的版本提交到远程版本库。
在搞不清楚自己所做的改变在哪个区的情况下,用git status;
想具体看做了哪些修改(提交前最好看看)git diff;
有关修改:
若你在工作区写错东西,输入git checkout – gitnotes.txt,此时会删除你工作区刚做了修改的所有东西;
若在暂存区写错东西,输入git reset – HEAD gitnotes.txt;然后git status发现暂存区清空了,工作区仍有修改,再git checkout – gitnotes.txt;
若你在版本库区了,只能git reset –hard HEAD^ ,回到上一版本了。
有关删除文件:
当你在git里做工程时,不小心rm a.txt删掉了你电脑中的文件,此时,工作区和版本库就不一致了,git status会直接告诉你,
若你想将文件还原回来,只需要git checkout – a.txt(是用版本库里的版本替换工作区的版本);
若想将版本库中的文件也删掉,git rm a.txt,然后git commit就可以了。
5.创建与合并分支
git branch dev 创建一个分支;不加分支名为查看所有分支
git checkout dev 切换到当前分支
git checkout -b dev 创建并切换到dev分支
//git branch 查看当前分支
//git checkout master 切换到主分支
git merge dev 合并分支到当前分支(比如当前子啊主分支,此时就是将dev分支合并到主分支了)
git branch -d dev 删除dev分支(删除已经被合并且无用的本地dev分支)
git log –graph –pretty=oneline –abbrev-commit命令可以看到分支合并图。
–graph 显示 ASCII 图形表示的分支合并历史。
–pretty=oneline 日志单行显示
–abbrev-commit commit id后面显示每次的提交说明
当你进行git merge时,若两个分支同时在同一个地方修改的合并时会产生分支冲突,这时候需要手动修改在提交,从提交日志可以清楚的看到分支的合并痕迹;若只有一个分支被修改的两个分支合并,会直接合并成功,并告诉你是一种快速合并模式,这种情况下,你在提交日志上是看不到分支合并痕迹的,若想看到之前的分支痕迹,需要加上–no-ff就是不同的合并模式了。
6.有关分支操作中的一些命令整理
1>远程分支就是本地分支push到服务器上的时候产生的。比如maste## 标题 ##r就是一个最典型的远程分支(默认)。
git push origin master
除了master之外,我们还可以随便创建分支,然后push到服务器上去。例如:
2>远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。
git checkout –track origin/develop
注意该命令由于带有–track参数,所以要求git1.6.4以上!
这样git会自动切换到develop分支。
3>同步本地远程分支:
git fetch origin
4>提交分支数据到远程服务器:
git push origin <本地分支名>:<远端分支名>
例如:
git push origin develop:develop
当然如果当前在develop分支下,也可以直接
git push
5>删除远程分支develop:
git push origin :develop
7.git fetch 与git pull的区别
git fetch:相y当于是从远程获取最新版本到本地,不会自动merge
git pull:相当于是从远程获取最新版本并merge到本地
若远端有分支,clone下来后直接git checkout 分支名,就可以在本地创建并切换到当前分支。