Git 教程新手入门笔记

看了一些Git的教程,有一些指令还是让人怦然心动的,生怕自己忘记了,这里做一个笔记,看到这个笔记能够马上想起来。如果需要对Git详细了解的,可以去官方网站查看,这里贴出一个官方中文版的电子书:https://git-scm.com/book/zh/v2

关于Git 的历史由来,以及于集中式版本控制系统(如svn、cvs)的区别,以及安装git,这里就不介绍了。补充下,历史由来其实很有意思,呵呵!!

一、初始化本地版本库

初始化一个Git仓库,使用 git init 命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;也可以使用 git add * ,添加所有文件。
  2. 使用命令git commit,完成。或者使用 git commit -a,提交所有文件,包括未 git add 的文件。

二、版本回退

  1. 使用 git log 查看操作记录,如果日志内容很多可以使用 git log –pretty=oneline
  2. 使用git reflog查看HEAD的命令的历史记录。
  3. 使用git reset HEAD 返回到上次提交,git reset HEAD^^ 返回到上2次的提交。如果加上参数 - -hard,则放弃当前的修改,这里不包括新增文件,因为新增的文件还未被git跟踪(Untracked).
  4. 使用git reset <版本号>,可以使用git reflog先查看版本。。如果加上参数 – -hard,则放弃当前的修改,这里不包括新增文件,因为新增的文件还未被git跟踪(Untracked)。例如:
    git reset –hard fb9e84b

参考地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

三、回滚

git reset –hard 5154589
git fetch origin/dev git pull
git reset origin/dev

三、版本撤销

  1. 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout — file
  2. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

四、删除文件

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

五、分支的创建与合并

  1. 查看分支:git branch
  2. 创建分支:git branch <name>
  3. 切换分支:git checkout <name>
  4. 合并某分支到当前分支:git merge <name> ,也使用 git merge --no-ff -m "message" <branch>,注意两条命令的区别。加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
  5. 删除分支:git branch -d <name>,-D 强制删除
  6. 删除远程分支:git branch -r -d origin/fix0414

六、BUG分支

  1. 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
  2. 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
  3. 相关的命令有 stash list 、stash pop、stash apply、stash drop,注意pop和apply的区别。

七、标签

  1. 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  2. git tag -a <tagname> -m “blablabla…”可以指定标签信息;
  3. git tag -s <tagname> -m “blablabla…”可以用PGP签名标签;
  4. 命令git tag可以查看所有标签。
  5. 命令git push origin <tagname>可以推送一个本地标签;
  6. 命令git push origin –tags可以推送全部未推送过的本地标签;
  7. 命令git tag -d <tagname>可以删除一个本地标签;
  8. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

八、配置

在用户目录创建~/.gitconfig

[alias]
st = status
br = branch
co = checkout
ci = commit
[color]
branch = auto
diff = auto
status = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
[user]
name = xxxx
email = xxxx@qq.com
[core]
autocrlf = input

九、搭建Git服务器

1、创建用户和用户组

# groupadd git
# useradd -g git git

2、初始化

# git init --bare guohu.git

3、客户端的公钥加入到git服务器中

# 在客户端创建公钥
# ssh-keygen -t rsa -C "xxx@qq.com"

# 将公钥的内容复制到git服务器
# scp id_rsa.pub root@192.168.80.110:/data/www/

#在git服务器上,将客户端的公钥,写入到 /home/git/.ssh/authorized_keys,
#如果没有.ssh/authorized_keys,手动在git服务器上创建。
# cat id_rsa.pub > /home/git/.ssh/authorized_keys
# 注意 authorized_keys 的权限必须是600

#在客户端使用下面的命令拉分支
#git clone git@192.168.80.110:/data/git/guohu.git
或者
git remote add origin git@192.168.80.110:/home/git/shopx.git
# 注意确保 /home/git目录的文件,必须是git的用户和用户组
# 很奇怪,创建/home/git目录下才成功

4、禁用shell登录

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

5、管理

  • 搭建Git服务器非常简单,通常10分钟即可完成;
  • 要方便管理公钥,用Gitosis;
  • 要像SVN那样变态地控制权限,用Gitolite。

十、常用的命令

--pretty=oneline、--no-ff、--graph、--abbrev-commit

十一、生成ssh私钥、公钥

# ssh-keygen -t rsa -C "xxx@qq.com"

参考地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>