git 初体验

来源:互联网 发布:淘宝推荐返利 编辑:程序博客网 时间:2024/06/15 00:31

git的原理有些复杂,额也描述不清楚,有个git中文教程可以慢慢看。

http://gitbook.liuhui998.com/index.html,或者直接下个git中文教程

个人觉得git的思想很强大

工作中用到到git命令记录如下:

git clone [地址] [本地名称]

克隆一个仓库到本地。本地名称可以不填,不填时默认与远程仓库中同名

补充: git clone [地址] -b 远程分支名 

这样是只clone一个远程分支到本地

git status

查看当前文件状态 ,

文件状态:未跟踪,已跟踪。

已跟踪又分为:已修改,已暂存

git add .

添加文件。从未跟踪状态到已跟踪状态,从已修改到已暂存

git commit

提交代码到本地,这里需要输入提交说明,默认用vim打开,不过可以改

还可以git commit  -m "asjdflkj"这个是直接写入提交说明


分支的相关命令

这里在团队合作过程中,我觉得最好是要做什么事情之前先新建一个分支,这样会让自己的改动不影响主分支

git branch 分支名

创建分支。

git branch

查看当前分支(本地分支),前面有*号的为当前分支。可使用-r 查看远程分支,-a查看所有分支

git checkout 分支名

切换分支,默认是在master分支中。

git checkout  -b 分支名

创建分支并切换到所建分支


远程分支

git push [远程名] [本地分支]:[远程分支]

这个命令有两种用法

第一种是推送本地分支到远程分支,可以用于分支的创建和推送

第二种是本地分支不指定用于删除远程分支,这个比较特殊,我理解为用一个空的本地分支替换掉远程分支


分支追踪

首先查看分支追踪状况

git remote show [远程名]

该命令会与服务器沟通,稍微有点慢,默认的只有master的相关信息

git branch --track [本地分支名][远程名]/[远程分支名]

用于创建一个与远程分支有追踪关系的本地分支,但是比较奇怪的地方是,在查看分支追踪情况时只有pull关联push没有

git checkout --track [远程名]/[远程分支名]

创建一个与远程分支同名的本地分支并跟踪,并且切换到该分支下。在查看分支追踪情况时这个pull和push都会关联


查看log

看命令行实在有点头大,所以就用可gitk图形化的log,挺方便的


20120515补充:

今天想把一套代码里的修改移植到另一套上,于是研究了下git format-patch,git am

git format-patch master

这个命令是把分支与master比较差异并生成patch,生成目录为执行命令目录

git format-patch -1

生成前一次提交patch,后面的参数还可以是 2.3.4...

git format-patch --root

从开始生成每次commit的patch。这个会连最初上传的那次也打patch,因为第一次初始代码非常多所以非常耗时,目前还没找到怎么去掉第一次

patch生成后,可以把批量的patch放在一个文件夹下

git am patch路径

这个是单个patch

git am 文件夹路径/*.patch

这个git会根据patch顺序合入代码

在合入patch过程中如果出现冲突,则何处暂停,此时需要手动解决

打开冲突文件,把提示中的冲突部分手动拷贝过去,保存

git add 冲突文件具体路径

告诉git已经解决冲突

git am --resolved

继续合入patch

如果没有再提示,就合入patch成功
还可以用git am --skip来跳过当前patch

git am --abort停止 在git am之初建议用一些,防止有没有合完的patch

在产生冲突时还可以执行:

git apply --reject patch路径

先合并没有产生冲突的文件,根据同目录下的*.rej文件找出冲突地方,并手动解决


20120816补充

今天遇到一个问题,需要把已提交到服务器的代码恢复到某一个节点

git reset --hard commit_id

git push origin HEAD --force

这样就把服务器的代码恢复到指定的节点


先记到这里,目前我只用过这么多了,其他用过后再添加(其中的部分说明是我自己的理解,如果有错欢迎指正)



原创粉丝点击