git 仓库命令

git clone : 下载仓库到本地。 git clone 仓库URL 目的路径 把仓库下载到目的路径。

当 clone 仓库到本地时 本地只能看到 master 分支 如果想看到其他分支 使用 git checkout -b <name> origin/<name>

如果 git pull 提示 “no tracking information” ,则说明本地分支和远程分支的链接关系没有创建,用命令 git branch --set-upstream branch-name origin/branch-name

git pull : 将远程仓库最新的提交更新到本地。

git push :将本地提交更新到远程仓库。

提交命令:

git add .添加文件到暂存区

git commit -m ”提交注释” 将暂存区的文件更改提交到本地仓库.

git reset --<m 创建分支:git branch `

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge --no-ff <name>

将本地分支推送到远端分支 git push origin <name>

删除分支:git branch -d <name>

删除远端分支 git push origin --delete <name>

Git 查看命令:

git status:查看本地仓库文件状态。

git log: 查看提交记录。

git log --pretty=oneline 单行查看提交历史

git log --graph --pretty=oneline --abbrev-commit 查看提交网络图

git diff : 查看文件改动.

暂存 stash 命令

工作的时候未 commit 想保存工作区内容 去另一条分支上工作

Git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list 查看储存现场储藏列表

git stash apply 恢复恢复后,stash内容并不删除,你需要用git stash drop来删除

git stash pop 恢复的同时把stash内容也删了

标签命令

创建标签 git tag -a <标签名> -m ”标签说明”

查看所有标签 git tag

给以前某个c ommit 打标签 git tag v0.9 6224937

查看标签详情 git show v0.9

推送本地某个标签: git push origin <tagname>

推送全部未推送过的本地标签 git push origin —tags

删除一个本地标签 git tag -d <tagname>

删除一个远程标签git push origin :refs/tags/<tagname>

tip:

fork 了别人的库之后
自己的名下会多出一个同样的库, clone 到本地 进行 bug 修改,修复成功后,可以在 GIthub 上发 PR 如果对方同意你的 PR 就会并入你的 commit。
过了一段时间 发现 对方的库已经更新了,但你的 fork 库 没有更新 可以试用一下操作更新自己的库:
在自己本地的 clone 库里

  1. 首先要先确定一下是否建立了主 repo 的远程源:

git remote -v

  1. 如果里面只能看到你自己的两个源( fetch 和 push ),那就需要添加主 repo 的源:
1
2
git remote add upstream URL
git remote -v

然后你就能看到 upstream 了。

  1. 如果想与主 repo 合并:

    1
    2
    git fetch upstream
    git merge upstream/master

这时你的本地库就已经更新到最新的了, 然后 push 到自己的 fork 库里,就完成了

官方文档解释的常用命令:

不同情境下常用的 git 命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
start a working area
`clone` Clone a repository into a new directory
`init` Create an empty Git repository or reinitialize an existing one
work on the current change
`add` Add file contents to the index
`mv` Move or rename a file, a directory, or a symlink
`eset` Reset current HEAD to the specified state
`rm` Remove files from the working tree and from the index
examine the history and state
`bisect` Use binary search to find the commit that introduced a bug
`grep` Print lines matching a pattern
`log` Show commit logs
`show` Show various types of objects
`status` Show the working tree status
grow, mark and tweak your common history
` branch` List, create, or delete branches
`checkout` Switch branches or restore working tree files
`commit` Record changes to the repository
`diff` Show changes between commits, commit and working tree, etc
`merge` Join two or more development histories together
`rebase` Reapply commits on top of another base tip
`tag` Create, list, delete or verify a tag object signed with GPG
collaborate
`fetch` Download objects and refs from another repository
`pull` Fetch from and integrate with another repository or a local branch
`push` Update remote refs along with associated objects

分支策略

  • 主分支 master 用于发布版本 保持稳定

  • 开发分支 develop 用于日常开发 每日提交 当发布版本时 合并到master 用于发布 并做标记 合并完成处理完冲突后 要记得更新develop

  • 临时分支 :

    1. feature-new 功能分支 基于 develop 开发完成后合并到develop 最后删除功能分支
    2. release-new 预发布分支 基于 develop 发版前分出 测试通过后, 先合并到master上 (测试可能时间长 develop 每天正常开发 commit ) develop 再合并到develop上(预发布分支上可能有 commit 归并到 develop 上) 最后删除预发布分支
    3. fixbug-new 修复 bug 分支 基于master分支 合并到 master 和 develop 分支上 最后删除bug分支

图一

情景: (单人开发 未考虑到冲突)

发现之前版本有bug需要紧急修复, 修复完成后合并到现有代码内

  1. 回滚到 bug 版本 git reset —hard (bug版本号)
  2. 工程内修复bug 并执行 add commit (修复bug) 等操作
  3. 拉取远端代码 pull 然后合并代码
  4. push 到远端服务器

图二