git config --global user.name "username" git config --global user.email "username@users.noreply.github.com"
通过git init命令把当前目录变成 Git 可以管理的仓库, 即初始化(Initialized) Git 仓库.
git init
git add <filename>
<>
git add -A
git commit -m "<massage>"
git add file1.txt git add file2.txt file3.txt git commit -m "add 3 files."
git status
git diff
git log
HEAD
git reset --hard commit_id
HEAD^
HEAD^^
^
HEAD~100
git reflog
git checkout -- file
git checkout
git reset HEAD <file>
命令git rm用于删除一个文件. 如果一个文件已经被提交到版本库, 那么你永远不用担心误删, 但是要小心, 你只能恢复文件到最新版本, 你会丢失最近一次提交后你修改的内容.
git rm
在本地 Shell 键入命令
ssh-keygen -t rsa -C "youremail@example.com"
如果一切顺利的话, 可以在用户主目录里找到.ssh 目录, 里面有id_rsa和id_rsa.pub. 两个文件, 这两个就是 SSH Key 的秘钥对, id_rsa是私钥, 不能泄露出去, id_rsa.pub是公钥, 可以放心地告诉任何人.
id_rsa
id_rsa.pub
登陆 GitHub, 打开SSH keys页面, 点“Add SSH Key”, 填上任意 Title, 在 Key 文本框里粘贴id_rsa.pub文件的内容
小提示: 适用于先有本地库, 后有远程库的场景
使用命令git remote add origin git@github.com:<username>/<reponame>.git把一个已有的本地仓库与远程库(origin)关联
git remote add origin git@github.com:<username>/<reponame>.git
关联后, 使用命令git push -u origin master第一次推送master分支的所有内容;
git push -u origin master
master
此后, 每次本地提交后, 只要有必要, 就可以使用命令git push origin master推送最新修改.
git push origin master
# github git remote add github git@github.com:<username>/<reponame>.git #关联 github git push github master #推送到 github # gitee git remote add gitee git@gitee.com:<username>/<reponame>.git #关联码云 git push gitee master #推送到码云
使用git remote rm origin命令.
git remote rm origin
小提示: 适用于先有远程库, 后有本地库的场景. 假设我们从零开发, 那么最好的方式是先创建远程库, 然后再从远程库克隆.
# ssh 方式 git clone git@github.com:<username>/<reponame>.git # https 方式 git clone https://github.com/<username>/<reponame>.git
Git 支持多种协议, 包括 https, 但每次推送都必须输入口令; 而通过 ssh 支持的原生 git 协议速度最快且推送方便.
# 创建+切换分支 git checkout -b <name> #相当于以下两条命令 # 创建分支 git branch <name> # 切换分支 git checkout <name>
git branch #列出所有分支, 当前分支前面会标一个 * 号标志 * dev master
# 切换回 master 分支 git checkout master # 合并指定 dev 分支到当前分支 git merge dev
合并分支时, 加上--no-ff参数就可以用普通模式合并, 合并后的历史有分支, 能看出来曾经做过合并, 而fast forward合并就看不出来曾经做过合并.
--no-ff
fast forward
git merge --no-ff -m "<massage>" dev
# 删除本地分支 git branch -d <name> # 强行删除 git branch -D <name>
修复 bug 时, 我们会通过创建新的 bug 分支进行修复, 然后合并, 最后删除;
当手头工作没有完成时, 先把工作现场git stash一下, 然后去修复 bug, 修复后, 再git stash pop, 回到工作现场.
git stash
git stash pop
# 查看远程库的信息 git remote -v # 推送分支 git push origin master # 克隆分支 git clone git@github.com:<username>/<reponame>.git # 在本地创建和远程分支对应的分支 git checkout -b <branch-name> origin/<branch-name> # 从远程抓取分支 git pull # 建立本地分支和远程分支的关联 git branch --set-upstream <branch-name> origin/<branch-name>
git rebase
rebase 操作可以把本地未 push 的分叉提交历史整理成直线; rebase 的目的是使得我们在查看历史提交的变化时更容易, 因为分叉的提交需要三方对比.
在 Git 中打标签非常简单, 首先, 切换到需要打标签的分支上, 然后, 敲命令git tag <tagname>就可以打一个新标签:
git tag <tagname>
git tag v1.0
之后可以用命令git tag查看所有标签, 用git show <tagname>查看标签信息, 还可以创建带有说明的标签, 用-a指定标签名, -m指定说明文字:
git tag
git show <tagname>
-a
-m
git tag -a <tagname> -m "<massage>"
要想给历史 common 打标签, 则先输入git log --pretty=oneline --abbrev-commit找到历史提交的 commit id, 然后打上就可以了:
git log --pretty=oneline --abbrev-commit
git tag <tagname> <commit_id>
# 删除本地标签 git tag -d <tagname> # 推送一个标签到远程 git push origin <tagname> # 推送全部尚未推送到远程的本地标签 git push origin --tags # 删除远程标签 git tag -d <tagname> #先删除本地标签 git push origin :refs/tags/<tagname> #再删除远程标签
使用git config --global color.ui true命令
git config --global color.ui true
忽略某些文件时, 需要编写.gitignore 检验.gitignore的标准是git status命令是不是说working directory clean.
.gitignore
working directory clean
使用git add -f <filename>无视.gitignore强制添加到 Git 使用git check-ignore -v <filename>检查是否有规则限制了该文件的提交
git add -f <filename>
git check-ignore -v <filename>
git config --global alias.st status #使用 st 表示 status git config --global alias.co checkout #使用 co 表示 checkout git config --global alias.ci commit #使用 ci 表示 commit git config --global alias.br branch #使用 br 表示 branch git config --global alias.unstage 'reset HEAD' #简化撤销命令 git config --global alias.last 'log -1' #配置一个 git last, 让其显示最后一次提交信息 git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" #美化显示
每个仓库的 Git 配置文件都放在.git/config文件中 而当前用户的 Git 配置文件放在用户主目录下的一个隐藏文件.gitconfig中
.git/config
.gitconfig
以上根据廖雪峰老师的Git 教程整理而成, 在此感谢!
git push <远程名> :<分支名> #注意冒号前有一个空格 # 示例 git push origin :dev #删除远程 dev 分支
git clone <仓库链接> tmp && mv tmp/.git . && rm -rf tmp
默认 clone 的是 master 分支, 使用以下命令 clone 指定分支:
git clone -b <分支名> <仓库链接>