使用Git管理代码

来源:互联网 发布:我国网络法律法规 编辑:程序博客网 时间:2024/06/10 09:35

建立代码仓库

init config

$ git init

当前目录被称为*工作树*

$ git config --global user.name "Your Name Comes Here"$ git config --global user.email you@yourdomain.example.com

设置用户名和邮箱,此信息会保存在每次commit的log中,使用git log查看

常用操作

add commit revert

$ git add .

将当前目录生成一个快照放到一个临时存储区域,创建索引

$ echo "zh" > .gitignore$ git add .

忽略zh目录,不要放到当前缓存中更新

有关 gitignore 文件的诸多细节知识可阅读其使用手册: $ man gitignore

$ git commit

将索引中的代码提交,可选参数-m ‘messages’可以增加备注信息,

如果不指定则调用默认的编辑器Vi编辑message

$ git revert filename

从代码库中恢复某个文件

协同开发

clone pull push

$ cd work$ git clone lyr@192.168.0.7:~/work/m2ge m2ge

通过ssh访问远端的某个git目录 将工作树复制到本地,如果不指定文件夹则和远 端一致。

ssh 协议: 账户@IP:路径

clone之后 就在本地创建了一个工作目录,所有的提交删除工作都可以在本地进行,不需要频繁操作主分支

项目开发

  • $ git add 增加改动的文件

  • $ git commit 向本地代码库提交

  • $ git pull 远程仓库名  需要合并的本地分支名   # 获取远端代码  (此步可替换成git fetch [remote-name]    git rebase )

  • $ git push  远程仓库名  远程分支名(若没有将创建)     #提交代码到远端库

分支管理

branch checkout merge

$ git branch 察看当前分支

$ git branch -a 查看所有分支(包括从remote clone下来的分支默认是隐藏的)

$ git branch local 建立一个分支

$ git checkout local 切换分支为local, 进行开发工作add commit ...

$ git checkout master 将当前分支切换为master

$ git checkout -b develop origin/develop 创建本地分支develop跟踪远程仓库的develop分支。

$ git merge local 将local分支与当前分支合并

$ git branch -d local 删除local分支

没有完成merge的分支是无法直接删除的,需要用到-D参数强制删除

GIT 常用命令

git log

  • 查看最近两次的提交内容git log -p -2

  • 查看提交的统计数据git log --stat

  • 查看最近两次的提交git log -n 2, git log -2

  • 查看某个日期之前/之后的提交 after(since) & before(until)

    git log --after 2.weeks, git log --before 2.years
  • 查看某个作者或者提交者的提交日志,作者和提交者还是有一点区别的

    git log --author pyLemon, git log --committer pyLemon
  • 在提交的 log 内容中 grep 查找 git log --grep 'change'

git commit

  • 更改上一次的提交内容

    有时候在做了 commit 操作后,发现上一次的提交内容有问题,有部分文件忘了提交。这种情况可以使用 –amend 来更改上一次的提交一个典型的使用场景,将 readme.md 添加到上一次提交中去。

    git add readme.mdgit ci --amend

    这样就可以将 readme.md 合并到上一次的提交中去了,最终只产生一个提交记录。

git reset

  • 还原已经提交的文件

    如果一个文件已经 add 到 stage 中,而我们发现它又是不需要的。这时可以采用 reset 命令,重置它。

    git add .git reset HEAD readme.md

    这样这个文件就会取消他的 stage 状态。

git checkout

  • 放弃修改,还原文件(未进入stage之前,即没有执行git add)

    如果一个文件想要还原到他修改前的样子。可以使用 checkout 命令。

    git checkout -- readme.md

    这个命令会放弃所有作出的修改,将文件还原成变更前的状态。

  • 切换分支   git checkout master    切换到master分支

  • 创建分支并切换到该分支   git checkout -b develop  创建develop分支,并切换到该分支

  • 创建分支跟踪一个分支  git checkout -b develop origin/develop 创建一个develop分支,跟踪远程仓库的develop分支。

git stash

当你不想提交当前完成了一半的代码,但是却不得不修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑。'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。

git branch

从远端clone一个远端仓库,到其目录下:

$ git clone git://example.com/myproject$ cd myproject

然后,看看你本地有什么分支:

$ git branch 

* master

但是有些其他分支你在的仓库里面是隐藏的,你可以加上-a选项来查看它们:

$ git branch -a
* master
origin/HEAD
origin/master
origin/v1.0-stable
origin/experimental
#如果你现快速的代上面的分支,你可以直接切换到那个分支:
$ git checkout origin/experimental
#但是,如果你想在那个分支工作的话,你就需要创建一个本地分支:
$ git checkout -b experimental origin/experimental
#现在,如果你看看你的本地分支,你会看到:
$ git branch  master
* experimental

git push

推送到远程仓库。git commit之后再执行,

git push (远程仓库名) (远程分支名)

$ git push origin serverfix

执行git push origin serverfix:serferfix,效果是一样的。这 其 实 有 点 像 条 捷 径。Git 自 动 把 serverfix 分 支 名 扩 展 为 refs/ heads/serverfix:refs/heads/serverfix,意为“取出我的 serverfix 本地分支,推送它来更新远程仓库的 serverfix 分支”。

如果想在服务器上删除 serverfix 分支,运行下面的命令:

$ git push origin :serverfix

0 0