文章目录
git基本命令
初始化
git init
把文件添加到仓库
git add 文件名
把文件提交到仓库
git commit -m "备注信息"
查看仓库当前状态
git status
查看文件发生的变化
git diff 文件名
查看日志
git log
注意:在commit一行上看到一大串的 93753… 的数字commit id(版本号)用处后面讲解,是十六进制的表示方法,这是因为Git是分布式的版本控制系统,所以每一个人的ID 肯定不一样,就像身份一样。
简化参数 :
git log --pretty=oneline
版本回退
git reset --hard HEAD^
假如当前最新版本为第三次提交
GIt 用 HEAD 表示当前版本,也就是 “third edit ,add three”
那上一个版本的表示方法是:HEAD^ (也就是 “second edit , add two”)
再上一个版本就是 :HEAD^^ (也就是 “first edit”)
以此类推,前1000次的应该有1000个 “^”,放心,GIt绝对是人性化的,它可以表示为:HEAD~1000
注意:回退到第二版本后,此时如果查看日志,只剩下两个
撤回到原版本
需要知道你的版本号(commit id) ,但是我们在上面的日志中已经找不到,最近的一个 commit id 了怎么办?
git reflog
记录每一次命令,可以把 commit id 找回来
git reset --hard 版本号
回到指定版本号
撤销修改
撤回工作区的修改
git checkout --文件名
丢弃工作区的修改
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
注意:git checkout – textfile.txt 的意思是吧textfile.txt 文件的修改全部撤销,有两种情况:
第一种:从textfile.txt编辑后就没有被git add(添加到暂存区) 过,现在撤销就和版本库一模一样。
第二种:textfile.txt 修改后被添加到暂存区,又做了修改,现在撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
撤回暂存区的修改
上面那个是在textfile.txt 修改后,没有添加到暂存区,但是如果修改完还添加到(git add)暂存区怎么办 ?
git reset HEAD 文件名
把暂存区的修改撤销掉,重新放回工作区
注意:git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。
现在暂存器(stage)是干净的,但是工作区有修改。
还记得我们如何把工作区还原到最近一次吗?
使用命令:git checkout – file
删除文件
rm file
或者直接在文件管理器中把文件删了
那么现在版本库和工作区不一致,那么现在有连个选择:
一是确实要从版本库中删除该文件,那么
git rm 文件名
删掉,并且要git commit
现在文件从版本库删除了,工作区同样也删除了。
二是删错了,因为版本库里还有呢,所以可以很轻松的把误删的文件恢复到最新版本
使用命令:git checkout --文件名
注意:git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
总结:命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
远程仓库(Github)
新建远程库
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以在Github官网进行设置
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key:
使用命令:
ssh-keygen -t rsa -C "youremail@example.com"
最后,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人 。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
添加远程库
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库 :
在仓库名中填入 Gitfile 然后点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
创建成功后,Gitfile仓库是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的Github仓库下运行命令 :
git remote add origin https://github.com/xxxx/Gitfile.git
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
使用命令: git push -u origin master
实际上是把当前分支master推送到远程Github。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后就可以在github 新建的仓库中看到,和本地一样的文件。
从现在起,只要本地做了提交(git commit ) 就可以通过命令:
git push origin master
推送到远程github的仓库(把本地master
分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!)。
克隆远程库
我们前面所讲的是。我们在本地先建立一个本地库,然后在GIthub建立一个远程库,然后把本地库的分支master 和远程库的分支master关联起来,以后如果想同步两个库只需要通过命令:git push origin master ,即可完成同步 。
现在假设我们是从头开始,我们先创建远程库,然后从远程库(Github)中同步到本地,完成同步。
第一步:登陆GIthub ,建立一个新的库命名为:Githubfile
注意Git仓库地址:
你也许还注意到,GitHub给出的地址不止一个,还可以用git@github.com:zGuangYuan/Githubfile.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
第二步:现在我们已经把远程库创建好了,我们准备把它克隆到本地:
使用命令:git clone 地址
服务器搭建远程仓库
远程服务器端:
- 创建裸仓库
$git init --bare test.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git
结尾。
本地:
-
到需要提交的文件的目录里面,初始化
git init
-
添加项目
git add -a
-
提交项目
git commit -m '说明'
-
推送到远程服务器
git push ssh://qixiaoting@192.168.100.239/仓库地址/test.git master
远程服务器:
-
克隆文件
到需要克隆文件的目录里面
git clone ssh://qixiaoting@192.168.100.239/仓库地址/test.git
或者直接克隆仓库地址(如果在一台服务器上的话)
git clone 仓库地址/test.git
-
如果要修改文件,要再次提交
git commit -am '修改说明'
-
然后推送到服务器仓库中
git push ssh://qixiaoting@192.168.100.230/路径/test.git master
本地:
-
更新代码:
git pull ssh://qixiaoting@192.168.100.239/仓库地址/test.git
Git ssh免密登录
ssh-copy-id user@host
分支管理
待续…
标签管理
待续…
git基本常用命令总结
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上