目录
1.初始化指令:git init
2.跟踪文件指令:git add 文件名(也是将文件放到暂存区指令)
3.提交指令:git commit –m “说明信息”。给git commit –a,可以跳过使用暂存区域,这样就会自动把所有已经跟踪的文件暂存起来一并提交,从而跳过git add步骤。如:git commit –a –m ‘信息’
4.克隆指令:git clone url的路径自定义文件名(自定义文件名可以省略)
5.若要从远程仓库更新本机代码,可以使用gitfetch 和git pull
6.查看状态指令:git status
7.编辑指令:vim 文件名
8.进入要上传的github网站的仓库指令:git remote add origin 你的github仓库网址
9.上传到github或者服务器指令:git push origin master
10.查看未暂存的文件的更新指令:git diff。查看暂存起来的文件和上次提交之间的差别指令:git diff –cached
11.删除文件指令:git rm 文件名(直接在磁盘中删除)。git rm --cached (删除所有跟踪的文件缓存)。git rm --cached 文件名(删除指定文件的缓存,在git仓库中删除,但是依然存在在工作目录中)
12.查看日志指令:git log
13.git创建分支命令:git branch 分支名。
14.切换到分支命令:git checkout 分支名
15.创建一个分支branch_name并切换到该分支:git checkout -b 分支名
16.合并分支指令:git merge 分支名
17.删除分支指令:git branch –d 分支名(-d和-D有区别)
18.本机没有的分支获得服务器有的分支,可以使用指令:git checkout 服务器名/分支名 -b 分支名
19.回退到某一版本,git reset --soft 2版的md5
详细例子操作
一. 取得项目的Git仓库
1.右键一个工程,选择Git Bash Here

2.初始化指令:git init


3.添加跟踪文件指令:git add文件名(也是将文件放到暂存区指令)
git add.
这里的“.”代表添加整个当前目录
也可以使用 git add *.cpp 等添加特定的文件
4.提交指令:git commit –m ‘说明信息‘
git commit –m ‘initial project version’
方法2:从已有的仓库克隆出一个新的镜像
1.克隆指令:gitclone url的路径自定义文件名(自定义文件名可以省略)
在github网上找到的源码,点击如下按钮复制url
2.输入指令:
git clone git@github.com:waterbinbin/inversematrix.git
执行完后下载好工程
若要从远程仓库更新本机代码,可以使用git fetch和git pull
git fetch origin master
git merge git merge origin/master
或者直接使用
git pull origin master
二. 检查当前文件状态
1.查看状态指令:git status
从刚才“一”的方法1初始化的git仓库中,输入指令:git status,用于显示所有已跟踪和未跟踪的文件
说明没有跟踪文件以及没有任务文件在上次提交后更改过,也没有未跟踪的新文件。
2. 编辑指令:vim 文件名
vim /detectmemery/detectmemery.cpp
输入:i 插入内容
编辑完后按esc,然后输入“:wq”
vim中以#开头的都是注释
在vim控制台下,编辑完以后按Esc回到末行模式,再输入:w写入修改文件,输入:q退出vim回到bash
3.添加一个readme.txt,修改其中一个文件,查看状态
然后可以使用git add 来增加readme.txt的跟踪,使用git commit提交,操作如下:
git add ./detectmemery/readme.txt
git commit
可以输入#添加说明
Esc+:wq
git status
这里修改了cpp文件,但是commit之后还是提示这个文件修改了,原因是要重新git add 将跟踪的文件再次放到暂存区,再提交。之前修改后没有git add,文件时为暂存的。
git add ./detectmemery/detectmemery.cpp
git commit
git status
三.提交本地代码到GitHub网站上
1.打开自己的github网址,点击New repository
2. 填写项目的名字等信息,然后点Create repository
3.回到git bash界面
因为之前在“二”已经执行过git add 和git commit,因此不需要在如何,如果是将一个新的项目提交到网站,则:
(1)添加工程跟踪
git add .
(2)提交代码
git commit
(3)进入要上传的github网站的仓库指令:
git remote add origin 你的github仓库网址
这里第2步,点击了Create repository后,跳转的页面,点击如下按钮复制仓库的url。选择HTTPS和SSH都一样
git remote add origin https://github.com/waterbinbin/detectmemery.git
(4)上传到github或者服务器指令:git push origin master
git push origin master
(5)输入账号密码
(6)在git中也要输入自己以前在git设置的gobal的username和密码
(7)回到github网站查看上传结果
上传成功。
四.查看已暂存和为暂存的文件的更新指令
1.查看未暂存的文件的更新指令:git diff
再次修改readme.txt,但是不add暂存,使用git diff
2. 查看暂存起来的文件和上次提交之间的差别指令:git diff –cached
先暂存:
git add ./detectmemery/readme.txt
查看:
git diff –cached
3.上传
git commit
给git commit –a,可以跳过使用暂存区域,这样就会自动把所有已经跟踪的文件暂存起来一并提交,从而跳过git add步骤。
五.删除文件
删除文件指令:git rm文件名(直接在磁盘中删除)
git rm --cached :删除所有跟踪的文件缓存
git rm --cached 文件名:删除指定文件的缓存(在git仓库中删除,但是依然存在在工作目录中)
git rm --cached ./\*.pdf用来删除项目根目录下所有pdf文件的缓存
git rm \*~,会递归删除当前目录及其子目录中所有~ 结尾的文件。
六.查看日志
查看日志指令:git log
七. 忽略文件
1.在需要忽略文件的目录下添加.gitignore文件,本例子在如下目录添加忽略文件
2.自己定义的.gitnore文件的内容如下
可以通过指令cat 文件名 查看文件内容
cat ./ detectmemery/.gitignore
3.由于之前已经提交过忽略文件包含的文件,因此规则没有生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
4.git ignore匹配规则
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
5.更详细的全局忽略可以参考如下博客:
http://blog.youkuaiyun.com/benkaoya/article/details/7932370
八.Git分支
1.git创建分支命令:git branch分支名
git branch testdetectmemery
2.切换到分支命令:git checkout 分支名
git checkout testdetectmemery
3.再提交代码
在分支里添加了代码。
git add .
git commit
4.创建一个分支branch_name并切换到该分支:git checkout -b分支名
5.回到master分支,合并分支的指令:git merge分支名
git merge testdetectmemery
6.删除分支
删除分支指令:git branch –d 分支名
git branch –d testdetectmemery
7.github上的一个项目有master主干,和testdetect分支。由于本机只有这个项目的master主干,使得本机也获得github这个testdetect分支,可以使用指令:gitcheckout服务器名/分支名-b分支名
git checkout origin/testdetect -b testdetect
8.推送本地分支到服务器
git push (远程仓库名) (分支名)
九.回退到某一个版本
git log查看历史版本的md5串码,再git reset --soft [md5串码],回退以后,历史记录没有了,但新的文件还在;
如果用git reset --hard [md5串码],回退以后,新的文件也被删掉,完全回复历史版本。
举例:
比如提交了1、2、3三个版本,然后突然想回到2版修改些东西,但又不影响目前3版的进度,可以用命令
git reset --soft 2版的md5
回到2版未提交的状态,然后用命令
git checkout -b newbranch
新建一个分支,提交一次以后,切换回原来的分支,可以看到原来的分支已经完全回到2版的状态,再切回新分支,就是3版的状态
参考:http://www.tech126.com/git-reset/
例子:
1.原来版本的文件如下
2.增加一个文件
3.然后提交
4.查看日志
由3知道,我们刚提交的版本是第一个包含日志“testresetadd”,我们要回退到这个版本的前一个版本,即日志为(testreset2)这个大箭头所指的md5码。
5.回退
6.创建新分支
7. 然后提交
8. 切换到原来的分支,就是旧版的内容了
9.切回新建的分支,就是不受影响的新版
十.如何将历史的提交合并?
用git rebase -i head~3命令,3代表要合并最近的三次提交,然后弹出一个编辑框,将最上面几行的文字的开头的pick修改成s,最旧的一次提交不用改,然后按esc,再输入:w,执行以后会弹出修改“提交描述”的地方,不编辑的话就直接按:q退出执行。