1.常用命令
//创建git仓库
git init
//下载git版本库代码
git clone <git地址>
//查看状态
git status
//添加修改的文件
git add <文件名>
//添加所有修改的文件
git add .
//提交代码到本地仓库
git commit -m "描述文字"
//将远程仓库的代码拽到本地
git pull
//将本地仓库的代码推送到远程仓库
git push
2.重置 回滚
//修改最后一次提交备注
git commit --amend
//撤回到某个commit版本(本地 不保留变更)
git log
git reset --hard <commitID>
//撤回到某个commit版本(本地 保留变更)
git log
git reset --soft <commitID>
//撤回到某个commit版本(远程)
git log
git reset --hard <commitID>
git push origin <分支名> --force
// 回滚某个commit版本(撤销本次的修改 会生产新的commit)
git revert <commitID>
3.查看diff文件
//比较当前文件和暂存区文件差异
git diff
git diff <file>
//比较两次提交之间的差异
git diff <commit id1> <commit id2>
//在两个分支之间比较
git diff <branch1>..<branch2>
//对比两次commit修改的文件
git diff <commit id1> <commit id2> --stat
//查看该文件每次提交记录
git log git log <file>
//查看每次详细修改内容的diff
git log -p <file>
//查看最近两次详细修改内容的diff
git log -p -2
//查看每次提交修改的文件
git log --stat
//查看某次提交修改的文件
git show <commit id>
//查看某次提交某个文件修改的内容
git show <commit id> <file name>
4.分支管理
//查看本地分支
git branch
//查看远程分支
git branch -r
//创建分支
git branch <分支名>
//切换分支
git checkout <分支名>
//上边两个语句合并
git checkout -b <分支名>
//本地分支推送到远程
git push origin <分支名>
//pull本地不存在的远程分支
git checkout -b <本地分支名> origin/<远程分支名>
//远程分支有变动时 同步远程分支
git remote update origin --prune
//删除分支
git branch -d <分支名>
//如果该分支没有合并到主分支会报错,可以用以下命令强制删除
git branch -D <分支名>
//删除远程分支
git push origin --delete <分支名>
//本地分支重命名(远程分支可以删除后重新推送新分支)
git branch -m <旧名> <新名>
//远程分支重命名
git push origin :<旧分支名> <新分支名>
//将本地分支与新的远程分支关联起来
git branch --set-upstream-to=<origin/新分支名> <新分支名>
合并分支:将develop合并到master
//首先切换到master分支
git checkout master
// 然后执行合并操作
git merge develop
//如果有冲突,会提示冲突的文件,解决冲突后git commit 提交更改
//合并两个不相关的分支会报异常:git fatal: refusing to merge unrelated histories
git merge <分支名> --allow-unrelated-histories
如果master不想合并整个develop分支,只合并develop分支中的某次commit
//先切换到develop
git checkout develop
//查看commit id
git log
//切换到master分支
git checkout master
//合并develop的某次提交
git cherry-pick <commitID>
//合并多个提交
git cherry-pick <commitID> <commitID2>
//合并多个连续的提交
git cherry-pick <commitID>..<commitID2>
强制推送某个分支到远程分支,本地分支内容会覆盖远程分支,远程有未拉取的提交会丢失
git push origin <分支名> --force
远程分支已经删除,本地同步远程分支
//查看远程分支
git branch -r
//同步远程分支
git remote prune origin
5.Tag管理
//创建 tag
git tag <tag名>
//创建带注释的tag
git tag -a <tag名> -m <注释>
//查看本地所有tag
git tag
//查看远程所有tag
git ls-remote
//查看 tag 详细信息
git show <tag名>
//推送某个tag到远程
git push origin <tag名>
//推送所有tag到远程
git push origin --tags
//删除本地tag
git tag -d <tag名>
//删除远程tag
git push origin :<tag名>
6.仓库管理
//查看远程服务器地址和本地仓库名称
git remote -v
//添加远程仓库
git remote add <本地仓库名> <远程仓库地址>
//移除远程仓库
git remote rm <本地仓库名>
//本地仓库重命名
git remote rename <旧名称> <新名称>
//修改远程仓库地址
git remote set-url <本地仓库名> <远程仓库地址>
//拉取远程仓库分支
git fetch <本地仓库名>
仓库迁移
git remote rename origin old
git remote add origin <新仓库地址>
git push -u origin --all
git push -u origin --tags
git本地已有文件与git仓库关联起来
通过 git init 把这个目录变成git可以管理的仓库
git init
把文件添加到版本库中
git add .
git commit -m "."
关联到远程库
git remote add origin https://github.com/githubusername/demo.git
获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
执行此命令后会要求输入用户名、密码,验证通过后即开始上传。
git push -u origin master
7.忽略文件
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改.gitignore文件的方法。
//进入工程的文件夹下
ls -a
//有一个.gitignore文件,编辑它即可
vim .gitignore
需要注意的是.gitignore只能忽略那些原来没有被添加到版本库的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,需要手动忽略文件。
//已添加到版本库 不跟踪单个文件(不会删除版本库的文件)
git update-index --assume-unchanged <文件名>
//如果要还原的话,使用命令
git update-index --no-assume-unchanged <文件名>
//已添加到版本库 移除跟踪单个文件(需要commit 删除版本库的文件)
git rm --cached <文件名>
// 移除文件夹
git rm -rf --cached <文件夹>
8.贮藏文件
// 查看贮藏记录
git stash list
// 贮藏未提交的内容
git stash save <贮藏备注>
// 恢复贮藏内容(删除此贮藏记录)
git stash pop <贮藏id>
// 恢复最近一次
git stash pop
// 恢复贮藏内容(不删除贮藏记录)
git stash apply <贮藏id>
// 恢复最近一次
git stash apply
// 删除贮藏记录
git stash drop <贮藏id>
// 清空贮藏列表
git stash clear
9.查看日志文件
//进入工程目录
//包含当前分支的commit信息
vi .git/logs/refs/heads/master
//包含本地所有的git操作信息,包括commit没有push但reset --hard后看不到的提交
vi .git/logs/HEAD
10.仓库子模块
添加子模块
git submodule add <子仓库地址>
// 查看子模块
git submodule
删除子模块
git submodule deinit <submodule_name>
git rm <submodule_name>
rm -rf .git/modules/<submodule_name>
全局配置账号
git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,git pull/push到远程的时候,总提示输入账号和密码
git config --global credential.helper store
创建SSH:
// 生成SSH keys
ssh-keygen -t rsa -b 4096 -C <邮箱地址>
// 复制你的SSH公钥内容
cat ~/.ssh/id_rsa.pub
// 查看SSH文件
vim ~/.ssh/id_rsa.pub