生成公钥
ssh-keygen -t rsa -C "youremail@example.com"
配置用户名
全局配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
局部配置
git config user.name "Your Name"
git config user.email "email@example.com"
查看提交记录
git log 命令显示从最近到最远的提交日志, 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline 参数:
git log --pretty=oneline
Git时光机
回退到某一个提交版本
版本号没必要写全,前几位就可以了,Git会自动去找。
当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
// 例如
git reset --hard e655927bcfaf5c71e850abdacca1f8565fef666e(提交版本号)
// 可以这么写
git reset --hard e6559
回退版本后返回未来
1、查看所有提交记录
git reflog
// 输出
d1d1d7e HEAD@{3}: commit: fix some bug
bea1f89 HEAD@{4}: commit: 删除无用文件,增加登录失败错误提示
a908d39 HEAD@{5}: commit: fix some bug
2、执行返回命令
git reset --hard d1d1d7e(版本号)
比本地和上一次提交的差别
git diff HEAD -- readme.txt(文件名)
丢弃工作区修改
git chcekout -- file(文件名)
丢弃添加到暂存区的内容(即运行过git add后)
1、git reset HEAD <file>(文件名)
分支管理
新建并切换分支
我们注意到切换分支使用git checkout <branch>,而前面讲过的撤销修改则是git checkout -- <file>,同一个命令,有两种作用,确实有点令人迷惑。
实际上,切换分支这个动作,用switch更科学。因此,最新版本的Git提供了新的git switch命令来切换分支:
git switch -c dev
直接切换到已有的分支
git switch master
合并分支
git merge <name>
删除分支
git branch -d <name>
推送本地分支到远程
git push origin <分支名>:<分支名>
分支重命名
// 对当前本地分支重命名
git branch -m <new_name>
// 对任意本地分支重命名
git branch -m <old_name> <new_name>
// 对于已经推送到远端仓库的分支,可以执行如下 快捷命令 进行重命名,命令逻辑等同于:先删除远端分支,再推送本地分支至远端仓库。
git push origin :<old_name> <new_name>
新建标签
// 创建标签 默认标签是打在最新提交的commit上的
git tag v1.0
// 对指定的历史版本打标签
1、查看历史提交
git log --pretty=oneline --abbrev-commit
// 输出
12a631b (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
4c805e2 fix bug 101
e1e9c68 merge with no-ff
f52c633 add merge
cf810e4 conflict fixed
5dc6824 & simple
14096d0 AND simple
b17d20e branch test
d46f35e remove test.txt
b84166e add test.txt
519219b git tracks changes
e43a48b understand how stage works
1094adb append GPL
e475afc add distributed
eaadf4e wrote a readme file
2、给指定提交打标签
git tag v0.9 f52c633
// 查看标签
git tag
// 删除标签
git tag -d v0.1
// 推送标签到远程
git push origin <tagName>
// 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
// 删除远程标签
1、先删除本地标签
git tag -d <tagName>
2、删除远程
git push origin :refs/tags/<tagName>
从远程仓库克隆
// 克隆远程仓库
git clone <仓库地址>
// 克隆远程仓库的指定分支
git clone -b <仓库地址>
Git修改远程仓库地址
- 通过命令行关联远程仓库地址
git remote set-url origin <仓库地址>
- 通过命令行修改远程地址
git remote set-url origin <仓库地址>
- 先删除原有仓库地址,然后添加新地址
git remote rm origin
git remote add origin <仓库地址>
- 修改配置文件
> cd json/.git
> vim config
[core]
repositoryformatversion = 0
filemode = true
logallrefupdates = true
precomposeunicode = true
[remote "origin"]
# 修改成新的仓库地址
url = <仓库地址>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Git set-url报错 fatal: No such remote 'origin'
set-url命令是用来修改远程仓库的地址的,如果在运行这个命令的时候,还没有配置远程仓库地址,就会报错:
fatal: No such remote 'origin'
解决办法很简单,先增加一个远程仓库地址就行了
git remote add origin "xxx.git"
Git 同步远程仓库报错
fatal: refusing to merge unrelated histories解决
这个错误的原因是两个分支是两个不同的版本,具有不同的提交历史。
// 可以允许不相关历史提,强制合并
git pull origin master --allow-unrelated-histories