linux下 git相关操作和基本详细命令

git 是一款强大的版本控制系统软件,git可以在没有网络的情况下也可以提交(因为git是分布式的)

一、关于软件安装

1、首先查看是否以及安装了git:
rpm -qa | grep xxx 查询某个安装包
rpm -ql xxx :查询某个包安装路径
或者直接在终端敲git,如果已经安装会提示你命令使用方法。

2、linux下安装:
sudo yum install git

3、设置当前用户信息

$ git config --global user.name "账户名"   
$ git config --global user.email  邮箱号码

查看配置是否成功(去掉最后的名字和邮箱即可)
用于在查询历史的时候文件显示由谁修改过。

二、基本操作:

1、创建仓库:
初始化、创建代码仓库(创建好项目之后,进入项目根目录)

$ git init 

Initialized empty Git repository in /home/vnfm/当前目录/.git/ 

创建成功后用命令ls -a可以查看到出现了隐藏文件.git

2、添加并提交文件到仓库:

$ git add text.txt

$ git commit -m "write text.txt" 

1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 text.txt

-m后面是注释的内容,告诉别人自己修改了什么。

添加文件/文件夹/所有

git add AndroidManifest.xml //添加单个文件
git add src //添加文件夹
git add . //添加所有

3、修改文件:
对每个文件修改后用git status可以查看当前每个文件的状态。

运行git status,提示我们已经被修改过了,但是没有提交。

查看修改具体内容:
用命令git diff可以用来查看修改了什么内容。

只查看某个文件的修改:

git diff src/com/example/providertest/MainActivity.py

修改以后再次添加并提交:

$ git add text.txt 
$ git commit -m "modified the text.txt by 用户 on july 6th" 
[master fc82b20] modified the text.txt by 用户 on july 6th 
1 files changed, 1 insertions(+), 1 deletions(-) //这里提示一增一减

再一次查看status:

$ git status 
\# On branch master 
nothing to commit (working directory clean) //告诉我们没有需要提交的东西

查看历史修改情况(修改时间,修改人):
用git log查看历史修改情况


$ git log 

前面的字符是用16进制的数表示版本号

加上-1 参数表示我们只想看到一行记录
如果想要查看这条提交记录具体修改了什么内容, 可以在命令中加入-p参数

这样看清来有点乱,我们用命令git log --pretty=oneline可以减少输出信息。

4、回退到之前的版本:
查看当前版本:

$ git reset --hard HEAD 
HEAD is now at 0998adb add text2 and modify text by yangni 

退到上一个版本:

$ git reset --hard HEAD^^ 
HEAD is now at 7c97a69 write text.txt

HEAD表示当前版本,HEAD^^ 表示上一个版本,同理HEAD^^表示上上个版本。。。。不过这样太麻烦。所以如果要往上回退100个版本,则写成 HEAD~100

也可以通过git log查看id直接指定回到哪:(id号可只取前两位,为了避免相同,可以多取几位)

$ git log 
$ git reset --hard id号 

回滚实例

10049  git log
10050  git reset --soft e553333dba2d5b659a36e16a5af776cc5ae296dd
10051  git branch -a
10052  git push origin meo_app
10053  git push origin meo_app --force

上面的方法有些弊端,因为git log只能查看近几次的id,如果关掉电脑或者要回退到很久之前的版本就无法实现了。所以下面提供更实用的方法:

Git提供了一个命令git reflog用来记录你的每一次命令

$ git reflog 
7c97a69 HEAD@{0}: HEAD^^: updating HEAD 
0998adb HEAD@{1}: commit: add text2 and modify text by yangni 
fc82b20 HEAD@{2}: commit: modified the text.txt by yangni on july 6th

$ git reset --hard id号//这里id号必须写完整

注:(这里每个圈代表一个版本)

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

5、管理修改:
git add是把文件的某次修改放入暂存区,所以修改以后必须先add再提交才生效。

git diff HEAD -- xxx命令可以查看对于某个文件来说,工作区和版本库里面最新版本的区别:

撤销修改:
(1)只是修改,并没有添加:
所以可用git checkout -- file来恢复修改之前的模样 (–后面有个空格) ,其实是用版本库里的版本替换工作区的版本(一键还原)

$ git checkout -- text.txt 

(2)已经添加,还未提交:
用 git reset HEAD 文件名 恢复到提交之前:

$ git reset HEAD text.txt 

6、删除文件:
(1)直接rm:

$ rm text2.txt 
$ git status

git会告知你删除了哪个文件:

用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。

所以如果用rm误删以后,可以很快用命令git checkout – file找回。。 但是git commit -m " "提交的时候,并不会将删除操作提交上去。

所以如果想要提交删除操作,让文件在版本中删除,必须要用-am提交

$ git commit -am " " 

(2)用git rm删除
用 git rm 来删除文件,同时还会将这个删除操作记录下来,提交以后直接可以从版本中删除。

总结一下删除的两种方法:
在被 git 管理的目录中删除文件时,可以选择如下两种方式来记录删除动作:

rm + git commit -am "abc"
git rm + git commit -m "abc"

三、关于分支

  1. 查看分支及全部分支
git branch 
git  branch -a
  1. 创建分支
git branch  version1.0
  1. 切换所在分支:
git checkout version1.0
  1. 合并分支:(首先切换到master分支,然后执行合并)
git checkout master
git merge version1.0
  1. 删除分支:
git branch -D version1.0
  1. clone仓库 (假设远程版本库的Git地址是: https://github.com/exmaple/test.git)
git clone https://github.com/exmaple/test.git
  1. 本地修改同步到远程版本库: 其中 origin 部分指定的是远程版本库的 Git 地址,master 部分指定的是同步到哪一个分支上,下面命令就完成了将本地代码同步到 https://github.com/exmaple/test.git 这个版本库的master分支上的功能。
git push origin master

8. 将远程版本库上的修改同步到本地: 分别是 fetch 和 pull

 git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放在到一个origin/master分支上,这时我们可以通过 diff命令来查看远程版本库上到底修改了哪些东西:

git diff origin/master

之后再调用 merge 命令将 origin/master 分支上的修改合并到主分支上即可,如下所示:

git merge origin/master

pull 命令则是相当于将 fetch 和 merge 这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master

相关命令

10030  git branch 
10031  git pull
10032  git diff
10033  git diff --color MEO/MEO.py 
10034  git pull
10035  git add MEO/MEO.py 
10036  git commit 
10037  git push
10038  git pull
10040  git add  MEO/MEO.py 
10041  git commit
10042  git push
10043  git pull
从下拉到发现冲突 解决冲突,再次提交
 9912  git pull
 9982  git diff --color |grep diff
 9983  git diff --color MEO.py 
 9984  git diff --color |grep diff
 9985  git diff --color RestHttpInteraction/receive/web/vnf/interactive_with_db.py
 9986  git diff --color |grep diff
 9987  git diff --color RestHttpInteraction/receive/web/vnf/vnf_resources.py
 9997  git diff --color |grep diff
 9998  git diff --color RestHttpInteraction/receive/web/vnf/interactive_with_db.py
10000  git diff --color RestHttpInteraction/receive/web/vnf/interactive_with_db.py
10049  git add flavor.py
10050  git commit
10051  git push

如果有冲突,要先 git pull 与远端保持一致
在这里插入图片描述
手工删掉冲突
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值