Git命令行常用基础操作

目录

 

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仓库

方法一:在现存的目录下,导入所有文件创建新的Git仓库
 

1.右键一个工程,选择Git Bash Here

 

2.初始化指令:git init

工程里多了个.git的文件夹

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 fetchgit 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退出执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值