代码世界

git常用命令简介

2017-10-20  本文已影响2人  CodingCode

源代码管理工具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协议就不用输入密码。

代码迁出

分支管理

远程管理

前面看到有一个词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时的代码。

上一篇下一篇

猜你喜欢

热点阅读