git常见命令及开发流程

479 阅读3分钟

1.上传文件到远程仓库 把工作区变成git可以管理的仓库

$ git init

把文件添加到暂存区

$ git add .(所有文件)/文件名

把暂存区的内容提交到当前分支

$ git commit -m '提交的相关说明'

关联远程仓库:

$ git remote add origin 远程仓库地址

上传代码

$ git push -u origin master

$ git push origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。以后就直接

$ git push origin master

2.版本回滚 查看日志

  $ git log

查看带详情的日志(输出每次提交修改的代码状态)

$ git log --stat

切换版本()

$ git reset --hard commit_id/标签名

回退前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

当前版本:HEAD

上一个版本:HEAD^

上上个版本:HEAD^^

上第100个版本:HEAD~100

3.撤销 未add到暂存区

  git checkout -- 文件名

已add到暂存区,撤销回到工作区

git reset HEAD 文件名

4.分支管理 查看分支

$ git branch

创建分支

$ git branch 分支名

切换分支

$ git checkout 分支名

创建+切换分支

$ git checkout -b 分支名

合并某分支到当前分支

$ git merge 分支名

删除分支

$ git branch -d 分支名

5.标签管理 查看所有标签

$ git tag

创建新标签(默认为HEAD,也可以指定一个commit id)

$ git tag 标签名

删除标签

$ git tag -d 标签名

将标签推送到远程

git push origin 标签名

6.git使用tips 6.1 bug修复 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

把当前工作保存

$ git stash save "添加备注,方便查找"

切换到master

$ git checkout master

创建+切换到bug分支

$ git checkout -b bug分支名

提交到bug分支

$ git commit -m "fix bug 100"

切换到master

$ git checkout master

把bug分支合并到master(当前分支)

$ git merge --no-ff -m "merged bug fix 100" bug分支名

删除bug分支

$ git branch -d bug分支名

切换到dev

$ git checkout dev

恢复最开始的工作现场

$ git stash pop

6.2 多人合作 首先,可以试图用git push origin branch-name推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

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

7.git大致流程 git init/git clone 初始化git仓库/把代码拉到本地

git checkout -b test 创建并切换test分支

git status 查看一下自己的操作

(写完代码后)

git add . 添加到暂存区

git commit -m "所做操作说明" 提交到分支

git status 再看一下自己的操作

(需要把test分支merge到st分支,确保每次切换分支之前都commit了,以免把正在操作的文件带到切换的分支里去)

git checkout st 切换到st分支

git diff master 在merge之前对比一下st分支和master分支、test分支有没有区别

git diff test

(有区别的话,找问题出在哪里,没有区别即可进行后续操作)

git merge test 把test分支merge到st分支

git push 把st分支push到远程仓库