Git使用初步

来源:互联网 发布:域名出售系统源码 编辑:程序博客网 时间:2024/04/28 05:50

首先说明一下,Git的话,用得比较少,目前版本管理用的还是SVN比较多。

不过Git感觉高大上一点,而且有很多代码托管站,因此也要学习一下。


新手,所以内容没有进行过多的考究,如有错漏,见谅。

本文会不断连载和更新,直到我认为自己已经是一个Git使用高手为止。


本文以CSDN Code和GitHub为例(主要是前者)。

并且摒弃可视化界面,全部采用命令行的形式。


目录:

(虽然做了超链接,但是csdn的转跳貌似不能本页内转跳,各位用搜索的吧)

一、 首先是安装git软件

二、 添加ssh公钥

三、 创建项目

四、 更新原有的项目(push)

五、 进行README文件的编写

六、 把项目下载到本地(clone和pull)

七、分支操作

八、 Git基本语法(待添加示例)

九九九、一些技巧



一、 首先是安装git软件

Git客户端

安装过程不多说了,windows下安装注意安装的时候会让你选择是否要覆盖find等原有的cmd命令。

如果用惯了linux的同学建议覆盖,否则就保留吧。

下文以windows为例。


二、 添加ssh公钥


双击桌面上的 “Git Bash”。

如果没有这个东东的话,自己新建一个快捷方式,

目标:"C:\Program Files\Git\git-bash.exe" --cd-to-home

起始位置:%HOMEDRIVE%%HOMEPATH%

打开命令行之后输入:

cd ~/.sshmkdir keybackupmv id_rsa* keybackup/    #备份ssh-keygen -t rsa -C "你的邮箱"

然后直接三个回车。

这里注意邮箱一定要填准了,后面要对应得上才行。

然后就会生成两个文件:id_rsa 、 id_rsa.pub


cat id_rsa.pub 得到公钥里面的内容,然后添加到CSDN Code的“用户设置--SSH公钥管理”里面。

这样,就可以提交而不用提示输入密码之类的东东了。

用过免密码登陆远程ssh的人应该都懂这个东西的。


三、 创建项目

目前,貌似,只能在csdn页面上创建项目后push上去,好像不能在本地直接创建项目后上传的。

打开csdn code的自己的首页,点击“创建新项目

填写好信息之后就会创建一个项目了,例如我的colorPalatte项目,它的ssh地址为: git@code.csdn.net:samed/colorpalatte.git

知道这些信息之后,回到git命令行。

如果项目已经写了一些源码了,就把源码拷贝过来当前文件夹,例如:

mkdir -p /e/Git/colorPalattecp -r /someplace/colorPalatte/ /e/Git/colorPalattecd /e/Git/colorPalattegit init         # 初始化项目(每个项目仅运行一次)# 配置信息(每个项目一般只运行一次,此处示例为仅本项目可用,避免存在多个托管站出现冲突的情况)git config user.name 'samed'    # 引号内的内容是这次提交的人的名字,建议用你csdn的登陆用户名,这样就能关联用户信息。git config user.email 'XX@XX.com'     # 和你创建rsa证书的时候的email要对应上,因为你的公钥已经发布到csdn code上了。git remote add origin git@code.csdn.net:samed/colorpalatte.git     # 这里就是之前提交的ssh地址了。# 提交本地项目文件(每次提交均需要运行)git add ./git commit -m "V1.0"     # 引号内是本次提交的名字(个人习惯是用版本号作为提交名字)# 上传服务器git push -u origin master    # 采用origin服务器配置,提交到master分支。

最后一步可能要等一段时间,取决于你的网络环境和项目文件的大小。

提交成功后就能看到当前文件夹有个master的字眼:(因为GitHub生成分支要收钱,暂时没有钱,所以我还没有试过不是master是什么情况,有经验的老司机给指点一下)



四、 更新原有的项目(push)

接着“三”来讲,如果你已经建立过一个项目并且曾经提交过了。

那么就不用那么麻烦了。

针对新增的文件进行提交即可:(这里就不作过多的解释了)

git add ./git commit -m "V1.1"git push -u origin master


五、 进行README文件的编写

其实,这个和git没有关系了,所以不多说,知道用的是markdown的语法就行了,还有说一下csdn code 和 GitHub的区别。

在GitHub上,默认是显示README.md这个文件的。

而csdn code上,如果有README-zh.md这个文件,优先显示这个,如果没有,就显示README.md。

这个区别还是很贴心喔,赞一个,符合中国人的使用习惯。

另外,GitHub上 LINCENSE 文件是标配,所以建议把这个文件也弄上去,看起来俺们很专业。

附上常用的两个 LINCENSE 文件:

MIT LICENSE: http://download.csdn.net/detail/samed/9524141

MIT协议是最宽松的开源协议,只要说明一下是开源的OK了。

GUN LICENSE: http://download.csdn.net/detail/samed/9524148

GUN协议是是比较严格的开源协议,如果你使用了基于GUN的开源代码,则基于此的项目均需要开源。


六、 把项目下载到本地(clone和pull)

经过了四的步骤,知道了怎么更新本地代码到托管库,那么怎么下载回来呢?

这个步骤经常发生在新的电脑、或者“家里”的电脑进行操作。

有两种办法:

6.1、 全新项目

一个命令就好了:git clone 项目的https地址

举例,还是按照俺的colorPalatte项目,两个地址分别是:

SSH:git@code.csdn.net:samed/colorpalatte.git

HTTPS:https://code.csdn.net/samed/colorpalatte.git

所以使用这个命令 “git clone https://code.csdn.net/samed/colorpalatte.git” 将会在当前目录下新建一个 colorPalatte 文件夹,并且把项目文件都下载下来。

如果仅仅是下载,那么这样就完了,如果是后面要上传的,那么还需要设置一下user.name、user.email、remote等(参考6.2)

6.2、 已经存在的项目

如果已经配置过了,那就是一个命令:git pull 库SSH地址 分支名

举例,已经配置了SSH地址是 origin ,分支是master,那么就是:“git pull origin master

如果不知道咋配置,可以参考一下“四、 更新原有的项目(push)”的内容,照顾新手罗嗦一下:

git config user.name 'samed'

git config user.email 'XX@XX.com'

git remote add origin git@code.csdn.net:samed/colorpalatte.git

另外,其实用这种方法也可以建立全新项目,先建立一个同名目录,然后进入目录git init一下,在按照上面三行设置一下,就可以pull全部文件到本地了。


七、分支操作

实际开发过程中,需要经常添加分支(目前github免费用户不能添加分支),因为针对当前版本的功能,需要先经过检验测试之后才能投入生产。

所以新建分支,然后经过验证之后再合并分支,是最正常的做法了。

7.1 创建分支(步骤)

  1.  列举当前所有分支:git branch
  2.  创建分支(假设名称为2.0):git branch 2.0
  3.  切换到分支:git checkout 2.0
7.2 合并到主分支(步骤)

  1.   切换到主分支:git checkout master
  2.   合并:git merge 2.0
  3.   删除已经合并的分支:git branch -d 2.0    #注意,-d参数要求已经合并之后的分支才能删除,如果没有合并,使用-D参数强制删除

7.3 删除远程分支(方法列表)

  • git push origin :<branchName>
  • git push origin --delete <branchName>    # 此为git1.7.0之后的版本才有
7.5 下载远程分支(方法列表)

  •  直接新增的话:git clone -b <branchName> <git_(http/ssh)_url>                     # 注意了,只下载这个分支而不下载master
  •  在已有的git项目中下载:git fetch origin <branchName>:<branchName>      # 第一个branchName表示远程分支名字,第二个表示在本地建一个分支的名字。
7.6 强制将远程分支覆盖到本地(步骤)

  1.  git checkout <branchName>                    # 良好习惯,先切换到本地同名分支
  2.  git fetch --all  
  3.  git reset --hard origin/<branchName>   # 此时已经下载文件了
  4.  git pull                                                           # 此步骤如果是在master分支下操作,则会进行merge操作。



八、 Git基本语法(待添加示例)

语法功能说明git clone克隆版本库git pull拉回远程版本库的提交git push推送至远程版本库git add添加至暂存区git add–interactive交互式添加git apply应用补丁git am应用邮件格式补丁git annotate同义词,等同于 git blamegit archive文件归档打包git bisect二分查找git blame文件逐行追溯git branch分支管理git cat-file版本库对象研究工具git checkout检出到工作区、切换或创建分支git cherry-pick提交拣选git citool图形化提交,相当于 git gui 命令git clean清除工作区未跟踪文件git commit提交git config查询和修改配置git describe通过里程碑直观地显示提交IDgit diff差异比较git difftool调用图形化差异比较工具git fetch获取远程版本库的提交git format-patch创建邮件格式的补丁文件。参见 git am 命令git grep文件内容搜索定位工具git gui基于Tcl/Tk的图形化工具,侧重提交等操作git help帮助git init版本库初始化git init-db同义词,等同于 git initgit log显示提交日志git merge分支合并git mergetool图形化冲突解决git mv重命名git rebase分支变基git rebase–interactive交互式分支变基git reflog分支等引用变更记录管理git remote远程版本库管理git repo-config同义词,等同于 git configgit reset重置改变分支“游标”指向git rev-parse将各种引用表示法转换为哈希值等git revert反转提交git rm删除文件git show显示各种类型的对象git stage同义词,等同于 git addgit stash保存和恢复进度git status显示工作区文件状态git tag里程碑管理



九九九、一些技巧

1. 打包新文件

因为git是支持本地提交,本地管理版本库的,因此有可能本地版本修改了之后需要同步到现网环境去,那么要怎么打包这些更新了之后的文件呢?

用一句话就ok了:(当然,要进到项目当前目录下面)

git status -s | awk 'BEGIN{a=""}{a=a" "$2}END{print a}' | xargs -i echo "tar czvf 123.tar.gz {}" |sh



好了,今天先讲这么多。




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

参考文献:

1. CSDN HELP



0 0
原创粉丝点击