Git使用初步

版权声明:本文为sam的原创文章,转载请添加出处:http://blog.csdn.net/samed https://blog.csdn.net/samed/article/details/51444718

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

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


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

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


本文以CSDN CodeGitHub为例(主要是前者)。

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


目录:

(虽然做了超链接,但是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 ~/.ssh
mkdir keybackup
mv 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地址为: [email protected]:samed/colorpalatte.git

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

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

mkdir -p /e/Git/colorPalatte
cp -r /someplace/colorPalatte/ /e/Git/colorPalatte
cd /e/Git/colorPalatte
git init         # 初始化项目(每个项目仅运行一次)
# 配置信息(每个项目一般只运行一次,此处示例为仅本项目可用,避免存在多个托管站出现冲突的情况)
git config user.name 'samed'    # 引号内的内容是这次提交的人的名字,建议用你csdn的登陆用户名,这样就能关联用户信息。
git config user.email '[email protected]'     # 和你创建rsa证书的时候的email要对应上,因为你的公钥已经发布到csdn code上了。
git remote add origin [email protected]: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:[email protected]: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 '[email protected]'

git remote add origin [email protected]: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 blame
git 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 通过里程碑直观地显示提交ID
git diff 差异比较
git difftool 调用图形化差异比较工具
git fetch 获取远程版本库的提交
git format-patch 创建邮件格式的补丁文件。参见 git am 命令
git grep 文件内容搜索定位工具
git gui 基于Tcl/Tk的图形化工具,侧重提交等操作
git help 帮助
git init 版本库初始化
git init-db 同义词,等同于 git init
git log 显示提交日志
git merge 分支合并
git mergetool 图形化冲突解决
git mv 重命名
git rebase 分支变基
git rebase–interactive 交互式分支变基
git reflog 分支等引用变更记录管理
git remote 远程版本库管理
git repo-config 同义词,等同于 git config
git reset 重置改变分支“游标”指向
git rev-parse 将各种引用表示法转换为哈希值等
git revert 反转提交
git rm 删除文件
git show 显示各种类型的对象
git stage 同义词,等同于 git add
git 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



猜你喜欢

转载自blog.csdn.net/samed/article/details/51444718
今日推荐