(转载)git使用
2017-09-15 10:20
239 查看
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比
Git 与 SVN 区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
Git 与 SVN 区别点:
1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
一般工作流程如下:
克隆 Git 资源作为工作目录。
在克隆的资源上添加或修改文件。
如果其他人修改了,你可以更新资源。
在提交前查看修改。
提交修改。
在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
4000
常用命令:
git add 暂存区的目录树被更新,将工作区的目录写入暂存区
git add .添加当前项目的所有文件
git commit –m ‘提交代码并注释’:将暂存区的目录树提交到版本库中
git commit –am ‘第一次版本修改’:直接将工作区的代码提交到版本库
git clone [url]复制对应地址的仓库下来
git pull 拉取最新的代码,若有冲突,则修改冲突的文件 ,不加参数的话 只是针对当前分支与远程自己分支进行同步更新
git push 拉最新代码推到代码仓库。
git pull origin next:master:取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git reset head:暂存区的目录树被版本库中的代码重写,但是工作区不受影响
git reset --hard:将版本回退到上一次提交的版本
git rm –cached<file> 会直接从暂存区删除文件,工作区则不做出改变
git rm file 会将文件从缓存区和工作区删除
git checkout--<file> 将暂存区的代码写入工作区(可能会误删工作区未提交的代码)
git checked HEAD:将版本库中的所有代码替代工作区的代码,同时更新暂存区的代码
touch:新建一个新的文件
ls:显示当前目录下的所有文件
git status –s:查看项目的当前状态
git diff 显示你上次提交更新后的更改或者写入缓存的改动
git config --global user.name '用户名':设置用户名
git config --global user.email 邮箱地址:设置邮箱
密钥管理:
1、cd ~/.ssh 是否存在主目录密钥的目录
2、ls 看下是否存在密钥文件
3、ssh-keygen -t rsa –C 生成密钥
4、cat ~/.ssh/id_rsa.pub 查看公钥
5、添加公钥到远程仓库
cd ..代表上一级目录
文件的几种状态:
A:工作区中存在,提交到暂存区,且工作区和暂存区的代码一致
AM:文件提交到暂存区后又有改动
AD:暂存区中有文件,而工作区中没有
??:代码值存在工作区,未提交到暂存区
M:提交到版本库后代码仍然有改动、
分支管理:
创建分支:git branch (branchname)
切换分支:git checkout(branchname)
合并分支到当前分支上:git merge (branchname)
创建新分支并立即到该目录下:git checkout –b(branchname)
删除分支:git branch –d(branchname)
重命名分支:git branch -m devel develop
更新主分支的代码到自己分支上:git merge master,在更新过程中也行会因为冲突出现报错,
本地解决冲突后提交代码,合并完成。
(创建分支用来备份代码)
查看远程分支:git branch –a
删除远程分支:git push origin --delete (branchname)
强推覆盖代码:git push -f
推送本地分支到远程:git push origin (branchname)
跟踪远程分支并推送:git push --set-upstream origin (branchname)
重命名本地分支:git branch -m (old) (new)
查看这个目录下所有修改和删除但没有提交的文件。执行这个命令:git add –i [path]
查看提交历史:
列出历史记录:git log
查看某个作者的日志: git log --author="John"
历史记录简洁版本:git log --oneline --decorate
什么时候出现了分支、合并:git log –-oneline –grash
逆向显示所有日志:git log --reverse --oneline
添加远程仓库:
1. git add (file)添加文件,建议只添加自己修改的文件,不建议用git add . 提交所有文件
2. git commit -m 'add jomoo test' 提交代码并注释。
3. git pull 拉取最新的代码,若有冲突,则修改冲突的文件,在执行1,2步骤。
4. git push 拉最新代码推到代码仓库。
查看当前远程库 git remote
可以看到每个别名的实际链接地址 git remote –v
提取远程仓库:
从远程仓库下载新分支与数据:git fetch
从远程仓库提取数据并尝试合并到当前分支:git pull
你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。
将本地分支推送到远程仓库:git push origin local_branch:remote_branch
删除远程仓库:git remote rm [别名]
GIT解决pull冲突情况
冲突情况1:本地进行了修改,想要git pull 的时候,别人已经提交,导致内容冲突,pull失败。
解决方法1:
直接commit本地的修改
解决方法2:
通过git stash
git stash
git pull
git stash pop
通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
解决方法3:
放弃本地修改
git reset --hard
git pull
Git 与 SVN 区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
Git 与 SVN 区别点:
1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
一般工作流程如下:
克隆 Git 资源作为工作目录。
在克隆的资源上添加或修改文件。
如果其他人修改了,你可以更新资源。
在提交前查看修改。
提交修改。
在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
4000
常用命令:
git add 暂存区的目录树被更新,将工作区的目录写入暂存区
git add .添加当前项目的所有文件
git commit –m ‘提交代码并注释’:将暂存区的目录树提交到版本库中
git commit –am ‘第一次版本修改’:直接将工作区的代码提交到版本库
git clone [url]复制对应地址的仓库下来
git pull 拉取最新的代码,若有冲突,则修改冲突的文件 ,不加参数的话 只是针对当前分支与远程自己分支进行同步更新
git push 拉最新代码推到代码仓库。
git pull origin next:master:取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git reset head:暂存区的目录树被版本库中的代码重写,但是工作区不受影响
git reset --hard:将版本回退到上一次提交的版本
git rm –cached<file> 会直接从暂存区删除文件,工作区则不做出改变
git rm file 会将文件从缓存区和工作区删除
git checkout--<file> 将暂存区的代码写入工作区(可能会误删工作区未提交的代码)
git checked HEAD:将版本库中的所有代码替代工作区的代码,同时更新暂存区的代码
touch:新建一个新的文件
ls:显示当前目录下的所有文件
git status –s:查看项目的当前状态
git diff 显示你上次提交更新后的更改或者写入缓存的改动
git config --global user.name '用户名':设置用户名
git config --global user.email 邮箱地址:设置邮箱
密钥管理:
1、cd ~/.ssh 是否存在主目录密钥的目录
2、ls 看下是否存在密钥文件
3、ssh-keygen -t rsa –C 生成密钥
4、cat ~/.ssh/id_rsa.pub 查看公钥
5、添加公钥到远程仓库
cd ..代表上一级目录
文件的几种状态:
A:工作区中存在,提交到暂存区,且工作区和暂存区的代码一致
AM:文件提交到暂存区后又有改动
AD:暂存区中有文件,而工作区中没有
??:代码值存在工作区,未提交到暂存区
M:提交到版本库后代码仍然有改动、
分支管理:
创建分支:git branch (branchname)
切换分支:git checkout(branchname)
合并分支到当前分支上:git merge (branchname)
创建新分支并立即到该目录下:git checkout –b(branchname)
删除分支:git branch –d(branchname)
重命名分支:git branch -m devel develop
更新主分支的代码到自己分支上:git merge master,在更新过程中也行会因为冲突出现报错,
本地解决冲突后提交代码,合并完成。
(创建分支用来备份代码)
查看远程分支:git branch –a
删除远程分支:git push origin --delete (branchname)
强推覆盖代码:git push -f
推送本地分支到远程:git push origin (branchname)
跟踪远程分支并推送:git push --set-upstream origin (branchname)
重命名本地分支:git branch -m (old) (new)
查看这个目录下所有修改和删除但没有提交的文件。执行这个命令:git add –i [path]
查看提交历史:
列出历史记录:git log
查看某个作者的日志: git log --author="John"
历史记录简洁版本:git log --oneline --decorate
什么时候出现了分支、合并:git log –-oneline –grash
逆向显示所有日志:git log --reverse --oneline
添加远程仓库:
1. git add (file)添加文件,建议只添加自己修改的文件,不建议用git add . 提交所有文件
2. git commit -m 'add jomoo test' 提交代码并注释。
3. git pull 拉取最新的代码,若有冲突,则修改冲突的文件,在执行1,2步骤。
4. git push 拉最新代码推到代码仓库。
查看当前远程库 git remote
可以看到每个别名的实际链接地址 git remote –v
提取远程仓库:
从远程仓库下载新分支与数据:git fetch
从远程仓库提取数据并尝试合并到当前分支:git pull
你可以首先执行 git fetch [alias] 告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。
将本地分支推送到远程仓库:git push origin local_branch:remote_branch
删除远程仓库:git remote rm [别名]
GIT解决pull冲突情况
冲突情况1:本地进行了修改,想要git pull 的时候,别人已经提交,导致内容冲突,pull失败。
解决方法1:
直接commit本地的修改
解决方法2:
通过git stash
git stash
git pull
git stash pop
通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
解决方法3:
放弃本地修改
git reset --hard
git pull
相关文章推荐
- Git 系列之三:Windows 下 Git 配置与使用指南-转载
- git使用(一)(转载)
- Git 安装和使用教程(转载)
- Git分布式版本控制系统使用教程(转载)
- ubuntu 安装git以及如何使用(部分内容转载)
- (转载)Git使用教程
- 【转载】使用git将本地项目上传到github
- zz 【转载用于学习】IOS开发技巧--Git的使用
- 转载eclipse-git使用教程
- Centos下使用gitosis配置管理git服务端(转载)
- 15分钟学会使用Git和远程代码库(转载)
- 使用 Git 生成编译版本号[转载]
- Git使用与配置(转载)
- git使用(二)(转载)
- (转载)在Visual Studio 2015中使用Git
- 转载:git概念 原理 使用
- [转载]Git安装以及使用Git 管理个人文档
- Android问题集锦转载之七:android的repo和git使用遇到的疑难杂症
- EGit(Git Eclipse Plugin)使用(转载)
- git使用(三)(转载)