git 中分工作区、缓存区、本地库以及远程库几部分。其中,修改本地文件后,通过git add xx文件将修改保存到缓存区,之后再用commit推送修改到本地库中,最后用git push 将本地仓库中的修改推送到服务器上的仓库中。
提交代码的过程:
- git status 查看本地修改的文件状态
- git add 文件名,多个文件时用空格分隔,所有文件有.代表
- git commit -m "comments " 提交代码到本地库,其中-m 指修改说明
- git push origin 分支名,提交代码到远程分支库
- 进stash找到你的分支,点commits来看你提交成功了没有
- create pull request 去最终提交你的代码,其中diff 可以看你的不同
常用git 命令
git配置:
- git是分布式版本控制系统,安装好git后,需要在终端通过以下命令设置邮箱和用户名:
- git config --global user.email "xxxx@xxx.com"
- git config --global user.name "xxxx"
- 查看配置:git config -l
git stash/clean/log/diff:
- git stash 把所有没有提交的修改暂存到stash里面,可用git stash pop恢复。git stash 只能缓存在git库中已经被追踪的文件,若文件是新增的没有添加到git中,使用git stash不会缓存该文件
- git clean -df 删除工作目录中没有被tracked的文件和文件夹,例如新增文件/文件夹
- git clean -n是一次clean的演习, 告诉你哪些文件会被删除,但不会真的删除
- git log /git log --pretty=online 查看提交记录
- git log -n 查看最近n次的修改记录,n为数字
- git diff 不加参数,对比的是工作目录与缓存区快照之间的差异
git checkout/reset/rebase/pull:
- git checkout放弃本地修改,即没有使用git add提交的修改(用法:git checkout -- filename或者git checkout .),但它也只能放弃在git库中已追踪的文件的修改,若是新增文件或目录,则需要手动删除。
- git reset --hard origin/master 把HEAD指向master最新版本,将origin/master换成commitId,即可将本地库代码会退到指定commit点的状态
- git rebase -i 将本地的多次提交合并为一个,以简化提交历史,例如:git rebase -i HEAD~4 合并最近四次的提交记录
- git rebase 仓库名/分支名 将仓库名/分支名的最新的分支同步到本地
- git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
- git pull 是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git branch:
- git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记
- git branch -vv 查看本地分支对应的远程分支
- git branch -d dev 删除dev分支,如果在分支中有一些未merge的提交,那么会删除分支失败,此时可以使用 git branch -D dev:强制删除dev分支,
- git branch -m oldName newName 给分支重命名,如果 new_branch 名字分支已经存在,则需要使用-M强制重命名
- git checkout -b feature 创建并切换分支。在当前分支中做的修改,通过该命令创建并切换分支后,在新分支中也会保留
- git branch dev 创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
- git branch -r 查看远程版本库分支列表
- git branch -a 查看所有分支列表,包括本地和远程
如何修改本地分支名和远程分支名:
情景:将分支名由Branchrelease-4.0.4.x改为release-4.0.4.x1
- 将本地旧的分支名Branchrelease-4.0.4.x改为新的分支名release-4.0.4.x1 :git branch -m Branchrelease-4.0.4.x release-4.0.4.x1
- 本地分支修改后通过git branch -vv命令看到远程分支名还是origin/Branchrelease-4.0.4.x,所以还需要更新远程分支名
- 删除远程分支git push origin :Branchrelease-4.0.4.x
- 创建一个新的远程分支 git push --set-upstream origin release-4.0.4.x1
- 查看修改后的分支:git branch -vv 结果是:release-4.0.4.x1 9497a544 [origin/release-4.0.4.x1]
两种提交代码的流程:
拉代码:git clone address -b branch_name local_folder
1.先更新本地代码为最新代码,再修改本地代码,提交改动
- 在提交代码前将本地分支中的代码更新为最新master中的代码:
- git checkout master
- git pull
- git checkout branch_name
- git rebase master
- 然后修改本地代码后,使用git add . ,git commit -m "comment",git push origin branch_name提交
2.先提交本地代码到本地库,再将master中的最新分支同步到本地库,最后提交改动到远程库
- 先提交本地代码到本地库,然后将master中的最新分支同步到本地库,再提交代码到本地库:
- git add .
- git commit -m "comment"
- 将master中的最新分支同步到本地库
- git checkout master
- git pull
- git checkout branch_name
- git rebase master
- 使用git status查看本地代码的状态
- git push提交代码到远程库