安装完毕之后输入win+q键搜索git bash,使用命令完成名称和邮箱的设置。
$ git config --global user.name "name" $ git config --global user.email "email@example.com"
1.首先建立一个空目录 $ mkdir name $ cd name $ pwd #显示目录存储位置 $ ls -ah #查看库目录 2.使用git init将目录转化为使用git管理的目录 $ git init
1.将文件首先放到git库目录中
2.使用git add将文件添加到仓库
3.使用git commit将文件提交到仓库
$ git add filename $ git commit -m "description"
commit可以一次提交很多文件,add多个文件之后使用一个commit即可。
$ git status #查看仓库状态 $ git diff filename
如果git status
告知有文件修改过,那么使用git diff
可以查看修改内容。
$ git log #查看提交历史 $ git log --pretty=oneline #以版本号格式输出修改记录 $ git reset --hard HEAD^ #回退上个版本 $ git reset --hard HEAD^^ #回退上上个版本 $ git reset --hard HEAD~100 #回退上100个版本 $ git reset --hard 版本号 #用于返回未来版本 $ git reflog #用来查看命令历史,可防止找不到未来版本的commit id
git分为本地、暂存区和提交区,git add
将文件从本地提交到暂存区,git commit
将文件从暂存区提交至提交区。以两次修改为例,可以如下命令所示。
第一次修改--> git add --> 第二次修改 --> git add --> git commit #两次修改都将会被提交 $ git checkout --filename #撤销修改 #存放到暂存区,但是未提交,撤销到本地 $ git reset HEAD filename $ git rm filename $ git commit -m "delete" # 从版本库删除文件
git checkout
如果文件修改后没被提交到暂存区,撤销就回退至和版本库一样的状态,如果添加到暂存区且做了修改,则回退到添加至暂存区的状态。即回退至最近一次add或commit时。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
如果删除错误,可以从版本库恢复,$ git checkout -- filename
git checkou
t其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
1、首先再github创建库,和本地名称一致
2、在本地库中运行git remote add origin git@github.com:github账户名/本地库名称.git
3、git push -u origin master`
$ git remote add origin git@github.com:githubid/库名称.git git push -u origin master $ git push origin master #第一次修改完毕后后续提交不用使用-u $ git remote -v #查看远程库信息 $ git remote rm name #删除库
此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
小结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
$ git clone git@github.com:github id/库名称.git
在GitHub上,可以任意Fork开源仓库;自己拥有Fork后的仓库的读写权限,可以clone到本地或者将更新推送至自己的仓库;可以推送pull request给官方仓库来贡献代码。