赞
踩
学了很多 git 命令,还有就是工作区、暂存区和版本库,这三个搞来搞去有点懵逼,自己总结了一下,做的图有些简陋,如果有不对的地方,烦请大佬们指出。
# 创建版本库 git init # 版本创建 git add git commit -m "版本说明信息" # 查看版本记录 git log # 版本回溯,HEAD^指向当前版本的前一版本 git reset --hard HEAD^ # 查看操作记录 git reflog # 提交修改 git add # 把工作区的修改放入暂存区 git add -u # 只add已经追踪过的文件 git commit -m "修改信息" # 把暂存区的修改做一次版本记录 # 撤销修改,撤销 add 和 commit 操作 1. 撤销工作区的修改 git checkout -- <file> 2. 撤销已经add到暂存区,但未commit的修改 git reset HEAD <file> + # git checkout -- <file> # 注意,这会将工作区的修改也撤销,如果不希望撤销工作区的修改则不必使用 3. 已经commit,版本回退至前一版本 # 1.git reset --soft 版本号 # 不删除工作区改动的代码,撤销commit,不撤销git add . git reset --soft HEAD^ //回到上一个版本 # 2.git reset --mixed 版本号 # 不删除工作区改动的代码,撤销commit,撤销git add . git reset --mixed HEAD^ //回到上一个版本 # 3.git reset --hard 版本号 # 删除工作区的代码,撤销commit,撤销git add . 回到上一次commit的状态 git reset --hard HEAD^ # 慎用此命令,因为会将工作区的文件也一并修改掉
Production分支(主线分支用于发版,不会直接改)
Master分支,这个分支只能从其他分支合并,不能在这个分支直接修改
Develop分支(开发分支)
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
Feature分支(新功能分支)
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
Release分支(偏向测试)
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
Hotfix分支(紧急bug发布)
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
# 查看帮助 git branch -h # 终端中输出帮助 git branch --help # 打开git帮助文档 # 查看remotes/origin下的分支 git branch -r git ls-remote origin # 会显示最新的 commit ID # 查看所有分支,包括heads下和remotes/origin下的 git branch -a # 切换分支 git checkout <分支名> # 新建分支,默认以当前分支为基础 git branch <新分支名> # 新建并切换分支 git checkout -b <新分支名> # 删除分支,删除的是heads下的分支test git branch -d test # 删除remotes/origin下的分支test,并提交到远端(即删除远端的test) git branch -rd origin/test git push origin --delete test # push会同时删除remotes/origin和远端的test # 提交分支:push分支test到remotes/origin和远端的new_test git push origin test:new_test # 重命名分支,重命名的是heads下的分支 git branch -m old_name new_name # 删除所有名字以 temp 开头的分支(多加两个空格是因为 git branch 输出结果带有空格) git branch | grep -E "^ temp" | xargs git branch -d git branch | grep -E "^ temp" | xargs git branch -D # 强制删除 # 强制删除 master 和当前分支以外的所有分支 git branch | grep -Ev "master" | xargs git branch -D
merge
默认会将分支与 当前分支 合并。当前分支指的是 HEAD
指向的分支,该分支的指向可以在
# 将origin/master与当前分支合并
git merge origin/master
# 将hotfix分支与当前分支合并,hotfix默认搜索heads/
git merge hotfix
git diff hotfix # 查看hotfix与当前分支的不同
# 出现冲突,解决过程
git status -s # UU 表示出现冲突的文件
vim conflict.* # 先修改出现冲突的文件
git add . # add 告诉git冲突已经解决
git status -s # M 表示冲突已经解决
git commit -m "conflict" # 提交解决冲突后的新版本
fetch
默认只将远端更新到remotes/origin,不会更新heads。
# 将远端更新到remotes/origin,不会更新heads
git fetch
git diff HEAD FETCH_HEAD
# 获取远端的分支,即同步远端的dev分支到 remotes/origin/dev 和 heads/temp
git fetch origin dev:temp
pull
相当于 fetch
和merge
,会更新到 当前分支。
# 默认拉取的是与远端HEAD指向的分支,同时合并到本地HEAD指向的当前分支
git pull
# 拉取远端dev分支到本地,并合并到当前分支
git pull origin dev = git fetch origin + git merge origin/dev
# 拉取本地不存在的远端分支
git pull origin dev:dev
push
会同时影响 remotes/origin 和远端。远端不存在push的分支时,会创建它。
# 提交当前分支到远端,如果当前分支HEAD指向的master,就提交本地master到远端master。
git push
# 提交本地的master到远端的master,远端master不存在时会被创建。本地master不存在则会报错。
git push origin master
# 提交分支:push分支master到remotes/origin和远端的master_r
git push origin master:master_r
# push会同时删除remotes/origin和远端的test
git push origin --delete test
diff
可以查看分支内容的改动。
# git diff <local branch> <remote>/<remote branch>
# 显示本地 master 分支和 远程 master 分支文件改动的摘要
git diff --stat master origin/master
操作记录:
# 对比工作区和版本库文件的不同 [root@i hellogit]# git diff HEAD -- code.py diff --git a/code.py b/code.py index 8ebeb35..61ef177 100644 --- a/code.py # -代表版本库 +++ b/code.py # +代表工作区 @@ -1 +1,2 @@ 1. This is a code py +2. This for git add and git checkout -- file # 出现+号,说明工作区比HEAD版本多了一行 # 对比两个版本库文件的不同 [root@i hellogit]# git diff HEAD HEAD^ -- code.py diff --git a/code.py b/code.py index 61ef177..8ebeb35 100644 --- a/code.py # -代表当前版本 +++ b/code.py # +代表后一个版本 @@ -1,2 +1 @@ 1. This is a code py -2. This for git add and git checkout -- file # 当前版本比后一个版本多一行 [root@i hellogit]# git diff HEAD^ HEAD -- code.py diff --git a/code.py b/code.py index 8ebeb35..61ef177 100644 --- a/code.py # -代表后一个版本 +++ b/code.py # +代表当前版本 @@ -1 +1,2 @@ 1. This is a code py +2. This for git add and git checkout -- file # 当前版本比后一个版本多一行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。