Git

来源:互联网 发布:三菱伺服选型软件 编辑:程序博客网 时间:2024/06/10 12:33

CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。

1,

在Linux上安装Git

  首先,你可以试着输入git,看看系统有没有安装Git

  1. $ git

  像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git

  如果你碰巧用DebianUbuntu Linux,通过一条sudo apt-get install git就可以直接完成Git的安装,非常简单。如果想查看是否安装成功,通过git --version

  如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./configmakesudo make install这几个命令安装就好了。

安装完成后,还需要最后一步设置,在命令行输入:

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以每个机器都必须自报家门:你的名字和Email地址。

2,创建版本库:

①、mkdir learngit      创建一个learngit的空目录

cd  learngit

       pwd  pwd命令用于显示当前目录。

git init    通过git init命令把这个目录变成Git可以管理的仓库

仓库创建好后多一个.git的目录,这个目录是Git来跟踪管理版本库的,如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

②、添加文件

创建一个readme.txt作为练习:

  1. echo"Git is a version control system."> readme.txt
  2. // 输入这句话保存到创建的readme.txt文件中
  3. echo" Git is free software.">> readme.txt
  4. // 输入此内容追加到readme.txt中

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

用命令git add告诉Git,把文件添加到仓库:

$ git add readme.txt

git add 实际上是个脚本命令,没有任何显示,说明添加成功。

③、提交文件

$ git commit -m"wrote a readme file"

git commit命令,-m后面输入的是本次提交的说明,Git添加文件需要addcommit一共两步,因为commit可以一次提交很多文件,所以可以多次add不同的文件,比如:

  1. $ git add file1.txt
  2. $ git add file2.txt file3.txt
  3. $ git commit -m "add 3 files."

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

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

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  • 第二步,使用命令git commit,完成。
3、git的操作

①、要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

②、版本回退

git log显示从最近到最远的提交日志

$ git reset --hard HEAD^ 回退版本

③、重新恢复到新版本

版本回退后如果想重新恢复到新版本,先git log 找到新版本的commit id  如果commi id 为3276944

   则:$git reset  -hard  3276944

 版本号没必要写全,前几位就可以了,Git会自动去找

④、git reflog命令

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

⑤、撤销修改

1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步:

  • 第一步用命令git reset HEAD file,就回到了1;
  • 第二步按1操作。

3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。


命令:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

分支:

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

多人协作的工作模式通常是这样:

  • 首先,可以试图用git push origin branch-name推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

  如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name


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

配置别名:

现在都用co表示checkoutci表示commitbr表示branch

  1. $ git config --global alias.co checkout
  2. $ git config --global alias.ci commit
  3. $ git config --global alias.br branch

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。


0 0