Git常用命令(一)

纵然是瞬间 提交于 2020-04-07 01:45:59

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

2.   添加文件到Git仓库,分两步:【Git天界文件需要add,commit 两步,因为commit可以一次提交很多wenjian

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命令git commit,完成。

3.     要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

4.  版本回退:,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

  • git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。 如果嫌输出信息太多,看得眼花缭乱的,可以加上--pretty=oneline参数
  • 版本回退时,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。也可以直接使用commit id 回退到相应的版本。
  • 使用git reset命令回退到以前的版本。
  • 在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到之前版本时,再想恢复到之后版本,就必须找到该版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令
5.  工作区和暂存区:Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。



  • 工作区:即电脑中能看到的目录。
  • 版本库Repository:工作区有一个隐藏目录.git,即Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
  • 前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

    第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

    第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

6.  管理修改: 为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件
  • 提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
  • 每次修改,如果不add到暂存区,那就不会加入到commit
  • 撤销修改:git checkout -- file可以丢弃工作区的修改。(没有--,就变成了“切换到另一个分支”的命令

    这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态    

  • 命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

7.  删除文件:使用命令rm file将工作区的文件删除时,

  • 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
  • 删错了,可以通过 git checkout -- file 很轻松地把误删的文件恢复到最新版本(因为版本库中还存在)
  • 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

二、远程仓库

    Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。只要注册一个GitHub账号,就可以免费获得Git远程仓库

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:


  • 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"

    然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

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

  • 为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

1.  添加远程库:



  • 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库learngit
  • GitHub的提示,在本地的learngit仓库下运行命令:添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
  •  $ git remote add origin your_github_account/learngit.git
  • 把本地库的所有内容推送到远程库上:把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    $ git push -u origin master
  • 从现在起,只要本地作了提交,就可以通过命令,把本地master分支的最新修改推送至GitHub
    $ git push origin master

2.  从远程库克隆:

  • 登陆GitHub,创建一个新的仓库,名字叫gitskills
  • 下一步是用命令git clone克隆一个本地库 
    $ git clone git@github.com:yourAccountName/gitskills.git        

下节介绍git分支管理和标签管理等内容

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!