zoukankan      html  css  js  c++  java
  • Git使用笔记

    git是分布式版本管理工具。Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行。git不区分服务端和客户端,也就意味着,当你安装好了git,客户端和服务端都有了。

    本文以github为例讲解如何使用git。

    更多内容详见github:

    52fhy/gitlearn: 这是初次学习git的一些笔记,可以帮助新手快速入门。
    https://github.com/52fhy/gitlearn

     

    如何在公司快速使用git协作

    如果之前没有接触过git,公司里使用git协作,为了快速能用起git,你不用去学git,只要会下面的命令即可。

    需要克隆项目:

    git clone git@github.com:52fhy/gitlearn.git

    记得替换成实际的项目路径。

    之后每天只要使用下面4条命令即可:

    git add .
    git commit -m "备注"
    git pull 
    git push

    记住顺序不能乱,pull之前先提交本地到版本库,防止被拉下来的代码覆盖;提交之前先拉线上的代码下来进行合并,防止冲突。

    pull拉取线上代码到本地并执行合并,相当于执行了git fetch;git merge; push推送本地(默认是master分支)到线上并合并,注意观察是否有冲突。有冲突必须手动修改,再从头执行一遍。

    每天基本上就上面4条命令就足够了。

    如果第一次你还没有ssh公钥,现象就是你克隆不了,没有权限。如果本地的用户目录下面没有.ssh目录没有 id_rsa.pub公钥文件,需要新建公钥私钥:

    $ ssh-keygen -t rsa -C "youremail@example.com"

    接下来一路回车即可。


    1、第一次使用github

    1)github注册账号,网址:https://github.com/
    使用邮箱注册账号

    先不要创建版本库

    2)安装git

    Linux请参考网上教程,这里演示windows操作。

    实际命令行操作基本是一样的。


     msysgit 是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。

    官方下载比较慢,可以使用第三方下载点:Git-2.7.2-32-bit_setup.1457942412.exe

    安装完成后,在开始菜单里找到"Git"->"Git Bash",蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    说明:git命令操作和Linux命令差不多,很多命令可以直接使用,比如cd,vi

    3)安装完成后,还需要最后一步设置,即配置本地git用户名和邮箱。在命令行输入:

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

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

     下次重新使用这两个命令可以更新用户名和邮箱。

    通过 git config -l  可以查看已有的配置。

    4)创建SSH Key

    在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub(公钥)这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    $ ssh-keygen -t rsa -C "youremail@example.com"

    其中-t指定rsa加密;-C是备注,可选。

    会让你输入 .ssh/id_rsa 文件的路径,默认即可
    然后输入自定义私钥密码(下次用来确认你的身份),确认即可:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/YJC/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /c/Users/YJC/.ssh/id_rsa.
    Your public key has been saved in /c/Users/YJC/.ssh/id_rsa.pub.
    The key fingerprint is:
    xx:80:50:0f:25:xx:c8:f1:3c:fe:5e:90:be:9d:d5:xx

    注意:

    如果由于其他原因导致git提交时提示 Could not create directory '//.ssh'. ,可以删除之前的id_rsa文件,重新进行:

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
    $ ssh-keygen -t rsa -C "youremail@example.com"

    windows上id_rsa文件位于用户主目录:C:/Users/YJC/.ssh/

    id_rsa
    id_rsa.pub

    当提示 Enter file in which to save the key (//.ssh/id_rsa): 默认可以为空,如果不行,输入:C:/Users/YJC/.ssh/id_rsa

    当提示

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:

    输入一个密码即可。下次提交代码会让你输入密码。

    5)登陆GitHub,打开"Account settings","SSH Keys"页面:
    然后,点"Add SSH Key",填上任意Title,在Key文本框里粘贴 id_rsa.pub 文件的内容:

      为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
      当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    6)创建本地版本库(我选的D盘)

    $ cd /d/phpsetup/www/git/
    $ mkdir fhyblog
    $ cd fhyblog
    $ pwd

    /d/phpsetup/www/git/fhyblog

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

    $ git init
    
    Initialized empty Git repository
    in /Users/52fhy/fhyblog/.git/

    瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个 .git 的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

    注意几个概念:

    工作区就是创建仓库的文件夹如(fhyblog文件夹就是一个工作区) 
    版本库就是工作区的隐藏目录.git
    版本库中有暂存区(stage
    /index)和分支(master)
    git add 实际是把文件添加到暂存区
    git commit 把暂存区的内容提交到当前分支

    8)在本地版本库fhyblog里放入一些代码或文件

      我放了src目录和一个readme.txt文件

      git status  可以查看工作区有改动。

    9)进入版本库目录:

    $ cd /d/phpsetup/www/git/fhyblog/

    10)更新本地版本库(.指当前所有目录及文件)

    $ git add .

    当然,如果你仅仅是提交一个文件,可以这样写

    $ git add readme.txt

    更新一个目录这样写:

    $ git add src/

    此时还没有真正提交到版本库,只是从工作区放到暂存区。提交请继续往下看:

    11)执行更新操作:

    $ git commit -m "相关说明"
    
    [master 91115af] .
    1 file changed, 53 insertions(+) create mode 100644 "345215207347272247346227245345277227.txt"

    这样就提交到了本地版本库的master分支(默认)。通过 git log 可以查看提交记录,通过 git status 可以查看工作区情况。 

    一般情况,如果是个人开发,主要就是 git add 命令和 git commit 命令:提交更改至暂存区,然后提交到分支。

    如果是团队协作,需要统一在远程版本库交换更改,就要用到 git pull 和 git push 命令了。

    注意:git本身并不依赖远程版本库,这点和svn不一样。远程版本库的作用是方便交换更改,如github。

    12)更新至远程(Github):

    要关联一个远程库,使用命令 

    $ git remote add origin git@github.com:yourname/yourgit.git 

    关联后,使用命令 

    git push -u origin master

    进行第一次推送master分支的所有内容;

    所以,远程github上确保你的版本库是空的,否则你在这一步可能会不成功。

    此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;

    $ git push origin master
    
    Warning: Permanently added the RSA host key
    for IP address '192.30.252.129' to the list of known hosts. Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa': Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 292 bytes | 0 bytes/s, done. Total 2 (delta 0), reused 0 (delta 0) To git@github.com:52fhy/fhyblog.git efe4969..91115af master -> master Branch master set up to track remote branch master from origin. Admin@YJC-PC /d/phpsetup/www/git/fhyblog (master)

    如果完成到这里,恭喜你!你已经有了本地和远程版本库了。

    注意:

    origin 是默认的远程版本库名称(可以在 .git/config 之中进行修改)
    git push origin master 的意思是 git push origin master:master (将本地的 master 分支推送至远端的 master 分支,如果没有就新建一个)
    
    git push origin master和git push有什么区别?
    1、master是主分支,还可以建一些其他的分支用于开发。
    2、git push origin master的意思就是将本地的 master 分支推送至远端的 master 分支。git push是上传本地所有分支代码到远程对应的分支上。

    master其实是一个“refspec”,正常的“refspec”的形式为”+<src>:<dst>”,冒号前表示local branch的名字,冒号后表示remote repository下 branch的名字。注意,如果你省略了<dst>,git就认为你想push到remote repository下和local branch相同名字的branch。


    2、再次使用git
    以后本地版本库里有更新,使用 git add  添加,使用命令 git commit 提交。
    更新至远程使用命令 git push origin master 推送

    git add .
    git commit -m "update something..."
    git pull 
    git push

    先git pull再git push防止覆盖他人代码造成冲突。

    可以使用git status命令查看git仓库状况。


    3、从远程更新至本地版本库
    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

    $ git clone git@github.com:52fhy/fhyBlog.git
    
    Cloning into
    'fhyBlog'... Enter passphrase for key '/c/Users/YJC/.ssh/id_rsa': remote: Counting objects: 284, done. remote: Compressing objects: 100% (238/238), done. remote: Total 284 (delta 28), reused 283 (delta 27)R Receiving objects: 94% (267/284), 644.00 KiB | 12.00 KiB/ Receiving objects: 100% (284/284), 676.81 KiB | 12.00 KiB/s, done. Resolving deltas: 100% (28/28), done.

    其他:

    忽略 .gitignore 已经跟踪的目录,如 dir/ :

    git rm -r --cached dir

    git别名

    git可以配置别名,这样不用担心记不住命令了。

    很多人都用co表示checkout,ci表示commit,br表示branch:

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

    有人丧心病狂地把lg配置成了:

    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

    使用 git lg 看看效果吧!

    ===写在后面===

    本文仅是Git的基本使用,可以作为新手入门教程。更多Git相关操作,请参考:

    1、Git教程,极力推荐,尤其是新手。本文就参考了该教程。

    2、《Pro Git》一书,百度搜索吧;

    3、Git官方教程

    参考文档:

    1、Git 使用及原理 总结 - 人间奇迹 - 博客园

    http://www.cnblogs.com/yaozhongxiao/p/3794963.html

    2、learngit/git学习笔记.md at master · michaelliao/learngit · GitHub

    https://github.com/michaelliao/learngit/blob/master/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.md

    觉得有收获,记得推荐一下哦!

  • 相关阅读:
    反射+注解:excel2module
    RSA签名
    base642photo
    maven命令
    201421123042 《Java程序设计》第14周学习总结
    201421123042 《Java程序设计》第13周学习总结
    201421123042 《Java程序设计》第12周
    201421123042 《Java程序设计》第10周学习总结
    201421123042 《Java程序设计》第9周学习总结
    201421123042 《Java程序设计》第8周学习总结
  • 原文地址:https://www.cnblogs.com/52fhy/p/3973887.html
Copyright © 2011-2022 走看看