工丨入职了不温习一下Git?

1,155 阅读7分钟

1.基础使用

1.1.项目已在远程仓库

1.1.1.克隆项目代码(默认在主分支上)
  • 使用命令:git clone 项目远程地址
  • 使用方式:通过cmd进入存放项目本地目录,然后执行命令
  • 示例命令:
G:\test>git clone 项目远程地址
Cloning into 'ProjectDemo'...
remote: Enumerating objects: 6639, done.
remote: Counting objects: 100% (6639/6639), done.
remote: Compressing objects: 100% (4583/4583), done.
remote: Total 6639 (delta 2891), reused 4792 (delta 1747)/s
Receiving objects: 100% (6639/6639), 70.59 MiB | 1.95 MiB/s, done.
Resolving deltas: 100% (2891/2891), done.
Checking out files: 100% (3415/3415), done.
1.1.2.查看远程分支和本地分支状态(注意要进入项目目录)
  • 使用命令:git branch //查看本地分支状态
  • 使用命令:git branch -a //查看远程分支状态
  • 示例命令:
//查看本地分支状态
G:\test\ProjectDemo>git branch
* master
//查看远程分支状态
G:\test\ProjectDemo>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-test
  remotes/origin/master
  remotes/origin/test1
  remotes/origin/test2
1.1.3.创建本地分支并跟踪远程分支(dev-test为分支名)
  • 使用命令:git checkout -b dev-test origin/dev-test
  • 注意事项:最好本地分支和远程分支名称相同
  • 命令示例:
G:\test\ProjectDemo>git checkout -b dev-test origin/dev-test
Checking out files: 100% (1291/1291), done.
Switched to a new branch 'dev-test'
Branch 'dev-test' set up to track remote branch 'dev-test' from 'origin'.
1.1.4.查看分支跟踪情况
  • 使用命令:git branch -vv
  • 命令示例:
G:\test\ProjectDemo>git branch -vv
* dev-test d62efae [origin/dev-test] ......
  master    e1b4220 [origin/master] ......

1.2.第一次推送到远程

1.2.1.初始化仓库
  • 在远程创建一个空仓库
  • 进入项目目录使用指令git init初始化本地仓库
E:\AndroidProject\BaseAndroid>git init
Initialized empty Git repository in E:/AndroidProject/BaseAndroid/.git/
1.2.2.配置仓库用户信息
  • 使用指令git config user.name "你的名称"git config user.email "你的邮箱"
  • 示例:
//用户名
E:\AndroidProject\BaseAndroid>git config user.name "NightRain"
//用户邮箱(和远程仓库绑定邮箱对应)
E:\AndroidProject\BaseAndroid>git config user.email "你的邮箱"
1.2.3.将本地项目添加到本地仓库
  • 使用指令:git add .
  • 命令示例:
E:\AndroidProject\BaseAndroid>git add .
1.2.4.将本地项目提交到本地仓库
  • 使用指令:git commit -m "提交说明"
  • 命令示例:
E:\AndroidProject\BaseAndroid>git commit -m "初始化项目"
[master (root-commit) f43c196] 初始化项目
 40 files changed, 809 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/compiler.xml
 create mode 100644 .idea/gradle.xml
 create mode 100644 .idea/jarRepositories.xml
 ......
1.2.5.关联远程仓库地址
  • 使用指令:git remote add origin
  • 命令示例:
E:\AndroidProject\BaseAndroid>git remote add origin https://github.com/NightRainDream/BaseAndroidProject
1.2.6.推送项目到远程仓库
  • 使用指令:git push -u origin master
  • 命令示例:
  • 如果远程有文件,先执行git pull --rebase origin master
E:\AndroidProject\BaseAndroid>git push -u origin master
Enumerating objects: 73, done.
Counting objects: 100% (73/73), done.
Delta compression using up to 8 threads
Compressing objects: 100% (54/54), done.
Writing objects: 100% (73/73), 132.13 KiB | 5.29 MiB/s, done.
Total 73 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/NightRainDream/BaseAndroidProject
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

2.常用指令

2.1.基本配置相关

命令说明
git config --global user.name "your name"修改Git昵称(全部仓库)
git config user.name "your name"修改Git昵称(当前仓库)
git config --global user.email "your email"修改Git邮箱(全部仓库)
git config user.email "your email"修改Git邮箱(当前仓库)
git config user.name查看Git昵称
git congig user.email查看你Git邮箱

2.2.分支相关

命令说明
git branch查看本地分支
git branch -a查看所有本地和远程分支
git branch -d dev删除本地分支dev
git branch -vv查看本地分支和远程分支跟踪情况
git branch new_dev创建一个名为new_dev的分支
git checkout new_dev切换到new_dev分支
git checkout -b new_dev创建new_dev分支并切换到此分支
git checkout -b dev origin/dev创建dev分支并跟踪远程dev分支
git merge dev将dev分支合并到当前分支

2.3.标签相关

命令说明
git tag查看所有标签
git tag v1.0.0打v1.0.0标签
git show v1.0.0查看v1.0.0标签信息
git log查看提交日志和提交ID

2.4.提交相关

命令说明
git add .将当前目录添加到git索引库
git commit -m "提交说明"将索引库项目提交到本地仓库
git status查看项目状态(是否有需要操作之类)
git reset --hard ID回复到某个提交的位置

2.5.远程推送相关

命令说明
git push将本地仓库推送到远程仓库
git pull从远处仓库更新代码到本地
git push origin v1.0.0推送v1.0.0标签到远程仓库
git push origin dev将本地dev分支推送到远程仓库
git push --set-upstream origin dev将dev分支与远程dev分支进行关联
git remote -v查看远程仓库地址
git remote rm origin移除关联的远程仓库地址
git remote add origin ....com关联远程仓库地址
git remote set-url origin ....git切换远程仓库地址到....git
git fetch更新远程分支(在远程建立分支,本地没有显示)

3.SSH配置

3.1.查看是否配置SSH

  • 进入Git Bash Here执行 cd ~/.ssh如下:
//未创建
$ cd ~/.ssh
bash: cd: /c/Users/NightRain/.ssh: No such file or directory
//已创建
$ cd ~/.ssh
电脑名@DESKTOP-FJBJ7UB MINGW64 ~/.ssh
  • 执行 ll查看已创建SSH密钥,如下:
电脑名@DESKTOP-FJBJ7UB MINGW64 ~/.ssh
$ ll
total 5
-rw-r--r-- 1 电脑名 197121 2610  2月  3 00:07 id_rsa
-rw-r--r-- 1 电脑名 197121  575  2月  3 00:07 id_rsa.pub

3.2.创建SSH

  • 执行ssh-keygen -t rsa -C '你的邮箱',如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/电脑名/.ssh/id_rsa):
Created directory '/c/Users/电脑名/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/电脑名/.ssh/id_rsa
Your public key has been saved in /c/Users/电脑名/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:VdnA8qrEMURmAVSPiBpSJ1Pq2yj/q6PRvBGwZqQ74iw 邮箱
The key's randomart image is:
+---[RSA 3072]----+
|  +.o.o+*. .o+   |
| . = . +.o..o .  |
|o.o . ... oo     |
|o= o    o.  .    |
|oo+    .So .     |
|o+ =    o .      |
|* * .  . .       |
|E=.o    .        |
|o+++o.           |
+----[SHA256]-----+
  • 执行t ~/.ssh/id_rsa.pub 查看生成的公钥,如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5ShALaLp0CIQM4KzLEFyzQakMBlTZxk0RTylEJGD7zuSQwsZJU4osP+zJQKnafOZiLlP5OrUXJeoYVlVwuxpvEgYx+A15Hn1xZPUwPwR4E0txu07z1EtO2vhPYpE5Et/viN6S0hCTqiMc0qvDBdT5FMmBN6D4F/qevmy4FJ+BGpv1RdCLj/DAQyTT8uHcmc1UyjLgZzA0tCjnIc+g/M7rcG1FOiRAaanQsn7xHu+LVnvRN1IACANHLxPsHBzVyVZik3N2/+p7j6AH3CL/GouAkDLLpcS+50qkuKvSHdyqgOMnYyDZ56sqqXpjyR4vDbmlBK7Q1vc32DnYX+h9715/kiwuNItjORleztuN8QyYbkU16woxigz+A9h7FujxD4ipJXKUwNCgRiaGR7Jogx5RHZz/+jLiGH6lNMYMVdukkNSrWjVWZvocAthhL3pQJIwfoD3bCzZvNoyWQCx/xmAEk3zNbmI8xhZjMdB9kupLacN0IHn8PNCB4Uwkm782sT0= Night.Qin@outlook.com

3.3.测试是否配置成功(Github)

  • 执行ssh -T git@github.com 根据提示查看是否配置成功

4.常见问题

  • 设置忽略文件后一直不起作用 答:进入Git项目目录后执行以下命令
git rm -r --cached . 
git add . 
git commit -m "update .gitignore"
  • 为什么将本地分支推送到远程后无法直接推送代码? 答:需要将本地分支和刚才推送的远程分支进行关联后才可以推送。使用git push --set-upstream origin dev即可将本地dev分支和远程dev分支进行关联。

  • 为什么将本地分支推送到远程后无法直接推送代码? 答:需要将本地分支和刚才推送的远程分支进行关联后才可以推送。使用git push --set-upstream origin dev即可将本地dev分支和远程dev分支进行关联。

  • 为什么远程有了新的分支,本地使用git branch -a无法查看到? 答:使用git fetch更新一下即可。

  • 为什么Git所关联的远程账号在推送代码的时候不显示远程账号的头像和昵称? 答:可能是因为本地Git所设置的邮箱可关联远程账号的邮箱不一致。修改本地Git的邮箱与远程账号的邮箱一致即可。

  • Window配置SSH一直失败? 答:在Github配置SSH公钥后,使用ssh -T git@github.com一直提示Host key verification failed.。试着执行ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts后在查看