git入门与详细教程

时间:2021-10-19 14:11:30

mark

https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md

https://segmentfault.com/a/1190000004963641

https://segmentfault.com/a/1190000002918123

https://segmentfault.com/a/1190000003836345  利用git hook自动布署代码

用 git pull --rebase 避免無謂的 merge


----开发者----
git pull 拉取最新代码
git checkout -b mybr1  建立并切换到分支


做开发,如果开发完成后,提交代码
git add .
git commit -m '注释' 可以多次的add和commit


已确认完成并自已测试过,把分支推向*仓库
git push origin mybr1


在web端发起请求合并merge request


----管理者----
git pull 拉取分支
git merge origin mybr1 合并分支
git push origin master 推向*仓库

上完版本后,打tag,可用于回退
git tag -a v1.1 -m 'v1.1'  打标签

git push origin --tags  推标签到*仓库

git tag# 在控制台打印出当前仓库的所有tag

git checkout  v1.1  切换到tag 为1.1版本


Git diff 
查看本地修改和缓存区:git diff 
本地修改和存储区:git diff HEAD 
缓存区和存储区:git diff –cached

git提取出两个版本之间的差异文件并打(tag也可以例如git diff v1.1 v1.2)

git diff 608e120 4abe32e --name-only | xargs zip update.zip



即git pull --rebase,这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上。(主要是减少冲突的合并)
http://blog.csdn.net/hudashi/article/details/7664631/
http://blog.csdn.net/huangyabin001/article/details/30100287


----开发者----
等分支推向*仓库后,可切回master,拉取最新代码,与*仓库保持一致,如果原来的分支不用,可删除

---------------------------------------------------------

git checkout -b some-feature develop //创建并切换分支
开发功能
git add <some-file>
git commit


开发功能
git add <some-file>
git commit


开发功能
git add <some-file>
git commit


-----完成开发后----

git push origin some-feature 

git branch -d some-feature

----------------管理员在合并---------------------------
先拉取develop仓库的,再合并到develop,最后做删除
git pull origin develop
git checkout develop
git merge some-feature
git push origin develop

---------------------------------------------

建develop分支
git branch develop
git push -u origin develop

------------------
git pull
git checkout develop //切换分支
git checkout -b some-feature //在develop的分支,再建一个分支
开发


---------------------------

git reset --hard commit_id    完成撤销,同时将代码恢复到前一commit_id 对应的版本。
git reset commit_id   完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。

git删除远程分支

git push origin --delete <branchName>

git删除远程tag
 git push origin --delete tag <tagname>

【git 删除本地分支】

git branch -D br

 

删除本地的索引(*仓库还有)

git branch -r -d origin/mybr3


【git 删除远程分支】(真删除)

git push origin :br  (origin 后面有空格)

 

git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

【本地代码库回滚】:

git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除

git reset --hard HEAD~3:将最近3次的提交回滚

 

【远程代码库回滚】:

这个是重点要说的内容,过程比本地回滚要复杂

应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布

原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

操作步骤:

1、git checkout the_branch

2、git pull

3、git branch the_branch_backup //备份一下这个分支当前的情况

4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

5、git push origin :the_branch //删除远程 the_branch

6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,并且选择了 Force Push选项(在push权限设置里有这个选项)

另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞


http://blog.csdn.net/hongchangfirst/article/category/1113635/4