Git
是一种分布式版本控制系统
https://git-scm.com/
SVN
优点
缺点
Git
用来跟踪管理版本库的
cd ~ rm -rvf .ssh ssh-keygen -t rsa -C 邮箱地址 cat ~/.ssh/id_rsa.pub
# 设置 git config user.name 霖雨 git config user.email 1931063095@qq.com # 删除 git config --unset user.name git config --unset user.email
# 设置 git config --global user.name test git config --global user.email test@qq.com # 删除 git config --global --unset user.name git config --global --unset user.email
# 配置别名 git config --global alias.co checkout git config --global alias.ss status git config --global alias.cm commit git config --global alias.br branch git config --global alias.rg reflog # 这里只是美化 log 的输出,实际使用时可以在 git lg 后面加命令参数,如:git lg -10 显示最近10条提交 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"
# 查看开发者用户名和邮箱 cat ~/.gitconfig
# 查看系统配置 git config --list
# 查看当前项目的 git 配置 cat .git/config
# 查看暂存区的文件 git ls-files
# 帮助命令 git --help -a
# 拉取、上传免密码 git config --global credential.helper store
# 删除工作区/暂存区的文件 git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区 git rm --cached [file]
# 改名工作区/暂存区的文件 git mv old.txt new.txt
# 建立当前分支和远程分支的追踪关系 git push -u origin master
# 删除远程分支 git push origin --delete master
# 将本地的所有分支都推送到远程主机 git push --all origin
# 创建一个空白分支,先把当前分支的内容全部删掉 git rm -rf . # 再创建 git checkout --orphan 空的分支名
# 初始化 git init # 查看状态 git status # 提交到暂存区 git add . # 如果有错的情况下,移除暂存区 git rm --cached hello.txt # 提交本地库 git commit -m "首次提交" # 查看日志(HEAD:指针):提交记录可能会非常多,按 J 键往下翻,按 K 键往上翻,按 D 键往下页,按b往上翻页,按空格往下翻页,按 Q 键退出查看 # oneline -> 将日志记录一行一行的显示 # grep="关键字" -> 查找日志记录中(commit提交时的注释)与关键字有关的记录 # graph -> 记录图形化显示 !!! # all -> 将所有记录都详细的显示出来 # author "username" -> 查找这个作者提交的记录 # reverse -> commit 提交记录顺序翻转 # before -> 查找规定的时间(如:1天/1周)之前的记录 # num -> git log -10 显示最近10次提交 !!! # stat -> 显示每次更新的文件修改统计信息,会列出具体文件列表 !!! # abbrev-commit -> 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符 !!! # pretty=format:"xxx" -> 可以定制要显示的记录格式 !!! # p -> 显示每次提交所引入的差异(按 补丁 的格式输出)!!! git log --oneline --grep="关键字" --graph --all --author "username" --reverse -num -p --before= 1 day/1 week/1 "2019-06-06" --after= "2019-06-06" --stat --abbrev-commit --pretty=format:"xxx" # 查看日志(HEAD:指针):显示版本历史信息回滚步数 git reflog # 切换版本号 git reset --hard 版本号 # 永久删除的文件恢复 git add test.txt git commit -m "new file" rm test.txt git add test.txt git commit -m "恢复" git reflog git reset --hard 51acbc2 # 绑定远程仓库 git remote add origin https://github.com/q-linyu/test.git # 查看远程仓库的别名 $ git remote -v origin https://github.com/q-linyu/test.git (fetch) origin https://github.com/q-linyu/test.git (push) # 推送远程仓库 or 强行推送 git push -u origin master | git push origin master -f # 克隆/把远程的代码拉到本地来 git clone https://github.com/q-linyu/test.git
git -c core.pager=more log # 如果可以显示中文的话,把 pager 设置为 more git config --global core.pager more
# 项目上线发布的时候用,做一个标记 git tag
在版本控制过程中,使用多条线同时推进多个任务
# 查看分支 git branch # 查看所有分支的最后一次操作 git branch -v # 查看当前分支 git branch -vv # 新建分支 git branch 分支名 # 切换分支 git checkout 分支名 # 删除本地分支 git branch -d 分支名 # 强行删除分支 git branch -D 分支名 # 删除远处仓库分支 git branch origin:分支名 # 合并分支 git checkout master git merge 要合并的分支名 -m "描述" # or git merge 要合并的分支名 --no-ff
# 方式一 git fetch origin master git checkout origin/master git log -p master.. origin/master git checkout master git merge origin/master
# 方式二 git pull origin master
# 将所有未提交的修改(提交到暂存区)保存至堆栈中 git stash # 给本次存储加个备注,以防时间久了忘了 git stash save "存储" # 存储未追踪的文件 git stash -u # 查看存储记录 $ git stash list 在 Windows 上和 PowerShell 中,需要加双引号 # 恢复后,stash 记录并不删除 git stash apply "stash@{index}" # 恢复的同时把 stash 记录也删了 git stash pop "stash@{index}" # 删除 stash 记录 git stash drop "stash@{index}" # 删除所有存储的进度 git stash clear # 查看当前记录中修改了哪些文件 git stash show "stash@{index}" # 查看当前记录中修改了哪些文件的内容 git stash show -p "stash@{index}"
# 查看工作区和暂存区单个文件的对比 git diff filename # 查看工作区和暂存区所有文件的对比 git diff # 查看工作区和暂存区所有文件的对比,并显示出所有有差异的文件列表 git diff --stat # 查看暂存区与上次提交到本地仓库的快照(即最新提交到本地仓库的快照)的对比 git diff --cached/--staged # 查看工作区与上次提交到本地仓库的快照(即最新提交到本地仓库的快照)的对比 git diff branchname # 查看工作区与 HEAD 指向(默认当前分支最新的提交)的对比 git diff HEAD # 查看两个本地分支中某一个文件的对比 git diff branchname..branchname filename # 查看两个本地分支所有的对比 git diff branchname..branchname # 查看远程分支和本地分支的对比 git diff origin/branchname..branchname # 查看远程分支和远程分支的对比 git diff origin/branchname..origin/branchname # 查看两个 commit 的对比 git diff commit1..commit2
# 查看所有远程主机 git remote # 查看关联的远程仓库的详细信息 git remote -v # 删除远程仓库的 “关联” git remote rm projectname # 设置远程仓库的 “关联” git remote set-url origin <newurl>
# 默认在 HEAD 上创建一个标签 git tag v1.0 # 指定一个 commit id 创建一个标签 git tag v0.9 f52c633 # 创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字 git tag -a v0.1 -m "version 0.1 released" # 查看所有标签 # 注意:标签不是按时间顺序列出,而是按字母排序的。 git tag # 查看单个标签具体信息 git show <tagname> # 推送一个本地标签 git push origin <tagname> # 推送全部未推送过的本地标签 git push origin --tags # 删除本地标签 # 因为创建的标签都只存储在本地,不会自动推送到远程。 # 所以,打错的标签可以在本地安全删除。 git tag -d v0.1 # 删除一个远程标签(先删除本地 tag ,然后再删除远程 tag) git push origin :refs/tags/<tagname>
#java *.class #package file *.war *.ear *.zip *.tar.gz *.rar #maven ignore target/ build/ #eclipse ignore .settings/ .project .classpatch #Intellij idea .idea/ /idea/ *.ipr *.iml *.iws # temp file *.log *.cache *.diff *.patch *.tmp # system ignore .DS_Store Thumbs.db