Git使用

  工作需要,研究了一段时间的git。

  至于什么是index,是什么是working base, 什么是commit完了的东东,这些就不谈了。

  只是将一些常用命令给记下来,方便以后参考。


1.基本操作

$git init   #初始化一个代码库

$git add . #将改动的东西加到index中,.指当前目录及子目录,也可用具体的文件名代替

$git commit #代码的commit

$git commit -m "我的log"  代码的commit

一般这几条命令就行,当然git add . 和git commit 可以用git commit -a一条命令来代替,但是后者不能将新添加的文件也commit了。

$git log #查看更新的log,若是想要更详细的更新log,可以加 -p参数


2.branch

$git branch branch_name#创建一个分支

$git checkout branch_name#切换到指定的分支去

$git branch -b branch_name #创建分支,并切换到分支中去

$git branch #查看所有的分支,当前的分支前,会有一个*标示

$git branch -d branch_name#删除名为branch_name的分支

$git watchchanged -p branch1..branch2  #查看两个分支的差分

分支还是个很好用的东西的,以前在用SVN时,因为创建分支,就相当于创建一个文件夹,感觉不好用,所以,没怎么用过分支。但是在GIT中,在进行代码merge了,打patch时,分支还是必不可少的。


3.tag

SVN,每次代码的commit,都对应着一个全局的版本号。GIT不是这样子的,它会生成一个唯一的SHA1号码来标示每次的更新。但是,对于我们来说,可读性就太差了。而且,有时还想对某些重大的release点,进行一些特殊的标记。tag的用途来了

$git tag tag_name sha1_num#为id为sha1_num的commit加一个叫tag_name的tag

$git tag #查看当前的代码库中,所有的tag

$git tag -d tag_name#删除名为tag_name的tag


4.patch

协同开发时,git pull或git push是不错的选择,但是patch也是必不可少的。

4.1 生成patch

4.1.1 如果当前有两个branch,分别名为base和working。base是队友们手头最新的代码,working是自己更新过的代码。

 base

*working

这时候,可以通过git diff来生成patch,发给队友们

$git checkout working#切换到working分支

$git diff  base > update.patch#生成相对于base的patch

上述命令是通过重定向,将diff的结果写入了update.patch中。该方法不能保持历次改动的log


4.1.2 当然,也可以用下述命令

$git format-patch start_sha1..end_sha1   #按顺序,根据版本从start_sha1升级到end_sha1的历次改动,生成一系列的patch


4.2 打patch

4.2.1 对应上述两种方法生成的patch,都可以用下面这条命令将patch打上

$git apply patch_name#这地方如果是好多的patch,用git apply *.patch也是可行的

$git add .

$git commit -m "log"#别忘了commit


4.2.2 对应于4.1.2生成的patch,可以用下述命令来打patch

$git am *.patch #会依次将生成的n多patch给打上,然后自动commit

当然,如果打patch失败了,想再次用这条命令打patch前,不许得运行下述命令,否则,会报错

$git am --abort

这样子打的patch,会保留历次commit的log信息


5.进行了错误的commit怎么办

在GIT中,是有后悔药的。如果进行了错误的commit,比如,本来版本为sha1_a,我上传了代码后,升级代码为sha1_b。但是我突然发现,我这次上传的代码有个很严重的问题,我得重新斟酌斟酌。怎么办?可是通过下述的命令,将覆水收回去。

$git reset -hard  sha1_a

现在世界又恢复为我更新前的样子了。


6.想查找一下命令怎么用

好方法是,上网查啊。不过,现在网上大部分文章可能都是某些人到处copy,查来查去,没准就那么几篇,搞不好,还不是自己想要的,这时候怎么办?

遇到问题,找”男人”啊。

$man git-command

查看command的手册。这地方会把命令的参数都列出来,虽说解释的不是很多,但是一般都够用了。

比如,我想看git reset命令都能怎么用,我可以

$man git-reset

“男人”就会告诉你怎么办了。你会发现这条命令出了hard参数,还有好几个参数,表示不同的含义。


7.查看当前index中的文件

$git ls-files --staged


8.从远程取一个分支,到本地的某个分支上

$git pull path/to/remote/repo remote_branch_name:local_branch_name




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值