首页 » 操作系统 » Windows » 正文

Git 用法概述

发布者:站点默认
2018/03/13 浏览数(1,654) 分类:Windows Git 用法概述已关闭评论

安装

  • Linux:yum install gitsudo apt-get install git
  • Windows:安装这个工具,安装后右键选“Git Bash Here”
  • Mac:打开 XCode > Preferences > Downloads > Command Line Tools,Install

注意

Git 没有类似 svn 的“签出并锁定”,所有人都可以签出同一个文件,如果有人先签入,其他人签入时需要先“签出”并处理冲突后再合并(push 时会提示让先 pull)。

克隆到本地并关联远程库

git clone https://a.b.c/ycdj.git # 会在当前目录中创建 ycdj 目录

开始开发

# 配置自己的信息(签入时备注的署名会用)
git config --global user.name="Mr.User"
git config --global user.email="user@honzh.com"

# 创建并切换到本地 dev 分支
git checkout -b dev

# 从服务器拉取并合并最新代码
git pull

# 检查不需要同步的文件和文件夹
# 根据实际情况修改配置文件 /.gitignore

# 解决冲突
# pull 时不能自动合并的代码,需要人工处理,冲突长这个样子:
>>>>>>> 冲突部分开始
自己的代码(好多行)
=======
服务器的代码(好多行)
<<<<<<< 冲突部分结束

# 开始写代码
#### 代码直接在编辑器里修改,想怎么改就怎么改

# 写好了开始提交
cd ycdj
git status                         # 查看修改的文件清单
git checkout -- file.js            # 放弃对 file.js 的修改(还原文件内容)
git rm src/test.js                 # 删除文件(提交后服务器的这个文件也会被删除)
git add src/newFile.js             # 增加这个待提交的文件,这个文件可以是新建的也可以是改过的
git add .                          # 把所有修改加入暂存区(包括删除动作,add 过才会被 commit)
git diff HEAD -- src/newFile.js    # 将本地的 test.js 与版本库里的对比一下,HEAD 表示最新版本
git reset HEAD src/newFile.js      # 从暂存区中移除文件(提交时不含这个修改过的文件)
git commit -m "feat 增加了单位模块" # 提交

# 合并到本地主分支
git checkout master
git merge dev         # 合并不了的冲突需要人工处理
git branch -d dev

# 同步到服务器
git pull               # 拉取最新(如果直接 push 出错了还得拉)有冲突的话就合并一下
git push origin master # 推到服务器,不需要写备注,会使用 commit 时的备注

常用命令

git status           # 查看改动的文件
git stash            # 清理暂存区(隐藏所有的改动,“还原”成始初状态)
git checkout -b dev  # 创建并切换到dev分支
git stash pop        # 恢复暂存区
git checkout master  # 切换到master分支
git comit -m "初始化" # 提交修改(仅本地,未同步到服务器)

分支

git branch                    # 查看分支列表
git branch dev                # 创建 dev 分支
git checkout dev              # 切换到 dev 分支
git branch -b dev             # 创建并切换到 dev 分支
git branch -m oldName newName # 改名,新名称使用中时会提示
git branch -M oldName newName # 改名,如果新名称使用中则覆盖
git branch -d dev             # 删除 dev 分支,需要先切换到非 dev 分支
git branch -D dev             # 强行删除 dev 分支(丢弃修改)
git merge dev                 # 合并 dev 到当前分支,加 --no-ff 可普通模式合并以保留合并历史

远程库

git clone https://a.b.c/d.git                  # 克隆并关联远程库
git remote                                     # 查看远程库,加上 -v 可显示详细信息
git push origin master                         # 把当前分支提交到服务器的 master 分支
git push origin dev                            # 把当前分支提交到服务器的 dev 分支
git remote set-url https://1.2.3/4.git origin  # 修改服务器地址
git pull                                       # 拉取最新代码并合并
git branch --set-upstream dev origin/dev       # 关联本地 dev 分支与远程 dev 分支
git checkout -b branch-name origin/branch-name # 在本地创建和远程分支对应的分支

多人协作

  1. 首先,可以试图用git push origin branch-name推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功。

恢复指定版本的文件

git log
git reset --head HEAD^   # 恢复到上一个版本
git reset --hard cb926e  # 恢复到 cb926e7ea50ad11b8f9e909c05226233bf755030 版本,版本号不用写全
# HEAD     表示当前版本
# HEAD^    表示上一个版本
# HEAD^^   表示上上个版本
# HEAD^^^  表示上 3 个版本
# HEAD~100 表示上 100 个版本
git reflog               # 查看操作历史

临时修改小问题

# 清理当前 dev 分支的工作区
git stash                                           # 保存当前工作区

# 从 master 建立临时分支
git checkout master                                 # 切换到 master 分支
git checkout -b issue-101                           # 从当前分支创建并切换到 issue-101 分支
git add file.js                                     # 只把修改的文件中的 file.js 提交到“待提交区”
git commit -m "fix bug 101"                         # 保存修改(只是本地,未同步到服务器)

# 将临时分支合并到 master 并删除临时分支
git checkout master                                 # 切换到 master 分支
git merge --no-ff -m "merged bug fix 101" issue-101 # 把分支 issue-101 的修改合并到当前分支
git branch -d issue-101                             # 删除 issue-101 分支

# 回到dev分支继续工作
git checkout dev                                    # 切换回 dev 分支
git stash list                                      # 查看可恢复的暂存区
git stash apply                                     # 恢复并保留暂存区
git stash drop                                      # 删除暂存区
git stash pop                                       # 恢复并删除暂存区
git stash apply stash@{0}                           # 恢复指定暂存区
点击返回顶部
  1. 留言
  2. 联系方式