git学习总结

2017-08-15  本文已影响0人  Lxs_597

                                       Git for windows

本文只是自己的一些学习总结,方便自己查看,如果对您阅读不适,抱歉!!!

常用命令(省略$):git --help(查看命令);mkdir (创建目录);

git init (将文件变成Git可管理的仓库);

ls -ah(查看.git隐藏文件); pwd(当前目录); git add(添加文件到仓库);

git commit -m(上传文件到仓库); git diff(查看修改内容);

git status(查看当前状态); git log(查看版本); git log --pretty=oneline(查看版本);

git reflog(查看历史版本); git reset --hard HEAD^(返回到上一个版本);

cat mygit.txt(查看当前版本内容);git checkout -- mygit.txt(未add撤销修改);

git reset HEAD mygit.txt->git checkout -- mygit.txt(add后撤销修改);

rm mygit.txt -> git checkout -- mygit.txt(撤销删除);

rm mygit.txt -> git rm mygit.txt -> git commit (删除文件);

$ git remote add origin git@github.com:lxh597/learngit.git(关联github);

$ git push -u origin master(上传到github仓库);

$ git push origin master(本地修改后推送到github);

$ git clone git@github.com:lxh597/warehouse.git(克隆到本地);

$ git checkout -b dev(创建并切换至dev分支,相当于git branch dev + git checkout dev); $ git branch(查看当前分支);

$ git branch dev(创建dev分支); $ git checkout dev(切换至dev分支);

$ git merge dev(讲dev分支合并到当前分支); $ git branch -d dev(删除dev分支);

$ git merge --no-ff -m “msg” dev(不适用fast forword合并,log能看出曾经合并过);

$ git stash(储存当前工作现场); $ git stash list(查看储存列表);

$ git stash pop(恢复并删除stash list内容);

$ git stash 可多次储存,用git stash list查看,然后使用git stash apply stash@{0}恢复,使用git stash drop删除;

$ git remote -v(查看远程仓库信息)

$ git tag v1.0(创建标签);

$ git log --pretty=oneline --abbrev-commit -> $ git tag v0.9 53ef5ce (根据commit id);

$ git tag(查看标签); $ git show v1.0(查看标签信息);

$ git tag -a v0.1 -m “version 0.1” 3a9175f (-a 标签名 -m说明);

$ git push origin v1.0(推送标签到远程);

$ git push origin --tags(所有未推送的标签推送到远程);

$ git tag -d v1.0(删除标签);

$ git push origin :refs/tags/v0.9(删除推送到远程的标签);

$ git push origin -d tag v0.1(同上);

一、下载安装

1、github 搜索git for windows

2、选择第一个waylau/git-for-win

3、选择Git for windows Setup下载

4、下载完成后看到如下图标 双击安装

5、点击下一步

6、最后True Type font为可选项(字体)

7、点击下一步

8、此项无影响,默认勾选第一个

9、选择换行符风格

1)checkout为windows换行符,commit为Unix风格;

2)checkout时不做任何处理,commit为Unix风格;

3)文件的换行符不做任何处理;

10、选择MinTTY窗口,美观;

11、默认设置即可;

12、点击install安装;最后点击finish即可;

13、安装完成后开始菜单会看到;目录下shift+右键也会看到Git Bash 和Git GUI 选择Git Bash;

二、创建版本库

安装完成后打开git命令行输入:

$git config --global user.name  “ your name”

$git config --global user.email  “ 123456789@qq.com”  (你的邮箱地址)

因为git是分布式版本控制系统,每台机器都必须有自己的名字和邮箱;--global表示此设备上的所有Git仓库都会使用这个配置,也可以为不同仓库指定不同的用户名和email地址;

选择一个合适地方创建一个空文件夹

$ mkdir filename (创建一个空文件夹)

$ cd filename (进入该文件夹目录)

$ pwd (查看当前目录)

$ git init (将这个目录变成Git可以管理的仓库)出现如下信息表示创建成功,并为一个空仓库

Initialized empty Git repository in F:/learngit/learn/.git/

此时该目录下多了一个.git的隐藏目录,此目录是Git跟踪管理版本库的,切勿修改,可能会破坏Git仓库;此文件可以设置显示隐藏文件或者输入ls -ah命令查看;

在配置好的Git仓库目录下新建一个mygit.txt文件(名字随意),我使用的sublime,字符编码设置为utf-8;切勿使用windows文本文档(原因百度);

内容(随意):Git is a version control system.

Git is free software.

一定要放到配置的Git仓库文件目录下,不然Git找不到文件;

$ git add filename.txt

将文件添加到Git仓库;执行以上代码没有任何提示,表示添加成功,Unix哲学“没有消息就是好消息”;

添加文件可以一次添加多个(如:$ git add filename1.txt  filename2.txt)

将文件提交到仓库,输入如下命令:

$ git commit -m “wrote a mygit file” (-m后面是提交说明,建议输入一些有意义的内容,方便自己或者别人阅读)

上面提示告诉你一个文件改动(添加mygit.txt文件),插入两行内容(文件有2行内容)

$ git add 可以一次添加一个也可以添加多个文件,可反复多次使用,$ commit 一次将所有文件提交完成;

三、基本操作

Git is a distributed version control system.

Git is free software.

修改mygit.txt文件如上,命令行输入$ git status

$git status可以查看仓库当前的状态,上面告诉我们mygit文件被修改过,但是还没有被提交;

但$ git status不能查看具体被修改的内容,如果不记得上次怎么修改的mygit文件,可以使用$ git diff命令查看;

-为被删除的内容 +为新增内容 白色为未修改内容;

使用$ git add mygit.txt将修改过后的文件提交,没有任何提示

再次输入$ git status,最后一行提示将要被修改的文件包括mygit.txt

下一步使用$ git commit -m ”update mygit.txt”提交修改

一个文件被修改,插入一行,删除一行;

使用$ git status 查看当前状态

上面提示告诉你没有需要提交的修改,工作目录是干净的;

要随时使用git status掌握工作区状态,如果告诉你有文件被修改过,可以使用$ git diff查看

再次使用修改文件内容如下并保存:

Git is a distributed version control system.

Git is free software distributed under the GPL.

$ git add mygit.txt;

$ git commit -m “update twice”;

使用$ git log可以查看修改文件的信息(从近到远),如下:

也可使用$ git log --pretty=oneline,结果如下:

后面为commit -m“”引号中的说明(所以前面说到最好输入有意义的内容),前面为commit id,即为版本号(如下图);表示为当前版本;上一个版本为HEAD^,上上个版本为HEAD^^,上100个版本为HEAD100个^。。。(HEAD-100)

使用$ git reset --hard HEAD^ 回退到上一个版本:

使用$ cat mygit.txt查看当前版本内容为上一版本内容:

而你的文件里面也会变成这样:

使用$ git log查看,发现最新版本已经被删除:

如果第二天你突然又想恢复到前面最新的版本,这是你发现你已经找不到这个版本的commit id;你可以使用:$ git reflog

然后 $ git reset --hard 9899562

使用 $ cat mygit.txt 然后你的文件也会变成这样:

四、管理修改

将mygit文件修改,添加两段内容:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes.

依次使用$ cat mygit.txt ; $ git add mygit.txt ; $ git status输出如下内容:

然后再次修改mygit文件:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

输入$ cat mygit.txt 输出:

使用$ git commit -m “change threetimes” 提交修改,然后查看状态$ git status:

此处提示有未提交的修改balabala

输入$ git diff HEAD --mygit.txt 查看工作区(文件)和版本库(.git隐藏文件)中最新版本的区别:

此时文件中是这样:

而版本库中是这样:

可见第二次修改并没有被提交,因为git版本库分为暂存区和master分支,HEAD为指向master分支的指针即当前版本的指针,使用git修改文件时,git add是将文件添加到暂存区,而git commit -m是将暂存区的修改提交到master分支;

第二次修改时未add到暂存区,所以不会被提交。

所以正确的操作方式应该是:

第一次修改->add->第二次修改->add->commit;

五、撤销修改

git撤销修改分两种,第一种是没有add到暂存区,第二种是已经add到暂存区的,下面我们在mygit文件中添加一行(可用cat 命令查看):

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

oh shit.

此时修改未被add,可使用$ git checkout -- mygit.txt,这样修改就被撤销掉了:

如果修改后的文件已经被add,但没有commit,此时可使用$ git reset HEAD mygit.txt将文件从暂存区的修改撤销掉,如图1倒数第二行提示,$ git reset HEAD mygit.txt 后使用第一步的$ git checkout -- mygit.txt,即可将文件修改撤销,如图2:

六、删除文件

首先在工作区新建一个delete.txt文件,并且add commit:

使用rm delete.txt命令删除文件,此时你在工作区中已经看不到此文件,但是你使用git status命令,会出现如下提示:

此时分两种情况,误删或者确认删除:

如果是误删可使用$ git checkout -- delete.txt ,同时你发现文件回到了工作区:

如果确定要删除此文件在rm mygit.txt 之后输入 git rm mygit.txt 然后commit提交:

七、Github远程仓库

首先注册一个github账号,进入setting中的SSH KEY页面,在git bash中输入cd ~/.ssh查看是否有.ssh文件,如果有,输入ls -a会输出(下图),然后使用$ clip  <  ~/.ssh/id_rsa.pub,将文件内容复制到剪切板,如果没有.ssh文件,输入$ ssh-keygen -t rsa -C "youremail@example.com"(邮箱地址),然后一路回车,出现下图2:

按照前面操作执行:

在github SSH KEY页面中随便输入一个title,然后右键点击粘贴,提交,然后github远程仓库就配置成功了:

点击创建一个新的仓库,名字设为learngit,其他默认设置,点击创建:

根据github提示在本地learngit仓库输入如下命令:

$ git remote add origin git@github.com:lxh597/learngit.git(lxh597改为你的github账号名,用于关联远程库);origin为远程库名字,git默认;

然后:git push -u origin master

第一次push会出现提示:输入yes就ok了:

然后你的github上就会出现你上传的文件了:

说明:git push实际上是把当前分支master推送到远程,第一次推送master分支时,加上-u参数,git不但会把本地master分支推送到远程新的master分支,还会讲其关联起来,后面的推送或者拉区就可以简化命令;

现在只要本地做了提交,就可以通过$ git push origin master 把本地master分支推送到github

八、远程克隆

登陆github创建一个新的仓库,取名warehouse,勾选下方自动生成一个readme文件:

输入$ git clone git@github.com:lxh597/warehouse.git(注意修改账号名),cd进入查看:

九、分支管理

当你开发一个新功能而又不能在短时间内完成,这时你又不能提交未完成的文件,因为这样可能会使别人无法正常工作,如果代码全部写完再进行提交,又可能会有丢失进度的风险;

你可以创建一个属于你自己的分支,别人看不到,想提交就提交,等你把工作做完,再把这个分支合并到原来的分支上,这样既安全又不影响他人工作;

使用$ git checkout -b dev(创建一个名为dev的分支并切换至dev分支),相当于$ git branch dev,$ git checkout dev;使用$ git branch 查看当前分支:

在README文件中添加一行代码,然后add commit 提交:

切换回master分支:git checkout master,然后使用git merge dev将dev合并到当前分支,然后使用git branch -d dev删除dev分支:

上一篇下一篇

猜你喜欢

热点阅读