本文转载自微信公众号「潜行前行」,作者cscw。转载本文请联系潜行前行公众号。
创新互联建站是网站建设技术企业,为成都企业提供专业的成都网站建设、网站设计,网站设计,网站制作,网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制适合企业的网站。十多年品质,值得信赖!
在学校,或许凭借一个人的力量就能负责整个项目的开发到上线。但是在在公司,因为项目的复杂性和紧急性,一个项目的往往是由多个人实现,此时就有一个问题,代码提交和代码合并。git和svn,这篇文章来讲讲git的原理和使用
- # git config --global user.name "hello lwl"
- # git config --global user.email lwl@csc.com
- // 查看系统config
- # git config --system --list
- // 查看当前用户(global)配置
- # git config --global --list
- // 查看当前仓库配置信息
- # git config --local --list
- // 在当前目录新建一个Git代码库
- # git init
- // 克隆一个项目和它的整个代码历史(版本信息)
- # git clone [git@github.com:cscsss/learnHome.git]
- // 查看所有文件状态
- # git status
- // 查看指定文件状态
- # git status [fileName]
- // 添加指定文件到暂存区
- # git add [file1] [file2] ...
- // 添加指定目录到暂存区,包括子目录文件
- # git add [dir]
- // 将文件从暂存区和工作区中删除
- # git rm
- // 将 fileName 从暂存区删除文件,仍保留在当前工作目录中
- # git rm --cached
- // 将暂存区文件提交到本地仓库区,message为说明信息
- # git commit -m [message]
- // 将暂存区的指定文件 fileName 提交到本地仓库
- # git commit [fileName] -m [message]
- // 追加漏提交的暂存区文件。等价 git add . + git commit -m 'message'
- # git commit --amend -m [message]
查看文件状态及历史 git log
- # git log //查看提交历史
- # git log --oneline //以精简模式显示查看提交历史
- # git log -p
//查看指定文件的提交历史 - # git blame
//以列表方式查看指定文件的提交历史
- // 显示暂存区和工作区的全部差异
- # git diff
- // 显示 filepath 路径文件中,工作区与暂存区的差异
- # git diff filePath
- // 显示在工作区 filePath 文件与 HEAD 分支的差异
- # git diff HEAD filePath
- // 显示在工作区的 filePath 文件与某次提交 commitId 的差异
- # git diff commitId filePath
- // git reset [--soft | --mixed | --hard] [HEAD]
- // git reset [--soft | --mixed | --hard] [commit]
- # git reset –hard HEAD~3 //会将最新的3次提交全部重置,就像没有提交过一样
- # git reset 003444c77bae2b0874be17b81a829cfb1237d9ce //重置到003444c7
重置 HEAD 在当前分支到某次 commit 时,工作目录里的新改动和已经 add 到 stage 暂存区的新改动会全都消失。工作目录(workspace)、暂存区(index/stage)及本地仓库(repository)重置成目标 commit 的內容,所以效果看起来等同于清空暂存区和工作区
--soft 模式在重置 HEAD 时,会保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区,保留工作目录(workspace)和暂存区(index/stage)的内容,只让 repository 中的内容和 reset 节点保持一致,原节点和 reset 节点之间的「差异变动」会放入暂存区中(index/stage)
--mixed 模式图片git reset 如果不加参数,那么默认使用 --mixed 参数。mixed 模式会保留 工作目录(workspace)的內容,但会将暂存区(index/stage) 和 Repository 中的內容重置成 reset 节点一致,因此原节点和 reset 节点之间的「差异变动」会放入工作目录(workspace)
如果我们想撤销之前的某一版本,但是又想保留 commitId 提交之后的版本
- # git revert -n commitId
- // 基于当前分支新建一个分支,并且切换到新的分支 lwl
- # git checkout -b lwl
- // 基于远程分支 originBranch 并新建分支 csc
- # git checkout -b csc originBranch
- // 新建一个 csc 分支,但是仍停留在原来分支
- # git branch csc
- // 切换到 csc 分支
- # git checkout csc
- ~~ 将本地分支的更新全部推送到远程仓库 master 分支
- # git push origin master
- ~~ 删除远程 branchname 分支
- # git push origin -d
- # git branch -D
- ~~ 删除本地 dev1 分支
- # git branch -D dev1
git-merge 命令是用于从指定的commit(s)合并到当前分支的操作
- # git merge branchName //当前分支和 branchName 合并
- # git merge -m
//当前分支和 branchName commit及之前的提交合并 - # git merge --abort // 取消合并
- ~~ 拉取所有远端的最新代码
- # git fetch --all
- ~~ 拉取远程最新 master 分支代码(指定 master 分支)
- # git fetch origin master
- ~~ 拉取远程仓库分支,更新并合并到本地分支
- # git pull
- ~~ 将远程 master 分支合并到当前本地 master 分支
- # git pull origin master
- ~~ 将远程 master 分支合并到当前本地 lwl 分支,冒号后面表示本地分支
- # git pull origin master:lwl
git rebase master 命令会把当前分支 curBranch 里的每个提交(commit)取消掉,并且把它们临时保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把 curBranch 分支更新为 master 分支最新提交,最后把保存的这些补丁应用到 curBranch 分支上
在 rebase 的过程中,也许会出现冲突(conflict)。在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用 git add 命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行git rebase --continue
- # git rebase branchName // branchName 合并到当前分支
- # git rebase --continue // 解决冲突后继续合并
- # git rebase --abort //取消合并
- # git rebase -i HEAD~2 //合并提交 --- 2表示合并2个。也可以是3...
如果 git rebase master 之后。需要将当前分支 curBranch的代码移到 master。可以再次使用 git merge。此时合并后 master 的提交是一条线性 commit
- # git tag
//基于最新的 commitId 创建 tagName - # git tag -a
// 基于某次 commitId 创建 tagName - # git push origin
//推送到远程仓库 - # git push --tags //推送所有标签
- # git tag -d
// 删除本地 tag - # git push origin :refs/tags/
// 删除远程 tag
欢迎指正文中错误
参考文章
网站栏目:技能篇:Git的简易教程
文章源于:http://www.36103.cn/qtweb/news25/11625.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联