Git的学习之道

关于版本控制

(vcs,记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统)
--本地版本控制系统(rcs)
--集中化的版本控制系统(cvcs)
--分布式版本控制系统(dvcs)

Git特性

--直接记录快照,而非差异比较
--近乎所有操作都是本地执行
--时刻保持数据完整性
--多数操作仅添加数据

文件的三种状态

--已提交(committed)
--已修改(modified)
--已暂存(staged))

基本的 Git 工作流程如下:


  >> step1 在工作目录中修改某些文件。
  >> step2 对修改后的文件进行快照,然后保存到暂存区域。
  >> step3 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

git常用指令


 >> git configure [ARGUMENT]        //修改配置参数
 >> git clone [url]                 //复制文件仓库到本地目录
 >> git add [FILENAME]              //添加文件内容到工作树索引
 >> git status                      //查看工作树的状态
 >> git diff                        //查看尚未暂存的文件更新了哪些部分
 >> git rm [FILENAME]               //从工作树索引中移除文件
 >> git commit                      //提交,也可以-m 参数后跟提交说明的方式,跟--amend表示重新提交
 >> git mv ->git rm && git add         //git改名操作相当于git删除一次然后添加一次
 >> git log                             //默认不用任何参数的话,会按提交时间列出所有的更新,最近的更新排在最上面
 >> git log --pretty=format:"%h - %an, %ar : %s"     //添加参数之后会有更好的观察效果
 >> git reset HEAD [FILENAME]      //取消暂存文件
 >> git checkout --[FILENAME]      //取消对于文件的修改
 >> git stash                      //当我们未做完一件事不能commit但是要切换到另外一个工作分支的时候,可以使用

gitignore文件

--git clone下来的文件内,手动创建.gitignore文件


  # 此为注释 – 将被 Git 忽略
  # 忽略所有 .a 结尾的文件
  *.a
  # 但 lib.a 除外
  !lib.a
  # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
  /TODO
  # 忽略 build/ 目录下的所有文件
  build/
  # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
  doc/*.txt
  # ignore all .txt files in the doc/ directory
  doc/**/*.txt

Git远程仓库使用

--查看当前的远程库


>> git remote     //显示远程库名
>> git remote -v     //显示远程库对应的clone地址>

-- 添加远程仓库


>> git remote add [name] [url]     //指定新的远程库,并且起名

--从远程仓库抓取数据


>> git fetch [name]     //抓取本地仓库没有,[name]远程仓库有的信息(需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支)
>> git pull [name]     //目的是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。

--推送数据到远程仓库


>> git push [remote-name] [branch-name]     //将本地仓库中的数据推送到远程仓库

--远程仓库的删除和重命名


>> git remote rename [old-name] [new-name]
>> git remote rm [name]

打标签

--列显已有的标签


>> git tag     //列显已有的标签
>> git tag -l [type]     //列显感兴趣的标签

--新建标签
类型:轻量级的(lightweight)和含附注的(annotated)


>> git tag -a [name] -m [information]     //含附注的标签
>> git tag [name]     //轻量级标签
>> git show [versionNo]     //查看相应版本的标签信息

--后期加注标签


>> git tag -a [versionNo] [checksum]     //后期加标签

--分享标签


>> git push origin [tagname]      //显示推送标签
>> git push origin --tags       //推送所有的本地标签

技巧与窍门

--Git 命令别名


>> git config --global alias.[new-name] [old-name]

Git分支

--分支的新建与切换


>> git checkout -b [new-branch] => git branch [new-branch] && git checkout [new-branch]

--分支的合并


>> git checkout master
>> git merge [branch-name]

--分支的删除


>> git branch -d [branch-name]

--列举所有的分支


>> git branch 
参数可选
>> -v     //查看各个分支最后一个提交对象的信息
>> --merged     //列出你已经(或尚未)与当前分支合并的分支
>>  --no-merged     //查看尚未合并的工分支

--利用分支进行开发的工作流程
master 稳定的老旧分支,也称长期分支
develop 开发或测试分支
topic 是指一个短期的,用来实现单一特性或与其相关工作的分支,也称特性分支

远程分支

--远程分支


>> git clone [url]
>> git fetch origin
>> git remote add [package-name] [url]
>> git fetch [package-name]

-- 推送本地分支


>> git push [remote-package] [branch-name]

--跟踪远程分支


>> 从远程分支checkout出来的本地分支,称其为跟踪分支,跟踪分支是一种和远程分支有直接关联的本地分支

-- 删除远程分支


>> git push origin :[branch-name]

--分支的衍合
假设两个分支master和experiment,现在要衍合experiment,就是把experiment里的变化在master中更新一遍,然后合并


>> git checkout experiment     //切换experiment分支
>> git rebase master     //在master中更新变化
>> git rebase master experiment     //等同于上面的两条命令
>> git checkout master     // 切换master分支
>> git merge experiment     //合并experiment
>> git branch -d experiment     //删除experiment分支
三条链a b c衍合a c
>> git rebase --onto a b c

注意:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

服务器上的Git

未完待续

参考文献:

<Git中文文献>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值