git的使用

1.首次使用

//用全局变量配置,只需配置一次,之后无需配置
git config --global user.name "your name"
git config --global user.email "your email"

若想查詢Git的配置信息,去掉用戶名和邮箱地址即可。

2.初始化

进入文件夹中创造Git仓库,比如进入一个空文件夹,然后终端输入:

git init
在这里插入图片描述

3.暂存

把工作区的文件暂存到.git仓库中

//单个文件
git add  文件名   //例如:git  add 12.txt
//文件夹内的全部文件
git add 文件夹名  //例如:(文件夹:app)git add app
//所有文件
git add .

4.提交代码

//"First Commit”是提交的描述信息,没有描述信息是不合理的。
git commit -m "First Commit"

4.1快捷提交文件

已经放进暂存区的文件,文件内容修改后如需快速提交,直接git commit -a -m "描述信息",直接完成暂存和提交两步操作。没有放进过暂存区的文件执行此操作将提示出现问题(例如:新创建的文件)。

5.查看文件修改情况

//查看文件修改状态
git status
Git会提示没有任何可提交的文件

改变文件内容后,再查看状态,运行:

git status
颜色显示为红色,说明工作区和暂存区的内容不一致

暂存之后, 再查看状态

git add .
git status
显示的颜色为绿色,说明暂存区和工作区的内容一致,但与历史版本的内容不一致。

把暂存区的内容提交上去,再次查看文件修改情况,结果为:

6.查看文件修改内容

修改后的文件未放进暂存区,才能查询到修改内容。(暂存区的文件和工作区修改后的文件做对比,查看添加或删除了什么内容)

//查看所有文件修改内容
git diff
//单个文件修改内容
git diff 根目录/子目录/文件名

7.撤回修改内容

原理:最后一次提交到暂存区的文件复制到工作目录,用来还原上一次保存在暂存区的内容。

前提:1.未通过add命令暂存,工作区将复原到上次暂存在Git中的内容;
2.通过add命令已经暂存,工作区和暂存区内容将相同,使用下面指令工作区将无任何改变。

//撤回单个文件
git checkout 根目录/子目录/文件名
//全部撤回
git checkout .

查看文件是否修改,并上传到暂存区,通过git status 查看,结果参照(5)中的结果反馈。

8.撤回放进暂存区的内容

修改后的文件提交到暂存区,工作目录和暂存区的文件内容将相同。执行checkout指令 ,工作区修改的内容将不变。文件现状:工作目录=暂存区 !=历史版本

下述有两种方法还原到修改前的内容,但必须是已经提交过历史版本。

方法一:
//通过reset方法,把HEAD指向的历史版本的内容复制到暂存区,
//然后再通过checkout指令把暂存区的内容复制到工作目录中。

git reset HEAD 根目录/子目录/子文件
git checkout 根目录/子目录/子文件
方法二:
//直接把HEAD指向的master分支,分支里的历史记录文件直接复制到暂存区和工作区中。

//所有文件复制到暂存区和工作区
git checkout HEAD .

//单个文件复制到暂存区和工作区
git checkout HEAD 12.txt

9.移除并删除文件

原理:git rm 命令,删除在工作区并连同暂存区中指定的文件(相当于执行过rm命令)。

(1)如果文件内容没做修改,且与暂存区里的文件内容相同。直接执行:

git rm 789.txt
git status
成功移除

(2)如果文件的内容修改后,文件未放进暂存区。要想删除文件,必须要用强制删除选项 ‐f ( 即 force 的首字母)才能删除文件,或者撤回到未修改的时候。

//强制删除my_file.txt文件指令
git rm -f my_file.txt 

10.只移除暂存区的文件

比如一些文件是放进.gitignore文件中的,但放进了暂存区,只需移除暂存区里的文件但不删除工作目录的文件:

git rm --cached 12.txt

11.查看历史提交信息

查看全部提交的历史记录

git log
查询结果

//只查看其中一条提交记录时,输入指定记录id,并加上-1参数
git log 79d6960251417875eeae464e65880ebeb7754409 -1
//查看具体修改内容,再加入-p参数:
git log 79d6960251417875eeae464e65880ebeb7754409 -1 -p

12.添加标签tag

需求:当需要切换版本或者查看版本修改信息时,直接用标签查询,更方便快捷

给主干上的最新的历史版本打上标签,运行:

//默认指针指向主分支,输入指令标签也是附在主分支
//标签可以任意名,只需简略
git tag Vs2

//1.给Vs2版本的上个版本打上Vs1:
git checkout Vs2^
//2.打上标签
git tag Vs1
//3.切换到主分支
git checkout master
//列出所有标签
git tag
//删除标签
git tag -d Vs2

13.分支的用法

需求:当完成代码后,建立分支的作用既不影响新功能的添加、页面修改又不影响之前版本出现BUG的修改和上线。

//查看当前版本库有哪些分支
git branch

master是主干线,且永远指向最后一次提交的记录,最开始代码都是保存在这里,HEAD指向的分支表示开发者所观看的分支里的内容。*号表示目前代码在哪个分支

创建分支:

git branch version1.0
//version1.0为分支名称,最好根据提交的版本命名

切换分支:

git checkout  分支名称/版本记录

新建或者修改文件后,如果没有在当前状态下(主干线或分支状态)执行add和commit命令,主干线和分支都可以看到修改的内容。必须add和commit指令添加到指定分支。在主干线master环境增加新功能后运行add和commit指令,主干线master修改后的代码不会和分支同步,同理在分支也是一样。在分支环境修改了bug,运行add和commit指令后,在主干线还是存在这个bug,必须在主干线上通过merge命令完成合并操作:

git checkout master      //---切换到主干线
git merge version1.0    //-----合并代码

合并分支可能出现代码冲突情况,静下心慢慢找出并解决。

14.删除分支

//version1.0是要删除的分支名称,并不是固定的名称。
git branch -d version1.0

15.区分checkout和reset的区别

git checkout  历史版本id

HEAD指向的分支,代表我们见到的代码(HEAD指向的分支里的代码才可见),可把HEAD切换到其他历史版本。通过上述指令可以在历史版本列表中切换到相应的分支查看之前提交的代码。但是主分支(master)的位置不会受影响,master指向的是最后一次提交的记录,即master指向的分支不会受HEAD的移动而移动。

上述指令不是创建新分支,只是切换到之前提交的历史版本中相应的分支,工作区和暂存区和历史版本的文件将会一致,(工作目录=暂存区=历史版本)可用来查看之前提交的相应代码。如果切换到历史版本,想在这份代码的基础上修改并提交上传,需要先创建新分支(新创建的分支是复制当前环境的代码),然后切换到新分支,才能进行修改并提交。否则在历史版本环境下修改代码将造成代码丢失。

//切换回主分支
git checkout  master
git reset 历史版本id

与checkout不同之处在于reset会将HEAD和master一起移动指向同个分支。如果不知道当前历史版本的记录id或者标记的tag,不要随意使用上述指令,否则切换不回原先的版本。

git reset --soft HEAD~

取消上传提交内容,暂存区和工作目录都没修改,只是移动了历史版本。

git reset --mixed HEAD~

历史版本返回到上一个,暂存区和历史版本一致,将与工作目录不一致。

git reset --hard HEAD~

16.与远程版本库的操作

获取远程版本库Git的地址

//可以使用命令将代码下载到本地
git clone https://github.com/example/test.git

之后在这份代码做了修改,同步到远程版本库的命令:


git push origin master

origin 部分指定的是远程版本库的Git地址,查询下面代码。 master部分指定同步到哪一个分支中

将远程版本库上的修改同步到本地


git fetch origin master

执行命令后,会将远程版本库上的代码同步本地,但不会合并到任何分支,会存放在origin/master分支上。

查看远程版本库上修改的东西


git diff origin/master

之后再调用merge命令将origin/master分支上的修改合并到主分支上


git merge origin/master

pull命令是相当于将fetch 和merge一起使用,它可以从远程版本库上获取最新代码并且合并到本地

git pull origin/master

17.Git与码云的远程连接

非本人所写,原文https://blog.csdn.net/Carlos_gloria/article/details/90714809


1 先注册一个码云账号,创建一个仓库,具体操作自行百度。

2.进入项目设置面板,有一栏是ssh 公钥,点击进入,填写标题,然后将生成的key填入,不知道怎么生成的话点击怎样生成公钥进入码云帮助平台。里面解释得很清楚。主要有以下几个步骤:

在本地git bash 中输入 ssh-keygen -t rsa -C 加你的邮箱地址(注册邮箱)

为了方便按三个回车全部默认, 创建成功会显示路径等其他信息

打开Git Bash, 生成公钥

添加到本地公钥


ssh-agent bash

ssh-add ~/.ssh/id_rsa

  1. 查看公钥内容

cat ~/.ssh/id_rsa.pub

复制公钥内容并配置到码云上

4.测试一下连接。


ssh -T -v git@github.com

yes 添加SSH 信任列表,成功的话会出现:You've successfully authenticated, but GitHub does not provide shell access.

报错的话,删除.ssh,再重新创建并添加公钥。(原因:本地公钥和服务器添的不匹配)

  1. 找到所创建的仓库的地址:
点击复制,将地址复制下来
  1. 关联远程项目地址:

git remote add origin git@git.com/......./Test

如果添加报错,fatal: remote origin already exists.
这说明本地库已经关联了一个名叫origin的远程库,此时,可以先用git remote -v查看远程库信息:


git remote -v

我们可以删除已有的GitHub远程库:


git remote rm origin

再关联码云的远程库(注意路径中需要填写正确的用户名):


git remote add origin  git@git.com/......./Test

SSH和HTTPS都可以,码云用SSH上传最好,用HTTPS上传会出现问题

  1. 如果远程git仓库里已经有文件或代码,可以先将其下载下来并合并本地代码,保证版本一致;如果是空的,可以不执行这一步。
git pull origin master

  1. 将项目上传到远程仓库

git push origin master

如果出错可以选择强制提交:


git push -u origin master -f

9.打开远程项目查看,项目代码上传成功。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容