<git教程>学习笔记


git教程网站:廖雪峰的官方网站,git教程;

1.git 软件安装
略。
补充:如果要访问远程仓库,则需要产生ssh key,然后将public id_rsa上传到github。
产生sshkey的命令:ssh-keygen -t rsa -C "xxx@xxx.com",然后连续三次回车(相当于设置密码全部是空),一般在c:/user/.ssh目录下得到两个文件,一个是id_rsa,另一个是id_rsa.pub,将id_rsa.pub中的内容添加到github中即可,添加后在本地git客户端“ssh git@github.com”,如果正确添加了,就会提示"hi....! you've successufll....."。


2.创建本地仓库(repository)
仓库的含义就是一个文件目录,这个目录内的所有文件都可以被git管理起来,每个文件的修改、删除,git都能跟踪以及还原。
cd prj_xxx
git init
就可以在prj_xxx目录下创建一个本地仓库,并且会多出一个.git的隐藏目录,这个目录是git用来跟踪管理仓库的,千万不要手动修改这个目录里面的文件,否则git仓库会被破坏。
然后一个“readme.txt”为例,介绍下提交过程
git add readme.txt
git commit -m "wrote a readme file"
为什么git添加文件需要add和commit两部呢?因为commit可以一次提交很多文件,所以可以多次add不同的文件----个人觉得应该是多一个步骤,让攻城狮可以多一步思考,或者多一次回退的机会。


3.版本回退
第2步已经学会怎么创建本地仓库,以及怎么讲修改的文件提交到git仓库,下面假设我们总共提交过3次到仓库,三次提交的commit分别为“wrote a readme file”,'add distributed",“append GPL”。
查看每次修改的log命令如下:
git log ----查看从最近到最远的提交日志
git log --oneline
git log --pretty=oneline ----简化显示log信息
git log --pretty=format:"%h %an %cd %s" ----%h:hash值,%H:完整hash值, %an:提交者名字, %cd:提交日期,%s:提交说明
git log dev..master ----master比dev多提交的内容
git log dev...master ----单纯显示不一样的地方


如果要回退版本,则可用如下命令
git reset --hard HEAD^  ----回退到前一个版本
git reset --hard xxxxx ----回退到id值是xxxxx的版本
在本地仓库使用中,如果回退了版本,但是又忘记了最新的commit id的话,可以用
git reflog ----查看本地所有的 commit id
HEAD用来指向当前版本。


4.工作区和暂存区
工作区 :指的是git目录;
版本库 :工作区又一个隐藏目录.git,这个不算工作区,而是git的仓库,仓库存放了很多东西,包括暂存区(stage 区),各个分支(dev,master.....)



可以简单理解为,需要提交的文件先放到stage暂存区,然后一次性提交。


或者还有一种理解方式
git init
|
|
工作区新增文件或者修改以前已经提交过的文件----untracked file,还未被git管理起来,如果是还没有提交到stage暂存区的文件,修改后,git会提示changes not staged for commit,这个时候,如果发现工作区文件修改有问题,要回退,则可以用git checkout -- file来丢弃工作区的修改
|
|
git add .txt ---- changes to be commit,提交到了stage暂存区,等待被提交,如果要回退到untracked file,可以用git reset HEAD .txt(会将暂存区的修改撤销掉,重新放回工作区),如果stage暂存区在commit之前又做了修改,但是又想丢弃这些修改,那么可以用git checkout -- .txt(--很重要,要不然就成切换到另一个分支的命令了),相当于撤销暂存区里的修改,徽推到git add添加到暂存区后的状态;
|
|
git commit -m "xxx" .txt ----commited, 提交修改,



5. 删除文件
git rm .txt
git commit -m "remove .txt"
如果删错了,那么其实仓库中还有,则可以用git checkout -- .txt来将误删的文件恢复到最新版本。


6. 远程仓库

一般用远程仓库的方式是首先在远程创建一个仓库,然后本地clone下来,再进行开发;

git clone git@github.com:xxxxx/xxxx.git

并且注意到,github给出的地址不止一个,还可以用git clone https://github.com/xxxxxx/xxxx.git,这是因为git支持多种协议,默认的git@是ssh协议,但是也支持https协议。

https协议除了速度慢之外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能使用https。



7. 分支管理

当准备开发一个新功能,但是由于代码还没写完或者没有完整测试,那么就不能提交到主分支,否则别人clone下来没法干活,这个时候就可以自建一个分支,在这个分支上从事新功能的工作,开发结束后再提交到主分支。


7.1 分支创建和合并

创建dev分支,然后切换到dev分支

git checkout -b dev   //相当于git branch dev + git checkout dev


然后查看分支

git branch

git branch -al


然后在dev分支下修改readme.txt,然后提交修改

git add readme.txt

git commit -m "branch test"


现在dev分支工作已经完成,就可以切回到master分支

git checkout master


切回到master分支后,会发现readme没有dev分支修改的内容,这个时候就可以把dev分支的工作合并到master分支

git merge dev

git merge用于合并指定分支到当前分支。


合并后就可以删除dev分支了

git branch -d dev


7.2 解决分支合并时的冲突

分支merge时,很容易碰到有冲突的情况。

假设我们有分支dev1,修改readme文件第一行为dev1,然后add,commit;

master分支,原本readme文件第一行为空,将最后一行修改为master,然后add ,commit;

现在master和dev1分支都有各自的提交,这个时候如果在master分支时,使用git merge dev1,就会有冲突,这个时候用git status就可以查看冲突的文件是readme文件;

这个时候就需要我们手动修改readme文件,然后再提交。

图形化查看分支变化情况的命令

git log --graph --oneline











   
   




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值