git的使用

Posted on Posted in 程序方程式

Git是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。需要注意的是和GNU Interactive Tools,一个类似Norton Commander界面的文件管理器相区分。

:zap: 注意: 在使用 git 的过程中,如果我们需要查看帮助信息,可以 man git 或者 git –help,如果查具体的命令的 help 信息,可以用类似于 git init –help 的语句来查看。

git init

当当前目录不是一个 git 库时,执行这个命令会把当前目录初始化一个 git 库。具体为在当前目录下新建一个 .git 的目录。 只有初始化了目录,才能进行后续操作。
如果我们从别的地方拷贝一个 .git 的目录到当前目录下,那就可以不执行 git init 的操作。

git add

这个操作通常是在 git init 操作或者修改了一个已有的 git 库以后执行。一般是直接

git add .

把当前所有文件加入到 git 库中。也可以用命令

 git add filename1 filename2 

来添加单个文件。

git commit

这个命令是用于提交git修改的,命令格式为: git commit ,一般加上的选项有 -a。 执行这个命令之前最好先执行 git add .,把所有文件都添加进git库,以免有时新加文件后提交不上。

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用–amend 选项重新提交:

$ git commit –amend -m”修改 提交 说明”
git branch

这个命令用于查看git分支。 常用操作有:

git  branch -a 可以列出所有分支
git  branch -D  Branch-name 可以删除以 Branch-name 为名的分支
git  branch  Branch-name  可以添加一个以 Branch-name 为名的分支
git  branch  -m  Branch-name1   Branch-name2  把 Branch-name1 分支修改为 Branch-name2
git checkout

这个命令可以取出某个 commit 或者某个 branch。

git  checkout  commit-name
git  checkout  branch-name
git  checkout  --   filename   这个操作会用上一次提交的 filename 文件覆盖现在的 filename 文件
git diff

此命令用于查看代码的修改。常用语法有:

git  diff --color  可以显示颜色,且显示出当前版本(未提交)和之前版本的代码差异
git  diff  commit1   commit2  filename  可以查看文件 filename 在 commit1 和 commit2两个分支的区别
git diff HEAD^ HEAD  filename   可以查看文件filename 在当前已提交版本和上一个已提交版本的区别
git log

显示git提交记录。 可以把后面添加上 branch 的名称,这样会列出该 branch 的提交记录。

git tag

养成打tag好习惯,给当前commit打一个tag,名称为 20101023_publish ,命令为:

$: git tag 20101023_publish 

加上-f覆盖原有的tag

$: git tag -f 20101023_publish 

显示所有的tag

$: git tag 20101015_publish 20101019_publish 20101021_publish 

删除tag

$: git tag -d 20101023_publish 

tag要push上服务器,操作跟分支操作没有任何区别

$: git push origin 20101023_publish  # push 到服务器 
$: git push origin :20101023_publish # 从服务器上删除

:zap: 值得注意的是,如果tag名字和分支名字一样的时候,push需要指定refs的详细路径,因为分支和tag在git内部是这样表示的(只是引用),tag只存储所指向的那一次提交:

refs/tags/{tagnane} refs/heads/branches/{branchnane} 

所以要这样push相同名字的tag和分支

$: git push origin refs/tags/product $: git push origin refs/heads/branches/product 

把所有的tag都push到服务器上

$: git push origin --tags 
git clone

克隆 git 库到当前目录。语法: git clone git-url (比如: git clone git@rd-server:sources/adduser.git ) 新创建 git 库也用这个命令,不过需要添加一个参数 git clone –bare git-url ,这样会只克隆 .git 目录。

git merge

这个命令需要在被合并的分支上操作。 假设需要把 branch1 merge 到 master 分支,执行:

git  checkout  master
git  merge  branch1

这样就会把 branch1 merge 到 master 分支上。

发表评论