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
跟github建立链接(电脑里面要安装git)
gitk 打开图形界面
git clone 地址
git status(看状态)
git add.(提交)
git commit -m ‘初始化项目’ (提交到本地)
git commit --amend 追加提交
git push(提交到服务器)
git push origin master -f 强制推送 or 我们只需加上 --rebase 参数然后再重新 push 一次即可
git pull origin master (拉取)
git push -u origin master 将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git fetch <远程主机名> <分支名> //这个命令将某个远程主机的更新全部取回本地

git pull
相当于
git fetch origin
git merge origin/master

git pull --rebase
相当执行:
git fetch origin
git rebase origin/master
合并方法更简单,更容易理解。但是很多时候我们更需要的是rebase

标签相关命令

1
2
3
4
5
6
git tag <name> 创建一个新标签
git checkout 标签名 切换标签
git tag -a v1.2 9fceb02 -m "my tag" 加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统会自动为你打开编辑器让你填写备注信息。给指定的某个commit号加tag
git push origin --tags 将tag同步到远程服务器
git push origin v1.0 将某个tag同步到远程服务器
git tag -d v0.1.2 删除标签

分支相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
git checkout -b 名称 创建一个分支并切换
git branch -d 名称 删除分支
git branch -D 名称 强制删除
git push origin --delete 名称 删除远程分支(慎用)
git checkout 名称 切换分支
git branch 查看当前目录下的所有分支
git push origin dev 提交到dev分支
git config branch.feature_20150713_hd-123.description 海南放款 给分支添加备注信息
git config branch.{branch_name}.description 查看
安装 npm i -g git-br 插件
git br 查看所有分支备注
git checkout -t origin/远程分支名 拉取远程分支并切换到该分支
git push -u origin (新创建的分支如果第一次push该分支后面需加-u origin是云端的别名 同时为云端也新建一个分支例如 goods_cate)
git merge 其他分支的名字 合并其他分支的代码
git rm -r --cached . 清缓存 (.gitignore 更新之后需要清缓存)

回退版本 查看日志

1
2
3
4
git log (查看提交历史)
git reset --hard 版本号 (回到某个版本)
git status(去除小程序文件后面的M)
git clean -df (强制清除)

git Add 参数

1
2
3
git add -A  提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

同时推送到多个仓库 (拉取的时候以默认的为准 这里也就是码云)

1
2
3
4
同时推送到多个仓库 (拉取的时候以默认的为准 这里也就是码云)
git remote add origin https://gitee.com/greyzeng/article.git (码云)
git remote set-url --add origin https://github.com/GreyZeng/article.git (github)
git push origin master

使文本文件保持原来的样子 不转义换行符

1
2
使文本文件保持原来的样子 不转义换行符
git config --global core.autocrlf false

提交项目时出现这个[master +7 ~0 -0 !] 的意思

image-20201201190627339

1
2
3
4
+ = Added files  // 添加的文件
~ = Modified files // 修改的文件
- = Removed files // 删除的文件
! = Conflicted files // 冲突的文件

ssh-server服务在修改了端口的情况下

怎么git clone 代码

其实很简单,原来的clone命令是这样的:

1
git clone git@XXX.com:username/resources.git

只需要把这个命令改成:

1
git clone ssh://git@XXX.com:8120/username/resources.git

注意有三个地方的改动

  • 增加了 ssh://

  • 增加了端口号

  • 把用户名前面的冒号改成了斜杠 /

想将dev分支合并到master分支,操作如下:

  • 首先切换到master分支上
1
git  checkout master
  • 如果是多人开发的话 需要把远程master上的代码pull下来
1
2
git pull origin master
//如果是自己一个开发就没有必要了,为了保险期间还是pull
  • 然后我们把dev分支的代码合并到master上
1
git  merge dev
  • 然后查看状态及执行提交命令
1
2
3
4
5
6
7
8
9
10
git status

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上
> 最后执行下面提交命令
git push origin master

合并时忽略文件,操作如下:

  • 工程目录下创建.gitattribute
1
2
3
info.plist merge = ours
xxx.h merge = ours
//有多个的话,依次排列即可
  • 执行 git config merge.ours.driver true
  • 注意 gitattribute方法生效是有条件的
    • gitattribute方法生效是有条件的,跟文件的修改顺序有关系,只有先修改的后来修改的合并的时候才会生效。这里的先后是指文件的最后修改时间,不是创建的时间,如果最近修改过,那它就是最新的,比如刚才的例子,我们修改了master分支的info.plist,而没有对另外两个分支下的info.plist进行修改,那么master分支下的info.plist就比另外两个分支新,这时候合并的时候,gitattribute就会失去作用,那么该如做呢,我们在修改完master分支后,需要再次修改另外两个分支下的info.plist配置文件,即使没啥可以改的,也要改(可以先改错,再改回去)这样我们master分支下的,就会仍然保持最旧。

006djwNZgy1gga4ak40e7j316h0u0n1q

Git 参考手册