git

GIT命令

GIT命令

Posted by Qc on April 30, 2019

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(Git官方网址是:https://git-scm.com/

GIT学习游戏

答案

特点

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

下图是经典的git开发过程。

优点:

  • 适合分布式开发,强调个体。

  • 公共服务器压力和数据量都不会太大。

  • 速度快、灵活。

  • 任意两个开发者之间可以很容易的解决冲突。

  • 离线工作。

缺点:

  • 资料少(起码中文资料很少)。

  • 学习周期相对而言比较长。

  • 不符合常规思维。

  • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

与SVN比较

内容 GIT SVN
 
架构 分布式 集中式
日志 离线(可在本地做版本管理) 在线
效率
难度 复杂 简单

常用指令

命令 作用 备注
git init 创建一个版本库  
git clone 将存储库克隆到新目录中 SSH需配合秘钥使用
git branch 查看本地分支 *代表当前分支
git branch -r:查看远程分支
git branch -a:查看本地和远程分支
git branch 创建一个分支  
git checkout 切换分支/恢复工作树文件 如有本地无分支则创建本地分支(git checkout -b origin/
若有冲突则需手动处理
git status 显示工作目录和暂存区的状态  
git diff <file/id/branch> 显示提交和工作树等之间的更改 比较工作目录中当前文件和暂存区域快照之间的差异(修改之后还没有暂存起来的变化内容)
git log 显示提交日志信息  
git add 将文件内容添加到索引(将修改添加到暂存区) 支持多文件(git add )、目录(git add ),支持通配符(*/?)
git rm <file/path> 将文件/目录从git的仓库管理系统中移除 –cached保留文件,-f 同时删除文件
git commit -m “” 提交记录 git commit:记录到目前为止已经进行了什么更改(冲突解决完成后)
git commit –amend:增补提交(–no-edit:不修改记录message)
git reset 将当前HEAD复位到指定状态 git reset HEAD :撤销git add
git reset --soft HEAD^:撤销commit
git reset --(mixed) HEAD^:撤销commit及add
git reset --hard [/HEAD]:一键恢复,慎用
git push 将本地分支的更新,推送到远程主机 git push origin : 推送本地分支branch2到远程分支branch1
git push [--force/-f]:强制推送(non-fast-forward merge)
git push --tags:推送标签(git push不会推送标签)
git fetch 从另一个存储库下载对象和引用(更新所有分支) git fetch origin :取回分支
   
git merge 将两个或两个以上的开发历史加入(合并)一起至当前分支(记录实际发生过什么)
merge结果能够体现出时间线
用revert撤销merge
git –no-ff:不使用fast-forward方式合并,保留分支的commit历史
git –squash:使用squash方式合并,把多次分支commit历史压缩为一次
git rebase 把一个分支的修改合并到当前分支(项目过程中发生的事)
rebase会打乱时间线
不要对在你的仓库外有副本的分支执行变基
用rebase -i重新编辑
git pull 从另一个存储库或本地分支获取并集成(整合) git pull origin : 拉取远程分支branch1到本地分支branch2
git pull = git fetch + git merge
git pull -r = git fetch + git rebase
git revert 撤销某次操作(用一次新的commit来回滚之前的commit) git revert <HEAD/id/>
reset处理本地,revert处理远端
git stash (save) 将更改储藏在脏工作目录中 git stash list:查看现有的储藏
git stash apply (stash@{n}):应用储藏
git stash pop:应用所有储藏
git stash drop stash@{n}:删除储藏
git stash clear:清空储藏
git tag 列出现有标签 轻量级标签:保存着对应提交对象的校验和信息的文件
git tag [tag]:创建标签
含附注的标签:存储在仓库中的一个独立对象
git tag -a [tag] -m ““:创建标签
git tag -s [tag] -m ““:利用私钥签署标签

git show [tag]:展示标签
git tag -d [tag]:删除标签

git push origin [tag]:推送标签