git

Git简单实用命令

Posted by persuez on August 3, 2018

创建仓库

  1. git init:初始化一个目录,使其成为git的根工作区。生成的.git目录被称为版本库(Repository)。
  2. git add 文件git commit -m "提交的注释信息"。(这个其实和创建仓库没啥关系,但写就写了吧)
  3. 为了方便本地管理仓库(不用每次连接都输密码)和安全,而且速度比https更快,我们用ssh协议进行连接:
    • 如果在home目录下有.ssh目录,进去看看有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,跳到下一步。如果没有,创建SSH Key:ssh-keygen -t rsa -C "邮箱(这里是注释信息)",一路回车,默认生成2018比特RSA密钥。
    • 去Github中粘贴文件id_ras.pub的内容。然后就可以用ssh登录了。
    • 在Github中创建远程仓库。我们可以把创建好的仓库git clone到本地,也可以通过在本地仓库目录运行git remote add origin [email protected]:用户名/仓库名.git将本地仓库与远程仓库进行关联。origin指向的就是你本地的代码库托管在Github上的版本。
    • 将本地仓库的内容推送到远程仓库:git push -u origin master,把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。以后推送只需要git push origin master就可以了。
  4. 如果关联本地仓库和远程仓库之后(git remote add)发现远程仓库中的一些文件本地仓库中没有,直接pull会出错,先用git pull origin master --allow-unrelated-histories将本地仓库与远程仓库文件保持一致。

版本回退及版本恢复

  1. git log查看提交的记录。可以用git log --pretty=oneline
  2. git reset --hard 版本号,当前版本为HEAD,第二版本为HEAD^,第三版本为HEAD^^,第100版本为HEAD~100。或者版本号为对应的commit id,commit id没必要写全,写前几位(5位)就可以了,git会自动去查找。所以这可以进行版本恢复。
  3. git reflog可以帮助我们查到对应的commit id,因为这个命令会列出我们运行的每一次命令。

简单管理修改

  1. git status查看是否有修改未被加到暂存区。(先git add,然后git commit
  2. git diff HEAD -- 文件名查看工作区和版本库里面最新版本的区别。
  3. 撤销修改:
    • 放弃工作区的修改,即放弃还没添加到暂存区的修改了的文件,用git checkout -- 文件名忽略修改。
    • 在commit之前发现错误,要撤回修改,先用回退功能将修改回退到工作区:git reset HEAD 文件名,然后再放弃工作区的修改:git checkout -- 文件名
    • 已经commit,但还没push,用版本回退功能。
    • 已经push了一些如骂boss的话,那就等死吧。。。

删除文件

rm删除掉工作区的文件,这个操作使得工作区和版本库不一致(用git status可以发现)。现在看是需要版本库与工作区保持一致,还是这是误删了工作区的文件:

  1. 版本库与工作区保持一致:先git rm 版本库对应的文件,然后git commit -m "remove xxx"
  2. 误删:git checkout -- 文件名git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

参考资料

廖雪峰的官方网站