您的位置:首页 > 产品设计 > UI/UE

Github gui使用

2015-11-23 18:45 295 查看
管理员初建项目(GUI界面下操作)

打开git gui,选择新建版本库
浏览到需要版本控制的文件夹,选择确认,即建立了本地端
在git或者oschina新建项目,作为远端.
(可选项,建议)远端和本地端建立加密ssh连接--点击帮助--show ssh key--create key--输入密码(无需密码,不用输入)--生成sshkey--在osachina点击个人资料,把公钥添加到远端.
点击远端--新增--名字任意输入--location输SSH链接(在oschina打开项目后,右上角可看到. 如果上一步没有执行,则输入https链接)--输入密码(git os的账号,密码)
远端新增完毕,本地端新增完毕,就可以双方同步了.
本地跟服务端如果有差异,首次提交可选择--缓存改动--提交--上传(强制覆盖已有分支)
平时提交可选择--提交--上传. 在远端刷新项目即可看到.

研发角色A加入并编辑项目(GUI界面下操作)

安装git,安装时选择有gui的选项。
把git帐号邮箱提供给远端项目管理员,由管理员添加到项目组,公开项目不用此步骤。

打开git gui,点击帮助--show ssh key--create key--输入密码(无需密码,不用输入)--生成sshkey---登录https://git.oschina.net/---个人资料---把本地的SSH公钥---添加。(添加后就可以使用SSH加密协议来进行代码同步了)
选择克隆已有版本库,sourelocation输入项目SSH链接,target输入本地目录(纯英文如:d:/myproject)
本地配置帐号:点击编辑,选项,把账户配置到gui。(此账户将会被显示在每次的提交版本中)
克隆完毕后。每次本地修改完成,点击重新扫描,缓存改动,写入注释,提交,上传。
输入username和密码(即1中的git的邮箱和密码)
提交成功

Git gui下载:http://download.csdn.net/detail/landehuxi/9294905

FAQ:

缓存,提交,上传时提示Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again.

从远端获取后,点击本地合并
在版本表达式中输入最新的版本号.(可在项目首页右上角看到版本号 最新提交: 15aaf6af38a)

2.如何删除本地仓库
直接删除本地仓库目录下的隐藏文件夹.git即可

我们先要做好准备工作,将某个项目创建版本库,我这里就新建一个Android项目GitTest,创建一个版本库。打开Git Bash,进入到这个项目的根目录下,然后执行git init命令,如下图所示:



这样,准备工作就做好了。

一、忽略文件:

以忽略test目录为例.
进入test父目录,右键,选择git bash
vim .gitignore
输入/test
按ESC 输入:wq,回车即可.
重新扫描文件,test目录中的文件将被排除在外.

二、查看修改的内容:(未提交之前)

Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

在进行一次代码提交之后,我们后面还需要对项目不断地进行维护,添加新功能。理想的情况是: 每完成一小块功能,就执行一次提交 。Git会记住每一次提交的状态。

注: 这里能查看到的修改内容是指提交之前的修改 。如果你已经提交了,马上再输入这个命令,就看不到修改的内容了。

1、查看被修改的文件: git status

查看文件修改的情况的方法非常简单,只需在根目录执行如下命令:
git status


然后Git会提示目前项目中没有任何可提交的文件,因为我们才刚刚提交过。现在我们在布局文件中,添加一个Button,添加的代码如下:
<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="第一个按钮" />


然后再输入git status看一下:



git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,activity_main.xml被修改过了, 但这还只是没有提交的修改 。

2、查看文件的具体修改内容: git diff

之前的git status命令可以查看被修改的文件是什么,如果要查看具体的修改内容,需要输入如下命令:
git diff


执行结果如下:



git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式。

如果只想查看activity_main.xml这个文件的更改内容,可以使用如下命令:
git diffres/layout/activity_main.xml 


执行结果如下:



3、撤销未add的修改: git checkout

只要代码未提交,所有修改的内容都是可以撤销 的。可以执行 git checkout 这个命令。即执行如下命令:
git checkout -- res/layout/activity_main.xml


执行之后,我们对activity_main.xml这个文件在提交之前所做的全部修改都被撤销了。

重新运行git status命令检查一下:



可以看到,当前项目没有任何可以提交的文件,撤销成功。

4、撤销未commit的修改:git reset和 git checkout

不过上面这种方式 只适用于还没有执行过add命令的文件 ,如果某个文件已经被add过了,这种方式是无效的。

此时应该采取的步骤是: 先使用reset命令取消添加,再使用checkout命令将修改的内容进行撤销 。即执行如下命令:
git reset HEAD res/layout/activity_main.xml

git checkout -- res/layout/activity_main.xml


用暂存区中filename文件来覆盖工作区中的filename文件。

【总结】

命令 git checkout -- filename 意思就是, 把filename这个文件在工作区的修改全部撤销。

这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

一句话总结,即: 用暂存区中filename文件来覆盖工作区中的filename文件 。

注:git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

5、删除文件:

当你直接在在文件管理器中把没用的文件(这里以忽略文件为例)删了,这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:



现在你有两个选择, 一是确实要从版本库中删除该文件 ,那就用命令git rm删掉,并且commit:
git rm .gitignore

git commit -m "delete .gitignore"


另一种情况是删错了,现在不想删除 ,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout -- .gitignore


注: git checkout其实是用版本库里的版本(准确来说是暂存区的版本)替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原” 。

三、查看提交记录:( log命令 )

每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

当某个项目开发了几个月之后,我们可能已经执行过上百次的提交操作了。这个时候估计你早就忘记了每次提交都修改了哪些内容。不过没关系,Git一直都帮我们记录着呢。

我们现在将之前的修改进行提交:
git add .

git commit -m "add button1"


然后执行如下命令查看提交记录:
git log


执行的结果如下:



可以看到,每次提交都会包含提交id,提交人,提交日期,以及提交描述这四个信息。

你看到的一大串类似“ 3628164...882e1e0”的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要好几个人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

当提交记录非常多的时候,我们只想查看其中的某条记录,可以在该log命令的后面加上对应记录的id,并加上-l参数。即: git log[id] -l

而如果想要查看这条记录提交记录的具体修改了什么内容,可以继续加上-p参数。即: git log[id] -l -p

四、版本回退:

我们现在进行第二次修改,也就是说,在布局文件中添加一个按钮button2,然后执行git log命令,显示效果如下:



上图显示,我们总共进行了三次提交。

每提交一个新版本,实际上Git就会把它们自动串成一条时间线。执行如下命令进入可视化界面:
gitk


执行后弹出如下界面:



现在开始我们的版本回退工作。

首先,Git必须知道当前版本是哪个版本,在Git中,用 HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^ ,当然往上100个版本写100个^比较麻烦,所以写成HEAD~100。

【新版本回到旧版本】

现在,我们 从“版本3”回退到上一个版本 ,即回退到“版本2”,就可以使用git reset命令:
git reset --hard HEAD^


执行效果如下:



--hard参数有啥意义?这个后面再讲,暂时先放心使用。

再执行git log命令,发现版本三已经不见了:



【旧版本回到新版本】

如果现在要从 “版本2”回到“版本3” ,该怎么办呢?办法其实还是有的。

只要上面的命令行窗口还没有被关掉,就可以顺着往上找,只要找到版本3的id号就行了,即输入如下命令:
git reset --hard 508972a


版本号没必要写全,写前7位就可以了,Git会自动去找。

如果你想回退到某个版本,但是电脑已经关闭了,这个时候已经找不到新版本的commit id了,该怎么办呢?办法总是有的。Git提供了一个命令 git reflog用来记录你的每一次命令。即输入如下命令:
git reflog




于是,我们终于找到了版本三的commit id。又可以输入同样的命令回到版本三了。

现在我们可以做一个总结了:

HEAD指向的版本就是当前版本,因此, Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log可以查看有哪些版本,以便确定要回退到哪个版本
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

五、工作区和暂存区的概念:

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

工作区(Working Directory): 就是你在电脑里能看到的目录;
版本库(Repository): 工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本库

Git的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区 ,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。



注:分支和HEAD的概念稍后再说。

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用“git add”把文件添加进去,实际上就是把 文件修改添加到暂存区
第二步是用“git commit”提交更改,实际上就是把 暂存区的所有内容提交到当前分支

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,commit就是往master分支上提交更改。可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit (working directory clean)。

注:用“git diffHEAD -- filename”命令可以查看工作区和暂存区里面最新版本的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: