likes
comments
collection
share

Git 如何用? 看这一篇就够了

作者站长头像
站长
· 阅读数 4

对新手友好的 Git 使用总结 老手欢迎留言讨论

前言

关于 Git 的思想、概念等知识搜索结果有很多,本篇不再赘述,而是直接说下在项目开发中经常用到的一些命令,相信对你之后的使用会有很大的帮助。

下面会根据处于的开发阶段来详细说明。

一. 准备开发

1、项目已存在,只需要克隆

这种情况,一般是刚入职或者刚接受一个已经存存的项目,那么只需要拿到项目的 git 地址,

在指定目录中执行 git clone https://github.com/haoyh/GitCommands.git (需改为你的实际路径)即可,接下来就可以愉快的开始写代码了。

2、创建了新项目,需要配置 Git

首先在 GitHub 新建一个仓库,仍使用 GitCommands/ 这个仓库来举例说明。

然后有两种方式将仓库同本地项目关联。

a) 按步骤 1 将仓库克隆到本地得到 GitCommands/ ,然后将本地项目 GitCommandsLocal/ 的内容拷贝至仓库目录中。

b) 在本地项目 GitCommandsLocal/ 目录中,执行 git init

然后设置仓库地址执行 git remote add origin https://github.com/haoyh/GitCommands.git

二、开发中

1、文件/内容变更

提交修改需要:status(查看修改内容,确认变更无错误)、add(添加修改文件)、commit(提交说明)、push(真正的提交)

git status // 查看都修改了哪儿些文件

git add . // . 指代当前路径所有变化的问题,也可以改为具体的文件

git commit -m "msg" // msg: 本次提交说明,建议写的详细些

git push origin dev1:dev2 // 提交到远程分支,dev1 为本地分支名,dev2 为对应的远程分支名,建议本地远程分支命名统一

git checkout a.txt // 未执行 add前,撤销某个文件的修改,也可以用 . 就是当前所有文件(注意 . 只能撤销文本文件的修改,对新建的文件、目录无效)

git reset HEAD . // . 当前所有文件,也可以指定某个文件(已经执行了add,但是又不想commit时用)

2、分支

git branch // 查看本地分支

git branch -a // 查看所有分支,包括远程分支

git checkout -b dev // 创建并切到 dev 分支

git checkout dev // 切换到 dev 分支

需要将 dev 分支合并到 master,首先切到 master 分支

git checkout master // 切换到 master 分支

git merge --no-ff dev // 合并 dev 分支代码

git branch -D dev // 删除本地的某个分支,dev 为要删除的分支名

git branch -r -d origin/dev // 删除远程的分支,注意这个只是删除本地的索引,而不是真正删除远程分支的内容

git push origin :dev // 真正删除远程分支上的内容,冒号前有空格,相当于把一个空分支 push 到远程分支上,等于删除该分支

git fetch origin --prune // 当远程分支发生改变后,同步这些改变到本地的命令

3、tag

git tag // 显示所有标签

git tag -a v3.4.4 -m 'version 3.4.4 by haoyh' // 创建标签,-a 后跟 tag 名;-m 跟描述

git push origin --tags // 提交本地创建的所有 tag

三、其他不是很常见的使用

1、将 Git 分支创建为独立新项目

场景:需要将正在开发的一个项目,在其 dev 分支的基础上创建一个新的独立项目 a. 切到 dev 分支

# git checkout dev

b. 复制项目为新项目

# cd ../ // 到工程所在目录

# cp -r prj/ newprj/

c. 切到新项目目录

# cd newprj

d. 删除本地的分支

# git branch -D master // 其他无用分支也删除

e. 将当前分支命名为 master 分支

# git branch -m master

f. 修改仓库地址

# git remote set-url origin url // url 为新项目实际地址

g. 修改对应远程分支

# vim .git/config

// 原内容
[branch "master"]
   remote = origin
   merge = refs/heads/dev

 // 修改之后
 [branch "master"]
     remote = origin
     merge = refs/heads/master

h. 提交修改

git push origin master:master