文本转载于:https://www.cnblogs.com/ldj3/p/9172804.html
贴过来用于方便查看,转载请尊重原创,谢谢!
本图详细解释请浏览:https://www.cnblogs.com/runnerjack/p/9342362.html
1 常用
$ git remote add origin git@github.com:yeszao/dofiler.git # 配置远程git版本库
$ git pull origin master # 下载代码及快速合并
$ git push origin master # 上传代码及快速合并
$ git push --force origin master # 强制提交上传代码
$ git fetch origin # 从远程库获取代码
$ git push origin 本地分支名:远程分支名 # 创建远程分支
$ git branch # 显示所有分支
$ git checkout master # 切换到master分支
$ git checkout -b dev_test origin/dev_test # 创建本地并切换到dev_test分支
$ git commit -m "first version" # 提交
$ git status # 查看状态
$ git log # 查看提交历史
$ git config --global core.editor vim # 设置默认编辑器为vim(git默认用nano)
$ git config core.ignorecase false # 设置大小写敏感
$ git config --global user.name "YOUR NAME" # 设置用户名
$ git config --global user.email "YOUR EMAIL ADDRESS" # 设置邮箱
假如ip变了,git远程仓库的地址也变了,这个时候就要自己手动修改项目连接到的远程仓库地址
在你本地的项目位置,右键-->git bash here,然后输入命令git remote set-url origin (新的git地址)
方式1、直接修改: git remote set-url origin xxxxx.git
方式2、先删后加: git remote rm origin
git remote add origin xxxxx.git
修改默认pull和push分支: git branch --set-upstream-to=origin/develop develop
origin/develop develop为要设置的默认分支
2 修改和提交
$ git status # 查看状态
$ git diff <file> # 查看变更内容
$ git add . # 跟踪所有改动过的文件(在自己的分支进行操作)
$ git add <file> # 跟踪指定的文件
$ git mv <old> <new> # 文件改名
$ git rm <file> # 删除文件
$ git rm --cached <file> # 停止跟踪文件但不删除
$ git commit -m “commit message” # 提交所有更新过的文件(将本地暂存区的代码提交到自己的分支上)
$ git commit --amend # 修改最后一次提交
3 远程与本地合并
如果在远程创建了代码仓,而且已经初始化,本地是具体的源代码,那么工作流程应该是:
$ git clone <url> # 克隆远程版本库
$ git init # 初始化本地代码仓
$ git add . # 添加本地代码
$ git commit -m "add local source" # 提交本地代码
$ git pull origin master # 下载远程代码
$ git merge master # 合并master分支
$ git merge master --no-ff # 将master分支压缩为一条记录合并过来
$ git push -u origin master # 上传代码
$ git log # 查看提交历史
$ git log -p <file> # 查看指定文件的提交历史
$ git blame <file> # 以列表方式查看指定文件的提交历史
4 撤消
$ git reset --hard HEAD # 撤消工作目录中所有未提交文件的修改内容
$ git reset --hard <version> # 撤销到某个特定版本
$ git checkout HEAD <file> # 撤消指定的未提交文件的修改内容
$ git checkout -- <file> # 同上一个命令
$ git revert <commit> # 撤消指定的提交
5 别名Alias
$ git config --global alias.br="branch" # 创建/查看本地分支
$ git config --global alias.co="checkout" # 切换分支
$ git config --global alias.cb="checkout -b" # 创建并切换到新分支
$ git config --global alias.cm="commit -m" # 提交
$ git config --global alias.st="status" # 查看状态
$ git config --global alias.pullm="pull origin master" # 拉取分支
$ git config --global alias.pushm="push origin master" # 提交分支
$ git config --global alias.log="git log --oneline --graph --decorate --color=always" # 单行、分颜色显示记录
6 分支与标签
$ git branch # 显示所有本地分支
$ git checkout <branch/tag> # 切换到指定分支或标签
$ git branch <new-branch> # 创建新分支
$ git branch -d <branch> # 删除本地分支
$ git branch -a # 查看远程分支
$ git tag # 列出所有本地标签
$ git tag <tagname> # 基于最新提交创建标签
$ git tag -a "v1.0" -m "一些说明" # -a指定标签名称,-m指定标签说明
$ git tag -d <tagname> # 删除标签
7 合并与衍合
$ git merge <branch> # 合并指定分支到当前分支
$ git merge --abort # 取消当前合并,重建合并前状态
$ git merge dev -Xtheirs # 以合并dev分支到当前分支,有冲突则以dev分支为准
$ git rebase <branch> # 变基,衍合指定分支到当前分支
$ git rebase -i HEAD~2 # 整理自己的提交历史,2是指合并两次log
8 远程操作
$ git remote -v # 查看远程版本库信息
$ git remote show <remote> # 查看指定远程版本库信息
$ git remote add <remote> <url> # 添加远程版本库
$ git remote remove <remote> # 删除指定的远程版本库
$ git fetch <remote> # 从远程库获取代码
$ git pull <remote> <branch> # 下载代码及快速合并
$ git push <remote> <branch> # 上传代码及快速合并
$ git push origin --delete dev # 删除远程分支
$ git push --tags # 上传所有标签
9 打包
$ git archive --format=zip --output ../file.zip master # 将master分支打包成file.zip文件,保存在上一级目录
$ git archive --format=zip --output ../v1.2.zip v1.2 # 打包v1.2标签的文件,保存在上一级目录v1.2.zip文件中
$ git archive --format=zip v1.2 > ../v1.2.zip # 作用同上一条命令
git打包命令会自动忽略.gitignore
中指定的目录和文件,以及.git
目录。
10 全局和局部配置
- 全局配置保存在:
$Home/.gitconfig
- 本地仓库配置保存在:
.git/config
11 Git rebase 变基 与 合并记录
假设Git目前只有一个分支master。开发人员的工作流程是
git clone master branch
在自己本地checkout -b local创建一个本地开发分支
在本地的开发分支上开发和测试
阶段性开发完成后(包含功能代码和单元测试),可以准备提交代码
首先切换到master分支,git pull拉取最新的分支状态
然后切回local分支
通过git rebase -i 将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
#### 变基 ####
git checkout master
git pull
git checkout local
git rebase -i HEAD~2 # 合并提交,2表示合并两个记录 ---> 解决冲突 ---> git add . ---> git rebase --continue
git rebase master # 将master最新的分支同步到本地,这个过程可能需要手动解决冲突(如果进行了上一步的话,只用解决一次冲突)
git checkout master # 然后切换到master分支
git merge local # 将本地的local分支内容合并到master分支
git push # 将master分支的提交上传
#### 合并记录 ####
# 在 rebase 的过程中,也许会出现冲突 conflict ,git 会停止 rebase 并会让你去解决冲突。
# 在解决完冲突后,用 git add 命令去更新这些内容。
# 注意,你无需执行 git-commit,只要执行 continue
git rebase -i HEAD~2 # 合并两条记录---->解决代码冲突
git add . # 添加这两条的合并记录
git rebase --continue # 提交这两条的合并记录
git push -f origin master # 强制提交
# 在任何时候,我们都可以用 git rebase --abort 参数来终止 rebase 的行动,并且分支会回到 rebase 开始前的状态。