git初始化配置
git config --global user.name 'username' # 配置使用git仓库的人员姓名
git config --global user.email 'example@qq.com' # 配置使用git仓库的人员email
git config --global http.proxy 'socks5://127.0.0.1:1080' # 配置http代理
git config --global --unset http.proxy
git config --global https.proxy 'https://127.0.0.1:1080' # 配置https代理
git config --global --unset https.proxy
git config -1 # 列举所有配置
cat ~/.gitconfig # 查看用户的git配置文件
git 查看、添加、提交、删除、找回,重置修改文件
git checkout -- <file> # 将工作区文件所做的修改恢复到和当前版本库一致,注意文件所做的修改会丢失掉 -- 命令很重要,否则就成 切换到另一个分支 的命令了
# git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git add <file> # 将工作文件修改提交到本地暂存区
git add . # 将所有修改过的工作文件提交暂存区
git rm --cached <file> # 从缓存区移除指定文件
git rm --cached . -r # 从暂存区撤销所有文件
git commit -m 'message' # 提交到本地仓库
git commit --allow-empty-message -m '' # 允许empty-message 提交
git log # 查看提交记录
git log --pretty=oneline # pretty 打印
git log --stat #查看提交统计信息
git log <file> # 查看该文件每次提交记录
git log -p <file> # 查看每次详细修改内容的diff
git log -p -2 # 查看最近两次详细修改内容的diff
版本回退
在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^ # 回退到上一个版本
# 回退到历史版本之后,又想找回最新的版本id,可以使用 git reflog 命令,找到最新的版本id
git reflog # 查看命令历史,以便确定要回到未来的哪个版本
git reset --hard 'version-id' # 回退到指定的版本号
远程仓库管理
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。其它的分支并不会被克隆
git remote -v # 查看远程服务器地址和仓库名称
git remote add origin '仓库地址' # 将本地仓库关联远程仓库
git push -u origin master:master # 第一次推送master分支的所有内容 -u ,语法为 git push [远程名] [本地分支]:[远程分支]
git fetch #fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并
git pull
分支管理
git branch dev # 新建dev分支
git checkout dev # 切换到dev分支
git checkout -b dev # 创建dev分支 并切换到dev分支
git branch # 查看分支
git merge <branch> # 将branch分支合并到当前分支,默认为fast-forward模式进行合并(不推荐)
git merge --no-ff -m "merge with message" dev #(推荐合并方式:关闭fast-forward,合并dev分支并创建一个提交消息)
git branch -d dev # 删除dev分支
git branch -D <name> # 丢弃一个没有被合并过的分支,强行删除
git switch master # 切换到master分支,新版的git切换分支命令
# 工作区暂存和恢复
git stash # 暂存 ,此时 git status 命令会看到工作区很干净,对当前工作区文件所做的更改都会被暂存起来
git stash list # 列所有stash
git stash apply # 恢复暂存的内容
git stash drop # 删除暂存区
git cherry-pick <commit-id> # 复制一个特定的提交到当前分支,无需对当前分支做重复的修改
# 多人协作
git checkout -b dev origin/dev # 在本地创建dev分支,并和远程origin仓库中的dev分支进行关联
# 手动关联本地分支和远程分支
git branch --set-upstream-to <local-branch-name> origin/<remote-branch-name>
标签管理
git tag v1.0 # 打标签,默认标签是打在最新提交的commit上的
git tag # 查看标签
git tag v0.9 <commit-id> # 给历史提交的commit 打标签
git tag -d v0.1 # 删除已经打好的标签
git push origin <tagname> # 推送某个标签到远程
git push origin --tags # 一次性推送全部尚未推送到远程的本地标签
常用操作
- git远程仓库地址变更
git remote -v
git remote remove origin
git remote add origin [新仓库地址URL]
git push -u origin master