git学习笔记

这篇博客详细介绍了Git的使用,包括基本操作、版本切换、远程服务配置、分支管理和多人协作。从创建SSH Key到远程仓库的克隆、推送,再到分支的创建、合并与冲突解决,以及标签的使用,提供了全面的学习路径。此外,还提到了忽略文件、配置别名以及Git的配置文件位置。
摘要由CSDN通过智能技术生成

之前用的SVN,VSS很习惯,这两天学习了git的使用,基本操作和思路上都差不多,git的本地库强大很多。

学习资料使用的是廖雪峰的wiki网站~

这里留下网址,讲的很明白http://www.liaoxuefeng.com/


常用命令:查看两个版本间的差异 git diff commit号1(前7位) commit号2(前7位) --stat


Git是干啥的,Git是分布式版本控制系统,git的强大,谁用谁知道。Windows下的开发的话很可能在用SVN,VSS等,但git是版本控制的归宿。

安装命令:sudo apt-get install git

安装的最后一步就是给自己所在的机器订一个git的标签:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"


建立git库

git init     //建立出来的配置文件等都放在了./git这个文件夹下。


基本操作

1.添加文件

git add readme.txt

git commit -m "这里是提交的说明,本次提交所做的操作" //提交修改,只有提交修改后,添加的文件才真正的进入git的管理。

一次commit可以对应多个add操作。

2.修改文件

修改已有文件的操作和添加文件是一样的。

git add + git commit

查看git的状态命令:

git status 和 git diff

3.删除文件

git rm test.txt

git commit -m "remove test.txt"

4.版本切换

git log  //先用git log查看所有版本。

HEAD表示当前版本,HEAD^表示上个版本HEAD^^表示上上版本。

git reset --hard HEAD^ //表示回退到上个版本。

git reflog  //如果再想回退回来,用reflog查找命令记录,找到对应的想回退版本的git的commit号,使用git reset --hard commit_id(这个commit_id只输入前几位就行)。

5.管理修改

修改文件后先add一次,add之后对这个文件的修改需要再次add,之后再commit,Commit前的add会覆盖之前的所有add,也就是管理修改了。

6.撤销修改

git checkout --file   //这里有两个-,意思是说把file这个文件回退到上次add或者commit的操作时,丢弃所有之后的操作。

如果之前已经add过了的话,就无法用checkout撤销修改了,需要用git reset HEAD file把文件从暂存区回退到本地,然后执行上面的git checkout - - file就可以了。


远程服务

上述内容是git的基本操作,下面讲如何使用远程服务。

为了使用github仓库,需要先有个帐号。

第1步:创建SSH Key

ssh-keygen -t rsa -C "XXX@example.com" 这里使用你的邮箱。

一路回车后,会在主目录下生成.ssh目录,生成id_rsa和id_rsa.pub两个文件。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面。

点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

点击add key,到这里就成功的在github上签到留名了。


下面把本地的git仓库同步到远程的github上,这样别人和自己都能访问修改

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

git remote add origin git@github.com:XXX/learngit.git   这里的XXX就是你的git帐号名。

下一步,就可以把本地库的所有内容推送到远程库上:

git push -u origin master

第一次推送master分支时,加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

之后的同步使用git push origin master就可以了。

这种先有本地的方式算是逆序,下面讲正常的顺序,库上先有内容,如何在本地克隆。


假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

首先,登陆GitHub,创建一个新的仓库,名字叫gitskills。

我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件。

现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

 git clone git@github.com:XXX/gitskills.git

如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。


分支管理

分支管理的目的在于,在开发过程中不影响上一版本代码的中间代码提交。

创建分支:git checkout -b dev

git checkout -b dev这条语句包含了两层意思。

1,git branch dev,建立分支。

2,git checkout dev,切换分支。

查看分支

git branch  //git branch命令会列出所有分支,当前分支前面会标一个*号。

在分支上操作,修改文件,add,commit之后,回到master分支上看,文件的修改并没有影响到master主分支。

现在把dev分支的修改merge到主分支上。

git merge dev  ->git merge命令用于合并指定分支到当前分支。

合并完成后,如果想的话,删除dev分支。

git branch -d dev

有分支就会有冲突,冲突的识别的方法就是,在执行merge的时候系统会在冲突文件中用<<<<<<<,=======,>>>>>>>标记出不同分支的冲突部分。

手动修改冲突后add,commit即可合并这两个冲突分支。

如果两个分支没有冲突,也可以用git merge --no-ff -m "merge with no-ff" dev来合并分支,这样历史记录里会记录有分支合并。

在实际开发中,master一般仅仅发版本用,平时不会在上面操作,而是在dev上操作,各个协作者应该都有属于自己的分支,然后都合并到dev上,发版本前再merge到master上即可。


存档当前分支

在项目中有时候工作进行到一半,就需要对应紧急bug,这时候需要把当前正在进行的工作封存一下。

git stash  //可以把当前工作现场“储藏”起来。

之后就可以去别的分支工作,提交bug什么的,当紧急工作对应完毕,就可以切回来继续工作了。

切回git checkout dev后

git stash list  //查看冰封的现场。

恢复现场有两种方法:

1.git stash apply  这个方法只恢复进度,但在stash里还保存着进度,删除进度信息需要用git stash drop。

2.git stash pop 这个不仅恢复了进度,同时也顺便把stash里的进度信息一并删除掉。

如果想强行丢弃一个还没有merge的分支,使用:

git branch -D <name>


查看远程库

git remote -v

git branch -a //查看所有的远程分支

git branch -vv//查看本地和远程分支的链接关系

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。

git push origin master

git push origin dev

多人协作时,大家都会往master和dev分支上推送各自的修改,其他协作者创建dev分支时使用命令:

git checkout -b dev origin/dev.

git branch --set-upstream dev origin/dev 指定本地dev分支与远程origin/dev分支的链接。

git pull  //把最新的代码从远程库拉取下来。

如果本地的分支同pull下来的有冲突,则需要在本地手动解决后再add commit push。

删除远程分支

git push origin --delete aaaaa

aaaaa为不想要的分支名称

把本地的库push到远程的库中:

$ git push origin test:master         // 提交本地test分支作为远程的master分支

$ git push origin test:test              // 提交本地test分支作为远程的test分支


标签的使用

虽然git的每次提交都有git号,但是一堆奇形怪状的数字字母组合没法满足人类的审美及体验。

git tag v1.0  ->默认的是在当前分支的最新提交的commit上打tag。

git tag v0.9 24313(commit号)这个是给之前的commit打tag用的。

git tag  //查看tag。

git show v0.9 //查看标签对应的commit信息。

git tag -a v0.1 -m "version 0.1 released" 2455521 //还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字。

git tag -s v0.2 -m "signed version 0.2 released" fec145a //还可以通过-s用私钥签名一个标签,签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错。

git tag -d v0.1  //标签的删除。

git push origin <tagname>//推送某个标签到远程。

git push origin - -tags//一次性推送全部尚未推送到远程的本地标签。

git tag -d v0.9//如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除。删除命令也是push,但是格式如下:

git push origin :refs/tags/v0.9


忽略特殊文件,假如工作路径下有些不想让git管理的文件,不推送,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

给Git配置好别名,就可以输入命令时偷个懒。

git config --global alias.st status   把status改成st。

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" 把查看log改的人性化。

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

配置文件放哪了?每个仓库的Git配置文件都放在.git/config文件中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值