安装
下载
下载地址
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序!
配置
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
设置/修改用户名和地址
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
查看用户名和地址
$ git config user.name
$ git config user.email
常用命令
1)、cd : 改变目录。
2)、cd . . 回退到上一个目录,直接cd进入默认目录
3)、pwd : 显示当前所在的目录路径。
4)、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)、mkdir: 新建一个目录,就是新建一个文件夹。
8)、rm -r : 删除一个文件夹, rm -r src 删除src目录
rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10)、reset 重新初始化终端/清屏。
11)、clear 清屏。
12)、history 查看命令历史。
13)、help 帮助。
14)、exit 退出。
15)、#表示注释
基本理论(重要)
-
Workspace:工作区,就是你平时存放项目代码的地方
-
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
-
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
-
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
git项目搭建
- 本地仓库搭建
在当前目录新建一个Git代码库
$ git init
执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
- 克隆远程仓库
克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git
分支
创建与合并
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并指定分支到当前分支:git merge <name>
删除分支:git branch -d <name>
冲突
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
git log --graph命令可以看到分支合并图
Git文件操作
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
git add . 添加所有文件到暂存区
git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件。
输错退出
ctrl+c或ctrl+z
查看工作区的状态
$ git status
$ git diff #是工作区(work dict)和暂存区(stage)的比较
$ git diff --cached #是暂存区(stage)和分支(master)的比较
$ git diff HEAD #查看工作区和版本库里面最新版本的区别
遇到的一些问题及解决:
- 创建版本库的默认目录,其父目录含有中文,为避免莫名其妙的问题,切换版本库目录:
git切换到指定目录
$ cd /e/remote
- git被另外一个程序占用解决:进入项目文件夹下的 .git文件中(显示隐藏文件夹或rm .git/index.lock)删除index.lock文件即可
rm .git/index.lock
-
git log显示的内容可能会比较多,但git bash上显示不下时,最下面会有一个冒号:,指示还有更多的内容,这是通过上下箭头就可以选择内容进行查看,要退出按q键即可,要查看其他命令,按h键。
-
git commit 时没有加 -m“ message”的提示信息就跳到了另外一个界面?
git commit 不输入 -m 以及后面的内容会进入vim模式
vi & vim 有两种工作模式:
(1) 命令模式:接受、执行 vi & vim 操作命令的模式,打开文件后的默认模式;
(2) 编辑模式:对打开的文件内容进行 增、删、改 操作的模式; 在编辑模式下按下 ESC 键,回退到命令模式。
创建、打开文件:$ vi [filename]
(1)使用 vi 加 文件路径(或文件名)的模式打开文件,如果文件存在则打开现有文件,如果文件不存在则新建文件,并在终端最下面一行显示打开的是一个新文件。
(2)键盘输入字母 “i”或“Insert”键进入最常用的插入编辑模式。
保存文件:
(1)在插入编辑模式下编辑文件。
(2)按下 “ESC” 键,退出编辑模式,切换到命令模式。
(3)在命令模式下键入"ZZ"或者":wq"保存修改并且退出 vi 。
(4)如果只想保存文件,则键入":w",回车后底行会提示写入操作结果,并保持停留在命令模式。
放弃所有文件修改:
(1)放弃所有文件修改:按下 “ESC” 键进入命令模式,键入 “:q!” 回车后放弃修改并退出vi。
(2)放弃所有文件修改,但不退出 vi ,即回退到文件打开后最后一次保存操作的状态,继续进行文件操作:按下 “ESC” 键进入命令模式,键入 “:e!” ,回车后回到命令模式。 -
关于git diff
git diff #是工作区(work dict)和暂存区(stage)的比较 git diff --cached #是暂存区(stage)和分支(master)的比较 git diff HEAD #查看工作区和版本库里面最新版本的区别 -
关于撤销修改
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。或者git restore <file>
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD <file>
或者git restore --staged <file>
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,
git reset --hard HEAD^
参考版本回退一节,不过前提是没有推送到远程库。
- 远程仓库之查看SSH公匙
cd ~(进入用户主目录) cd .ssh(进入.ssh目录) ls(列出.ssh目录的文件,可以看到id_rsa id_rsa.pub两个文件) cat ~/.ssh/id_rsa.pub(可以看到id_rsa.pub文件的内容,复制即可) ls
命令就是list的缩写?缺省下ls用来打印出当前目录的清单,ls -ah
打印出包括./ …/ 和隐藏目录。- Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
https协议克隆远程仓库:git clone https://github.com/karagrade/gitskills
ssh协议克隆远程仓库:`git clone git@github.com:karagrade/gitskills.git - 对于所有分支而言, 工作区和暂存区是公共的。所以会遇到git 切换分支时会把未add或未commit的内容带过去这种情况。
参考:git 切换分支时会把未add或未commit的内容带过去