本文为本人阅读廖雪峰教程的总结和笔记,教程见 廖雪峰Git教程
Git是分布式的版本管理系统,和其他集中式的版本管理系统相比,如SVN,最大的优点是本地管理、多人同时开工,
Git与SVN的主要差别:
sudo apt-get install git
操作解释说明:
用实际操作说明他们的关系:在工作区我们编辑readme.txt文件并保存,通过git add readme.txt
添加到缓存区,再通过git commit -m"xxx"
将缓存区所有东西提交到版本库,就成了一个明确的版本了。
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
创建本地仓库:
$ ssh-keygen -t rsa -C"[email protected]"
(win下直接在gitBash中操作,若在Ubuntu中,打开shell)。可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人.创建远程仓库:
git remote add origin [email protected]:lq-jarhead/learngit.git
完成添加。克隆仓库:
git clone https://github.com/lq-jarhead/learngit
就是将仓库复制到此处涉及到分支的创建、合并和删除,还有解决冲突。比如,我们在同一个readme.txt文件编辑了,最后两个分支和master合并,就会产生冲突,需要人工解决了。不用纠结太多,分支管理更多用在不同模块更改吧。
git checkout -b xxx
#创建并切换到xxx分支 git checkout xxx
#就是切换到xxx分支git add readme.txt
git commit -m"lengqian"
git checkout master
#切换到mastergit merge --no-ff -m"merge" xxx
#将dev分支和当面master合并,no fastforward和-m”共存”,为了后期查看具体merge信息。git branch -d xxx
#删除xxx分支 git branch -D xxx#确认删除(强行删除)注意:目前是在master分支,我们创建一个分支test,在其中更改并保存readme.txt,再提交给版本库。返回到master分支,在其中更改并保存readme.txt,再提交给版本库。这时候,二者就有冲突的地方了,我们用合并命令就知道冲突在那里,手动消除冲突后。直接提交给版本库即可。(这里不是再次合并,应为第一次已经合并了,尽管有冲突,我们手动消除后就没有了冲突,直接提交即可!)
git stash
#将leng分区临时保存起来git checkout master
#切换到master分区git checkout -b bug
#创建bug分区,用来修改git checkout leng
#切换到leng分区git stash list
#可以看到我们的保存的文件git stash pop
#切换为最近一次临时保存的界面,并删除stashgit stash apply stash@{1}
#用来恢复那个版本,git remote -v
查看远程仓库的信息。git clone ...
拷贝至本地,用git branch可以看出只有master分区git checkout -b dev
创建自己本地的开发分区,并用git push origin dev
推送至仓库,也是同伴的开发分区基础git pull origin dev
#即可将dev分区复制到本地git push origin dev
将本地的dev分区push到远程仓库(这个推送之后,也就是合并到远端的dev中去了)作者小总结:
注意:多人协作的情况比较复杂,问题关键在于远端仓库、本人和他,这三个不同的仓库临时保存了不同的更改和文件。本人、他,这两方要分主次,有个为主要的,决定了最终master主分区的操作。9/25/2017 3:44:33 PM
创建tag标签,标签有点类似HEAD,目的是为了用自己语言去给某个commit操作贴上标签,方便以后查看。有以下几种方法:
git checkout dev
紧接着git tag v1.0
就可以了 git show v1.0
就可以查看git log
找到合适的commit id,git tag v0.9 34mlj
即可git tag -a v1.2 -m"this is v1.2"
-a指标签, - m指说明git tag
#查看所有标签,git show vxx
查看xvv标签标签操作
作者小总结:
注意:tag是全局的,各个分支的tag互相是可以看到的。
在版本管理时候,有些文件仅仅自己本地使用,不能提交到GitHub,例如邮箱授权码、密码等,这个时候就要借助git特有的.gitignore文件来忽略。”.gitignore.”用来创建文件,避开“”
方法:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
忽略原则:
注意:
1.在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
# 此为注释 – 将被 Git 忽略
*.cs # 忽略所有 .cs 结尾的文件
!ABC.cs# 但 ABC.cs 除外
/BLL # 仅仅忽略项目根目录下的 BLL 文件,不包括 subdir/BLL
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
gitigonre自动生成网址
gitignore_config_fom_github
简而言之,就是自定义快捷键,节省时间.
git config --alias.co checkout
git config --alias.ci commit
git config --alias.br branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
#神器
三天时间看完教程,git的作用就是一个版本的分布式管理,其目的是为了多人更好的协同工作和版本管理。教程也只是简单的介绍了基本的操作,在工作中常用的命令。在工作中,多操作,会用就行。
9/26/2017 4:15:33 PM