美文网首页代码世界
git常用命令简介

git常用命令简介

作者: CodingCode | 来源:发表于2017-10-20 10:21 被阅读2次

    源代码管理工具git的常用命令简介

    Git Overview.jpg

    有几个概念:

    1. 所有的改动必须先做add,然后在commit;不管是新增文件,修改文件,还是删除文件。
    2. HEAD指向的就是当前Branch的提交。
      所以如果当前分支是master,那么HEAD就是指向master的提交;如果当前分支是<branch>,那么HEAD就是指向<branch>的提交。

    建立SSH连接

    这不是必须的,但是可以省去通过SSH访问时每次输入密码的过程。

    包括两步:

    1. 在客户端生成证书
    $ ssh-keygen -t rsa -C "<yourname>@<yourcompany>.com"     
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/<username>/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/<username>/.ssh/id_rsa.
    Your public key has been saved in /home/<username>/.ssh/id_rsa.pub.
    ...
    
    1. 把证书公钥上传到git服务器
      把/home/<username>/.ssh/id_rsa.pub的内容注册到git服务器上就行,这样在以后git访问可以使用SSH协议就不用输入密码。

    代码迁出

    • 迁出master分支
      $ git clone https://<remote>/<repository>.git
      如果前面添加过SSH验证,可以使用如下命令行,可以免去每次输入密码的步骤。
      $ git clone ssh://<remote>/<repository>.git

    • 迁出指定分支,-b <branch>
      $ git clone -b <branch> ssh://<remote>/<repository>.git

    分支管理

    • 创建本地分支:git branch <branch>
    • 切换本地分支:git checkout <branch>
      上述创建本地分支和切换本地分支可以合并成一条命令:
      git checkout -b <branch>
      即,创建并切换到本地分支。
    • 推送本地分支到远程仓库:git push -u origin <branch>
      注意,本地创建的分支对其他用户是不可见的,必须推送到服务端。-u选项标志保持本地和远端的跟踪关系。
    • 从远程仓库获取分支:git pull origin <branch>
    • 删除本地分支:git branch -d <branch>
    • 删除远程仓库分支:git push origin :<branch>
      分支名前的冒号代表删除,实际上删除远程仓库分支的命令等价于: git push origin --delete <branch>
      而由于push命令的标准格式是:git push <remote> <localbranch>:<remotebranch>,当localbranch为空时,我们可以理解成把一个本地的空分支push到远程仓库代替远程分支,这变相就是要删除一个远程分支。
    • 查看本地分支:git branch
    • 分支合并:git merge <branch>
      把分支<branch>合并到当前分支

    远程管理

    前面看到有一个词origin,这个是什么意思呢,就是代表一个远端服务器;远程管理可以查看并管理(添加,删除,修改)所有的远端服务器。

    $ git remote
    origin
    $ git remote -v
    origin  ssh://<remote>/<project>.git (fetch)
    origin  ssh://<remote>/<project>.git (push)
    

    从这里可以看到origin指向的是远程哪一个服务器地址。

    pull和fetch

    $ git pull origin <branch>
    很多童鞋都推荐使用下面的两个组合命令来代替pull命令。
    $ git fetch
    $ git merge origin/<branch>

    fetch的功能是从远程仓库下载分支到本地分支,merge再从本地分支合并到当前工作目录;在合并之前我们可以使用diff命令查看下载来的分支,和本地工作目录之间的差异,从而选择如何进行合并:
    $ git log -p <branch>..origin/<branch>

    revert和reset

    这两个命令都是用来做回撤,比如发现前面做的方法不对,需要丢弃。
    个人觉得git是最难用的源代码版本管理工具,太过于专业,功能太强大,以至于使用起来过于复杂,作为工具易用性是最主要的,这点git做的不好;不过git的revert/reset回撤功能确实是做的相当完美的,给程序员们纠正历史错误提供了很大的方便。

    revert只回撤一个具体的commit,把指定commit的所有代码修改以相反的格式转换回来,并把所有回撤的文件以修改的方式存在在本地工作目录,用户可以继续修改这些文件,然后再做commit。

    $ git revert 87504be
    [master 984d412] Revert "Add fullname support"
     2 files changed, 2 insertions(+), 2 deletions (-)
    

    那么87504be就会被回撤,他的所有文件改动会显示在当前工作区。

    而reset会回撤到历史上的某一个commit,这个commit之后的所有commit都会回撤(这和revert不同),参数--hard和--soft决定是否直接丢弃回撤后的代码改动,还是把所有的代码改动存在本地工作目录,用户可以继续修改这个改动,再做commit。

    git reset --hard 87e18d9
    

    这样87e18d9之后的所有commit都被丢弃,本地工作目录存放的是87e18d9时的代码。

    相关文章

      网友评论

        本文标题:git常用命令简介

        本文链接:https://www.haomeiwen.com/subject/rbxpuxtx.html