git 帐户绑定以及使用
来源:互联网 发布:kvm虚拟机网络配置 编辑:程序博客网 时间:2024/05/24 01:42
安装git
1)windows
安装msysgit,下载地址:http://msysgit.github.io/
安装的时候,基本选择默认设置,但是:
在Adjusting your PATH environment页,勾选Run Git from the Windows Command Prompt
2)ubuntu
用命令“git --version”查看是否已安装,且版本为1.9.5或更高。若没安装或版本太低:
- $ sudo apt-get install git-core git-gui git-doc gitk
3)mac
http://sourceforge.net/projects/git-osx-installer/,不仅能装Git本身(选1.9.5或以上版本),还有GUI的安装包
启动git
1)windows
Windows:使用Windows自带的命令行界面
可以在Windows自己的命令行界面下可以直接运行Git命令行,比如
- D:/test> git help
当命令中有些特殊参数的时候,要加上双引号。比如
- D:/test> git log HEAD^
特殊符号^会被Windows误解,所以要加双引号,写成
- D:/test> git log "HEAD^"
Windows:使用msysGit自带的Bash
使用Bash就不用像上面那样加双引号了。启动Git Bash的简便方法是,在Windows Explorer里,适当目录的右键弹出菜单,Git Bash。此外,也可以从Windows开始菜单进入。
初次使用时,点击界面右上角,在菜单中选择“属性”项,在弹出对话框中,勾选上“快速编辑模式”和“插入模式”,这样将来copy paste比较方便。
注意,有利有弊,这个Bash对中文的支持不太好。
2)linux
- $ git help
设置git
不论Windows还是Linux还是Mac,建议至少config下述内容
- git config --global user.name "test" # 请换成你自己的名字,除非你凑巧也叫wukong.sun
- git config --global user.email "test@163.com" # 同上
- git config --global push.default simple # 要是你非要用低版本的Git(比如1.7.x),好吧,那就不设simple设current,否则你的Git不支持
- git config --global core.autocrlf false # 让Git不要管Windows/Unix换行符转换的事
- git config --global gui.encoding utf-8 # 避免git gui中的中文乱码
- git config --global core.quotepath off # 避免git status显示的中文文件名乱码
Windows上还需要配置:
- git config --global core.ignorecase false
设置SSH
在Linux的命令行下,或Windos上Git Bash命令行窗口中(总之不要用iOS),键入:- $ssh-keygen -t rsa -C "test@163.com"
如果在Linux上,需要把其中的私钥告诉本地系统:
- $ ssh-add ~/.ssh/id_rsa
再把其中公钥的内容复制到GitLab上。具体方法是:
显示ssh公钥的内容:
- $ cat ~/.ssh/id_rsa.pub
打开github页面:https://github.com/settings/profile,选择SSH Keys,然后点击Add SSH Key,把刚才ssh公钥id_rsa.pub(windows下的用户目录找到.ssh文件夹进去就可以看到)的内容paste进去。不需要填title,title会自动生成。
注意:需要copy最开头的“ssh-rsa ”这几个字。
开始使用
1)创建新的git仓库
- $ mkdir git_repo
- $ cd git_repo
- $ git init
- $ echo "test" > README.mkd
- $ git add README.mkd
- $ git commit -m "add README.mkd file"
- $ git remote add origin git@github.com:username/test.git
- $ git push -u origin master
2)使用已存在的git仓库
- $ cd git_repo
- $ git remote add origin git@github.com:username/test.git
- $ git push -u origin master
注意,如果提示fatal: remote origin already exists.,那么说明该本地仓库已经有远端地址了。你可以先使用git remote rm origin删除origin,或者使用git remote add other_name git@github.com:username/test.git来添加(提交时记得使用git push -u other_name master)。
3)一次提交到多个远端仓库
假设现有仓库地址为: git@github.com:username/test.git
- $ git clone git@github.com:username/test.git
- $ cd test
- $ vim .git/config
- [core]
- repositoryformatversion = 0
- filemode = true
- bare = false
- logallrefupdates = true
- [remote "origin"]
- url = git@github.com:username/test.git
- url = git@gitshell.com:username/test.git
- url = git@bitbucket.org:username/test.git
- fetch = +refs/heads/*:refs/remotes/origin/*
- [branch "master"]
- remote = origin
- merge = refs/heads/master
注意:在 Git 2.0 将会更改默认的push动作为【只 push 当前 branch 到远端仓库】。如果想继续使用git push both命令需要手动设置一下git push的默认动作git config --global push.default matching。
push.default有几个简单动作,这里介绍matching和simple,二者意思分别是 push 本地所有的分支到远端仓库和 push 本地当前分支到上游分支。这个解释貌似还不够精确,可以man git-config来查看详细说明。
4)在现有仓库上创建孤儿分支
孤儿分支意思为该分支中没有任何内容,与之前创建的其他分支没有任何关联。
- $ git clone git@github.com:username/test.git
- $ cd test
- $ git checkout --orphan new_branch
- Switched to a new branch 'new_branch'
- $ git rm -rf . # 删除旧工作目录树中所有文件
- $ rm .gitignore # 如果有该文件的话就删除
- $ echo "orphan branch" > README.mkd
- $ git add .
- $ git commit -m "add README.mkd file"
- $ git push origin new_branch
5)提交单个分支到远端git仓库
git push命令默认是将所有分支(branch)都提交到git仓库,有时你只想提交某个分支到远端仓库,那么就就需要使用git push origin HEAD。当然也可以使用git config --global push.default tracking命令来改变git push的默认操作,意思是执行git push时默认只提交当前分支到远端git仓库。
git常用指令
以下几个是git常用的指令,可以简单了解一下。
1)git config
在使用git前最好先配置一下你的个人信息及使用偏好。以下命令的意思就不用解释了吧,执行完以下命令就会在你的家目录(~)下生成一个文件~/.gitconfig。
- $ git config --global user.name "username"
- $ git config --global user.email test@163.com
- $ git config --global core.editor vim
- $ git config --global merge.tool vimdiff
- $ git config --global color.status auto
- $ git config --global color.branch auto
- $ git config --global color.interactive auto
- $ git config --global color.diff auto
- $ git config --global push.default simple
- $ git config --global alias.co checkout
- $ git config --global alias.ci commit
- $ git config --global alias.st status
- $ git config --global alias.last 'log -1 HEAD'
- $ git config --global alias.unstage 'reset HEAD --'
2)git add
添加文件内容到索引中去(暂存文件),几个简单示例:
- $ git add .
- $ git add --all
- $ git add *.txt
- $ git add directory/*.sh
- $ git reset .
- $ git reset *.txt
- $ git reset directory/*.sh
删除索引和当时工作目录中的文件。
- $ git rm filename
- $ git rm -f *.txt
- $ git rm -r .
将当前改动记录到仓库中,即提交改动到本地仓库中。
- $ git commit -m "add a file and remove a file"
突然你又不想git commit了,那么执行以下命令:
- $ git reset HEAD^
- $ git commit -m'msg'
- $ git add forget_file
- $ git commit --amend
- $ git clone git@github.com:username/test.git
- $ cd test
- $ git reset HEAD^
- $ git push -f master
5)git status
查看当前工作目录的状态,即修改、添加及删除了哪些文件。
- $ git status
检出一个分支和目录到当前工作目录中,可以简单理解为切换分支的命令。
以下命令分别为切换到分支 branch1 和创建一个新的分支 new_branch 。
- $ git checkout branch1
- $ git checkout -b new_branch
- $ git checkout -- file_name
列出、创建和删除分支。
以下指令分别为列出本地分支、所有分支、远端分支、创建、删除、强制删除分支。
- $ git branch --list
- $ git branch --all
- $ git branch --remotes
- $ git branch new_branch
- $ git branch --delete branch_name
- $ git branch -D branch_name
- $ git branch -r
- $ git branch -d -r origin/develop
如果出现冲突,那么手动解决冲突就可以了。
- $ git checkout branch_name
- $ git checkout master
- $ git merge branch_name
合并分支之后如果不再需要以前的分支了,那么可以在本地及远程删除它。
- $ git branch -d branch_name
- $ git branch -D branch_name
- $ git push origin :branch_name
这条命令耐人寻味啊,其中origin是你的远程仓库名字(git remote -v可以查看到)。
10)git diff
查看改动内容。
- $ git diff filename
- $ git diff .
- $ git diff revision1 revision2
- $ git diff branch1 branch2
- $ git add .
- $ git diff --cached
View the redundant Tab or Space in your codes:
- $ git diff --check
- $ git diff --check --cached
来自:http://blog.csdn.net/iam333/article/details/45023681
锁定受保护分支
在对 Git 不熟悉的时候,时常苦恼于各个分支不受约束,任何开发人员都可以向任何分支直接推送任何提交,各种未经审查的代码、花样百出的 Bug 就这样流窜在预发布分支上。
其实我们可以通过 GitLab 的 受保护分支(Protected Branches) 功能解决该问题,该功能可用于:
- 阻止 Master 角色以外的开发人员直接向此类分支推送代码,保持稳定分支的安全性;
- 在向受保护分支合并代码前,强制进行代码审查。
接下来我们就使用这项功能,锁定我们的受保护分支——主分支 master
和预发布分支 release-*
,以阻止 Developer 直接向这两类分支中推送代码:
锁定后,Developer 推送代码将会报错:
$ git push origin masterCounting objects: 4, done.Delta compression using up to 4 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.Total 3 (delta 1), reused 1 (delta 0)remote: GitLab: You are not allowed to access master!remote: error: hook declined to update refs/heads/masterTo git@website:project.git ! [remote rejected] master -> master (hook declined)error: failed to push some refs to 'git@website:project.git'
发起合并请求
锁定受保护分支后,要么 Master 需要时刻、主动关注各特性分支的进度,要么 Developer 需要线下、口头向 Master 汇报其特性分支的进度,这两种做法都非常不便于 Master 管理每个预发布分支的合并,尤其在团队大、分支多的情况。
我们可以通过 GitLab 的 发起合并请求(Merge Request) 功能解决该问题,这样既可以让 Developer 更自如的掌控自己分支进度,在必要的时候才主动发起合并请求;又可以减轻 Master 的合并工作量和沟通成本,可谓一举两得。
新建合并请求
第一步,按表单要求填写合并请求。注意,对于 Developer 而言:
From
是你的特性分支feature-*
;To
只可能是预发布分支release-*
;Title
和Description
要填写恰当的分支描述;Assign to
是该项目的 Master。
审查合并请求
第二步,Master 收到合并请求后,进行代码审查。逐一查看 Commits
一栏提交的内容即可,对于需要改进的代码,可以直接在该行添加注释,非常方便。
如果对整个请求还有疑问的地方,还可以通过底部的 Discussion
功能进行线上讨论。
处理合并请求
第三步,针对审查结果进行相应处理:
关闭
对于完全不合格的垃圾代码、或者废弃的特性分支的合并请求,Master 点击右上角的 Close
按钮即可。合并请求将被关闭,相当于扔进回收站。
改进
对于分支内需改进的代码,Developer 直接修正并推送即可,合并请求将会自动包含最新的推送提交。
接受
Master 审查无误后,可以接受该次合并请求。点击 Accept Merge Request
按钮将自动合并分支,勾选 Remove source-branch
将同时删除该特性分支。
整个自动合并过程如果以命令形式手工执行的话,步骤如下:
#Step 1. Update the repo and checkout the branch we are going to merge git fetch origingit checkout -b test origin/feature-test#Step 2. Merge the branch and push the changes to GitLab git checkout release-2016.4.7git merge --no-ff feature-testgit push origin release-2016.4.7
以非快进式合并完成后,祖先图谱(graph)的展现结果如下:
* be512fa (HEAD, origin/release-2016.4.7, release-2016.4.7) Merge branch 'test' into 'release-2016.4.7'|\| * 1f52adf 测试|/* a4febbb (tag: 1.0.0, origin/master) 格式化货币保留两位小数
最后需要注意的是,只有 Assignee
才能够接受合并请求,其它人只会被通知:
You don’t have permission to merge this MR
总结
GitLab 提供的上述功能非常实用,为项目的源码管理提供了有力的支持。
- git 帐户绑定以及使用
- git安装以及使用
- Git使用以及指令
- win10取消微软帐户绑定使用本地账户登录的解决方法
- 使用SSH_Key完成Git与GitHub绑定
- git 安装以及更新使用
- git-svn使用以及问题解决
- Git以及GitHub的使用
- Git的安装以及使用
- Git的命令以及使用
- git常用命令以及使用技巧
- GridView 行数据主键绑定以及使用
- linux子接口以及绑定网卡使用
- Hibernate绑定session以及api的使用
- git 使用 以及 TortoiseGit工具的使用
- 初次使用git配置以及git如何使用ssh密钥
- fedora15使用root帐户登录
- 使用数据绑定控件GrideView的原因以及如何使用
- emap动态SQL,动态条件配置小技巧
- 分页
- Webview调用本地相册
- ovs+dpdk bond功能总结
- 51nod 1002 数塔取数问题
- git 帐户绑定以及使用
- PHP expresses two different strings to be the same [duplicate]
- python 第九章 迭代
- 泛型之在方法体内使用泛型参数
- Linux_变量与搜索
- 不能将参数 1 从“char *”转换为“LPCTSTR”
- EntiryFramework中事务操作实例
- Delphi中的var、constant、out的区别
- rank()