git log 日志过长显示不完整 退出不了时,按Q退出。
显示一行:git log--pretty=oneline。
安装Git
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“GitBash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
通过如下命令来配置用户名和Email
git config --global user.name "Evan"
git config --global user.email "375531039@.com"
通过git config --global user.name和git config --global user.email来查看当前配置。
创建一个版本库
如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
第二步,通过git init
命令把当前这个目录变成Git可以管理的仓库,当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的。
使用Windows的童鞋要特别注意:
千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可:
把文件添加到仓库:
git add readme.txt
git add
文件夹名:
把文件夹内所有文件添加
git add . :
把当前目录下所有文件添加到仓库
用命令git commit
告诉Git,把文件提交到仓库
git commit -m "wrote a readme file"
git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git status
命令可以让我们时刻掌握仓库当前的状态
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,
git diff readme.txt
git log
命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数
回退到上一个版本
git reset --hard HEAD^
在Git中,用HEAD
表示当前版本,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
Git提供了一个命令git reflog
用来记录你的每一次命令,可以查看每个版本的commit id。
git reset--hard commit_id
。
如git reset --hard 3628164
commit_id
没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
撤销修改
1. git add
之前,使用
gitcheckout -- file
可以丢弃工作区的修改,
2.git add
到暂存区之后,在commit
之前,用命令git reset HEAD file
(
git reset HEAD readme.txt
)
可以把暂存区的修改撤销掉(unstage),重新放回工作区,再用用命令git checkout – file
恢复即可。
删除文件
用命令git rm
删掉,并且git commit
,
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
远程仓库
网上查看了教程是:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开GitBash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSHKey的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Accountsettings”,“SSH Keys”页面:
然后,点“AddSSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容
3.在GitHub上创建一个新的版本库learngit
,目前,在GitHub上的这个learngit
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
$ git remote add origin git@github.com:michaelliao/learngit.git
把上面的michaelliao
替换成你自己的GitHub账户名,
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
要关联一个远程库,使用命令gitremote add origin git@server-name:path/repo-name.git;
关联后,使用命令gitpush -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令gitpush origin master推送最新修改;
另一种方法:
该方法适合本地工程没有使用本地版本库控制,或者是在工程建立之初就已经和gitHub远程库进行了关联。
1. 在本地工程目录下,使用命令:
git clone https://github.com/AFreshBird/learngit.git
将GitHub上新建的远程库克隆到本地工程,会生成一个learngit文件夹,将该文件夹的剪切到上一层目录,至此,本地工程和远程库建立了关联。
然后 addcommit之后,即可使用
git push originmaster命令将本地版本库同步到gitHub。注意需要输入gitHub的账号和密码。