Git的常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
git init
git config user.name xxx
git config user.email xxx@qq.com
git config --global user.name xxx
git config --global user.email xxx@qq.com
git status
git add [filename]
git commit -m "commit message" [file name]
git log
git log --pretty=oneline
git log --oneline
git reflog
git reset --hard [局部索引值]
git reset --hard HEAD^
git reset --hard HEAD~1
git diff [文件名]
git diff [本地库中的历史版本] [文件名]
git branch [新建的分支名]
git branch -v
git checkout [要切换的分支名]
git merge [有新内容的分支名]
git remote -v
git remote add [别名] [远程地址]
git push [别名] [本地分支名]
git clone [远程地址]
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]
ssh-keygen -t rsa -C GitHub用户的邮箱
git remote add origin_ssh [远程仓库的ssh地址]

1.git init

  • 使用git init命令, 初始化本地库.

Git_GitHub_02_01

  • 注意: .git 目录中存放的是当前项目的本地库相关配置, 不要删除, 也不要胡乱修改.

2.git config

  • 设置签名.
  • 设置当前项目的签名信息:
1
2
git config user.name crainyday
git config user.email crainyday@qq.com
  • 设置好后, 签名信息保存在当前项目的.git/config文件中:

Git_GitHub_02_02

  • 设置全局签名, 使用: git config --global, 即可.

Git_GitHub_02_03


3.查看状态、追踪、提交

git status

  • 查看工作区、暂存区状态.
  • 新建一个文件, 再使用git status命令:
1
2
3
touch hello.txt
ls
git status

Git_GitHub_02_04

  • 状态信息: 检测到一个未跟踪的文件. 提示你使用git add <filename>建立跟踪.

git add

  • 使用git add [filename]建立文件的跟踪.
  • 将工作区的"新建/修改"添加到暂存区.

Git_GitHub_02_05

git commit

  • 使用git commit -m "提交的消息" [filename], 将暂存区的内容提交到本地库.

Git_GitHub_02_05

  • 同样, 可以直接使用git commit将文件提交到本地库并在暂存区建立跟踪.
  • 这样做的前提是: 你之前已经对该文件用过了git add命令.

Git_GitHub_02_06


4.查看文件历史

git log

①不带参数

  • 直接使用git log, 查询打印文件历史记录最详细的信息.
  • 注意: 只会显示当前"HEAD"指针之前的历史记录, 可以对比后边的git reflog命令.
  • 多屏控制:
    • 空格向下翻一页.
    • b向上翻一页.
    • q退出查看历史.

Git_GitHub_02_07

②带–pretty参数

  • 使用git log --pretty=oneline命令, 将一个历史显示为一行, 并显示全部索引值.
  • 注意: 只会显示当前"HEAD"指针之前的历史记录, 可以对比后边的git reflog命令.

Git_GitHub_02_08

③带–oneline

  • 使用git log --oneline命令, 将一个历史显示为一行, 并显示局部索引值.

Git_GitHub_02_09

git reflog

  • 显示当前本地库所有的文件历史记录, 只显示局部索引值、HEAD@{n}、提交时的消息.

  • 其中: xxxxxxx HEAD@{n} 表示移动到xxxxxxx版本需要移动HEAD指针n步.

Git_GitHub_02_10


5.git reset

–hard参数

  • git可以在各个本地库版本之间穿梭的本质: "HEAD"指针的操作.

  • ①使用局部索引值修改HEAD指针:

1
git reset --hard [局部索引值]
  • ②使用^符号修改HEAD指针, 只能后退到之前的版本:
1
2
# 一个^后退一步,n 个后退 n 步
git reset --hard HEAD^
  • ③使用~符号加数字修改HEAD指针, 只能后退到之前的版本:
1
git reset --hard HEAD~n

reset命令的三个参数

  • ①–soft 参数

  • 只会在本地库移动 HEAD 指针

  • 不会改变暂存区和工作区内容.

  • ②–mixed 参数

  • 在本地库移动 HEAD 指针

  • 并重置暂存区

  • 但不会改变工作区内容.

  • ③–hard 参数

  • 在本地库移动 HEAD 指针

  • 并重置暂存区

  • 并重置工作区

一般来说, 只会用到 --hard 参数.

git reset的应用

  • 找回已经删除了的文件.

  • 前提: 删除该文件前, 文件存在时的状态提交到了本地库.

  • 命令: git reset --hard [指针位置]

  • ①若删除操作已经提交到本地库, 指针位置为之前的历史记录的局部索引值.

  • ②若删除操作尚未提交到本地库, 指针位置直接填入HEAD即可.


6.git diff

  • 用于比较文件之间的差异.

  • git diff [文件名]

  • 将工作区中的文件和暂存区进行比较.

  • git diff [本地库中历史版本的局部索引值] [文件名]

  • 将工作区中的文件和本地库历史记录进行比较.

不带文件名则比较多个文件.


7.分支管理

分支操作

  • ①创建分支
1
git branch [要创建的分支名]
  • ②查看分支
1
git branch -v
  • ③切换分支
1
git branch checkout [要切换到的分支名]

Git_GitHub_02_11

  • ④强制删除分支
1
git branch -D [要删除的分支]
  • ⑤查看git branch的帮助
1
git branch -help

合并分支

  • ①切换到被合并分支(你要修改的分支)
1
git checkout [被合并分支名]
  • ②使用merge命令合并分支(不会删除)
1
git merge [合并分支名]
  • ③若无冲突, 则会成功合并; 否则, 需要解决冲突.如下图:

Git_GitHub_02_12

解决冲突

  • 冲突的表现:

Git_GitHub_02_13

  • 解决步骤:

  • ①编辑有冲突的文件, 删除特殊符号.

  • ②修改文件到你满意的程度, 保存退出.

  • ③使用git add [文件名]命令, 添加冲突文件到暂存区.

  • ④使用git commit -m "日志信息"命令, 提交冲突文件到本地库即可.

注意: 第④步中, commit 时一定不能带具体文件名.


8.和远程库相关操作

创建远程库地址别名

  • 前提: 确保你在代码托管中心申请了账号, 并创建了一个远程仓库, 得到了远程仓库的HTTP地址.
1
2
3
4
# 添加远程库
git remote add [远程库别名] [远程库地址]
# 查看当前项目的远程库地址及别名
git remote -v

Git_GitHub_02_14

Push

  • 即, 推送本地库到远程库.
1
git push [要推送到的远程库别名] [要推送的本地分支]

Git_GitHub_02_15

Git_GitHub_02_16

Clone

  • 即, 克隆远程库到本地库.
1
git clone [远程库地址]

Git_GitHub_02_17

  • git clone的效果:
  • ①完整的把远程库内容下载到本地.
  • ②创建 origin 远程地址别名, 指向你克隆的地址.
  • ③初始化本地库(相当于执行了git init命令).

Pull

  • 即, 拉取远程库内容到本地.

  • 若是多人协作开发的话, 你需要从远程库"Pull"别人更新的代码.

  • pull命令, 其实可以拆分为: fetch+merge命令.

1
2
3
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]
  • merge的时候, 可能会产生冲突, 若产生冲突, 参照解决冲突即可.

注意: 有一些远程库, 若是本地库的修改不是基于远程库的最新版所做的修改, 不能Push, 必须先Pull. 解决冲突后, 再Push. 例如: GitHub远程库等.


9.使用SSH

  • ①进入当前用户的家目录.
1
cd ~
  • ②删除之前的.ssh 目录.
1
rm -rf .ssh
  • ③运行命令重新生成.ssh密钥目录. 注意: 大写-C
1
2
ssh-keygen -t rsa -C [你的代码托管中心的账户邮箱]
# 输入完上面命令后, 一直按回车确认即可.

Git_GitHub_02_18

  • ④进入.ssh目录查看文件id_rsa.pub文件内容, 得到SSH密钥.
1
2
3
cd .ssh
ll
cat id_rsa.pub

Git_GitHub_02_19

  • ⑤复制id_rsa.pub文件内容.

  • ⑥登录你的代码托管中心, 新建一个SSH密钥, 添加上即可. 下面是Gitee的, 其他类似.

Git_GitHub_02_20

  • ⑦得到你的远程库的SSH地址并复制, 不要HTTP的.

Git_GitHub_02_21

  • ⑧添加远程库的SSH地址别名:
1
git remote add origin_ssh git@gitee.com:CRainyDay/test.git
  • ⑨Push文件进行测试.

Git_GitHub_02_22


评论