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 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
- 查看公钥内容
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,再重新创建并添加公钥。(原因:本地公钥和服务器添的不匹配)
- 找到所创建的仓库的地址:
- 关联远程项目地址:
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上传会出现问题
- 如果远程git仓库里已经有文件或代码,可以先将其下载下来并合并本地代码,保证版本一致;如果是空的,可以不执行这一步。
git pull origin master
- 将项目上传到远程仓库
git push origin master
如果出错可以选择强制提交:
git push -u origin master -f
9.打开远程项目查看,项目代码上传成功。