x1184的小站
x1184的小站
Git(一)-速查知识点及常见问题
Git(一)-速查知识点及常见问题

git(/ɡɪt/)是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)不同。
git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。

from Wikipedia

git是在Linus因为上一个类似功能软件的使用权有争端的背景下自己花10天开发出来的,当时应用的场景也是方便协作维护开源的Linux内核。Linus也曾经讽刺地嘲笑git这个名字(在英式英语俚语中表示不愉快的人),gitCVSSubversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,也就是在本地上就可以运行如果只是给自己用的话。同时git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。

所以要使用git这个软件,如果你还是没用过的话,那首先理清一下它的使用场景。简单来说,个人开发项目在本地开发和调试项目可以用它,团队在开发中大型项目也可以用它,同时如果是企业开发适当加些权限控制的hook也是可以用它的。总体来说,它可以记录代码提交历史,能合并代码,能留档和恢复到任一时间点的代码,应该来说是程序员必须掌握的基本工具之一。

客户端安装

Linux下和windows下安装过程请自行Google

常用命令速查

clone克隆(下载)

 git clone ssh://git@yourdomain.com:23456/home/git/yourproject.git
这一步骤是通过ssh完成认证的,认证好后就能克隆到本地了,clone这个操作可以简单理解成下载,如果是https://这样开头的,说明其传输所依赖的应用层协议是http系列协议,如果是ssh://这样开头的,说明对应协议ssh。具体来说,身份验证环节就会有差别,http是基本的http验证,验证不通过返回401的那种,ssh使其支持类比于linux登录时的各种方式,比如公钥登录。

clone好了后
首先声明你的邮箱和你的id (替换掉那些x)
id可以用你喜欢的id 邮箱请用企业邮箱(还没有企业邮箱的私聊分配)
git config --global user.email "xxxxxx@trashink.com"
git config --global user.name "XXXXXX"

基本流程

增加和删除文件

git add xxx.file   #增加一个文件
git add .           # 增加所有文件
git rm xxx.file   # 删除文件
index file决定 add和commit untracked->staged 加入index

如果只是修改了文件内容 直接commit就行

git commit -m "这是每次提交写的注释" -a
git commit --amend #修改下注释

推到服务器 (这一步不搞则别人多看不到你的提交)

git push origin master

从服务器拉回

git pull

查看状态

git status #查看当前哪些文件要提交 哪些要add 很智能
git branch -a  # 查看目前所有的版本
git log #查看已经提交好了的历史 可以看到每个人的提交
# git log filename  使用还有点小问题

撤销与回退

撤销
git checkout head  .                   #撤销尚未提交的 行末有 点
git checkout  --  xxx.php             #撤销单个文件    中间 空格别忽略 
git revert --no-commit head     #撤销已提交的   撤销commit记录并且不提交

回滚
git reset --soft HEAD~1    #回滚到上一版本
git reset --soft HEAD~2  #回滚到上二版本
git reset --hard commit_id  #回滚到任意commit版本

mixed:不带任何参数时的默认方式,只保留源码,回退commit和index信息
soft:  只回退了commit的信息,不会恢复到index file。如果还要提交,直接commit即可
hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

版本(分支)操作

git branch Guo            #创
git branch -a             #秀
git checkout Guo      #切
git checkout -b Guo #创并切  
git branch -d Guo     #合完删
git branch -D Guo     #删
git push origin --delete Guo #删远程
git remote show origin //看删分支
git remote prune origin  //更新分支

                              git commit   +--------------------+  +--------------------+
                               +---------->+                    |  |                    |
                               |           | +----------------+ |  | +----------------+ |
                               |           | |                | |  | |                | |
                               |           | |    commit6     | |  | |    commit3     | |
                  add          |           | |                | |  | |                | |
                               |           | +----------------+ |  | +----------------+ |
+---------------+----->+-------+--------+  | +----------------+ |  | +----------------+ |
|               |      |                |  | |                | |  | |                | |
|  unstaged     |      |    staged      |  | |    commit5     | |  | |    commit2     | |
|               |      |                |  | |                | |  | |                | |
+---------------+----->+----------------+  | +----------------+ |  | +----------------+ |
                                           | +----------------+ |  | +----------------+ |
                  modify                   | |                | |  | |                | |
                                           | |    commit4     | |  | |    commit1     | |
                                           | |                | |  | |                | |
                                           | +----------------+ |  | +----------------+ |
                                           |                    |  |                    |
                                           +--------------------+  +--------------------+
                                                 local  +-------------^   origin
                                                             push

常见问题

遇到confict了怎么办
keyboard_arrow_down

新手的话推荐在可视化工具下操作吧,(vsc, sublime merge)更直观些

gitee github项目down下来后 提交不了 提示要输啥东西
keyboard_arrow_down

输入对应平台的账户密码,如果是在可视化工具下操作,可以再点击下保存密码

还是上一个问题的情景,但之前已经输错了还记住密码了,一直进不去
keyboard_arrow_down

按win键(win7)或按win+Q(win10)搜索控制面板并进入,右上角查看方式改为小图标,然后看到“凭据管理器” 进去,找到输入错误的账号,删除掉即可

学习资源

  1. 在线学习git流程 (英语)

赞赏
欢迎留言交流讨论,留言必回。

admin

文章作者

一个平凡的追梦人

发表评论

textsms
account_circle
email

x1184的小站

Git(一)-速查知识点及常见问题
git快速上手手册,git相关的初始配置问题汇总
扫描二维码继续阅读
2020-10-02