Git学习笔记

1.添加文件
  • git add xxx 可将某一文件提交到暂存区
  • git add xxx . 监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件
  • git add xxx -u 仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)
  • git add xxx -A上面两个功能的合集
  • 交互模式 git add -i 可进入交互模式 在交互模式下 patch可以查看当前内容与版本库中的内容差异,从而决定是否添加到暂存区 y表示接受修改 n表示忽略修改 a或者d分别表示添加或放弃剩余的修改 表示所有选项的帮助信息 可使用 git add -p直接进入补丁模式
2.提交文件
2.1三种提交的方法
  • 先对要提交的文件或修改调用git add 进行提交到暂存区,然后使用git commit -m "xxx" 完成提交

  • git commit -m "xxx" -a 工作目录树中当前的所有修改提交到版本库中

  • git commit -m "xxx" xx提交某一个指定的文件

2.2 查看当前状态
  • 可使用 git status查看目录工作书中的所有变动 该命令的输出结果是暂存区内要提交的内容、工作目录树中未纳入暂存区的改动 以及尚未纳入版本控制的新文件
2.3 查看文件改动 git diff
  • 不添加任何参数的git diff 比较的是工作目录树与暂存区之间的区别
  • git diff —cached比较暂存区与版本库中的区别
  • git diff HEAD 可以比较工作目录树(包括暂存和未暂存的修改)与版本库中的差别
3.分支
3.1创建分支
  • 使用git branch xxx进行创建分支 当出现以下情况时,可进行创建分支 如 实验性更改、增加新的功能、BUG修复等等,可在新分支进行修改,然后将其合并到主分支
3.2切换分支
  • git checkout xxx 或者使用 git checkout -b xxx创建分支并切换至新的分支
3.3合并分支
  • 直接合并 把一条分支的全部历史提交合并到另一条分支上 例如将dev合并到master分支,使用git checkout master 切换到master分支,然后使用用git merge dev将其合并到master分支
  • 压合合并 压合指的是git将一条分支上的所有历史提交压合成一个提交,提交到另一个分支上,当想开发一些实验性的新功能或者修复BUG时,这种合并就很有用,因为此时所需要的并不是长期记录和跟踪每个实验性的提交,只是最后的成果。同样需要将dev合并至master分支,使用git checkout master切换至master分支,然后使用git merge --squash dev,此时dev分支上的所有提交已经合并到工作区暂存,然后像其他正常提交一样,将这些改动提交到版本库中
  • 拣选合并 分之间只需要合并一个提交时,使用 git cherry-pick 版本号达到只合并一个提交的操作
4.冲突
  • 如果在两个条分支编辑同一个文件,做不同的修改,然后合并这两条分支,将会导致冲突
  • 处理冲突 对于简单的合并,使用手动编辑并解决冲突,接着保存修改后提交;若对于复杂的合并,使用可视化工具进行合并 如 FileMerge
5.版本
5.1历史记录
  • 使用git log查看版本库中历史记录,不带参数的的此命令中,每个提交有四部分信息:提交名称、提交人、提交日期、提交留言

  • 使用git log -p可以查看版本间的代码差异

  • 查询历史记录

    • git log --since="5 hours"查询最近五小时的提交,同理可使用的查询范围有 before,时间限定词有minute、“2018-10-1”日期;
    • git log 181ea1e..0adad1a老版本号在前,新版本号在后作为查找范围进行查找
  • 版本间的差异 git diff 版本号 可查看对应版本号与当前工作目录树间的差异

  • git blame xxx 可查看对应xxx文件名的所有提交作者的姓名

5.2版本控制
5.2.1版本号
  • ^ 一个脱字号相当于回溯一个版本,abcd123^相当于abcd123之间的那个版本,可以使用多个脱字号,可以回溯多个版本

  • ~N 制回溯N个版本,原理同上

5.2.2增补提交
  • 当已经把代码提交了,但是提交之后需要修复该修改 通过使用git commit -C HEAD -a -amend 该commit命令使用了一个新参数-C,告诉Git复用指定提交的提交留言,而不是从头再写一个。此操作可以
5.2.3 反转提交
  • 反转已经提交的改动 ,最简单的方法就是使用git revert XXX命令,此命令在版本库创建一个“反向的”新提交来抵消原来的改动,通常Git会立即提交反转结果,但是也可以用过-n参数告诉Git先不要提交,运行多个git rever -n XXXX命令,git会暂存所有的变更,然后做一次性提交
  • 例如 git rever -n HEAD git rever -n abcd123
5.2.4 复位
  • git reset XXXX其中XXX可是某个特定的HASH版本号也可是使用^或者~N进行复位

  • git reset --mixed 回退commit,保留源码,默认方式.

    git reset --soft 回退至某个版本,只回退commit信息,暂存工作目录树中因复位产生的与版本库的差异,以便提交,这对于在之间的提交中发现错误并需要更改时非常有用

    git reset --hard 彻底回退至某个版本, --hard命令需要小心使用,该选项会从版本库和工作目录中同时删除提交,并且不可以恢复

5.2.5 rever与reset的区别
  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  • 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  • reset的使用情景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
  • rever的使用场景:如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
6.远程仓库
6.1克隆仓库
  • 例如 git clone git://xxxxx/xxx.git ,当输入此命令时,默认克隆远程仓库remote下的所有的分支,可使用 -b 分支名 对某一远程仓库的某一个分支进行克隆 例如 git clone -b dev git://xxxx/xx.git
6.2 关联远程仓库
  • git remote add origin XXX通过使用此命令关联远程仓库
6.3版本库同步
  • 先使用git fetch orgin master拉取远程分支,然后使用git merge origin/master合并远程分支与本地分支也可以 git fetch origin master:tmp从远程仓库master分支获取最新,在本地建立tmp分支,接着git diff tmp 将当前分支和tmp进行对比 git merge tmp 合并tmp分支到当前分支
  • git pull <远程主机名> <远程分支名>:<本地分支名>可以将远程仓库直接拉取并合并,如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:git pull origin next
6.4 推送远程仓库
  • 第一次推送使用$ git push -u origin master命令,将本地master与远程master进行关联

  • git push origin master(分支名)进行远程推送

  • git push -f origin master强制推送至远程代码库,慎用此命令,会强制覆盖远程仓库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值