git
# 一、常用命令:
- mkdir XX:创建一个空目录 XX 指目录名
- pwd:显示当前目录的路径
- cat xx:查看 xx 文件内容
- git init:把当前的目录变成可以管理的 git 仓库,生成隐藏的.git 文件夹
- git add xx:把 xx 文件添加到暂存区
- git commit -m “xx”:提交文件 -m 后面的是注释,必须写!
- git status:查看仓库状态
- git log:查看历史记录
- git reset --hard HEAD^:往上回退一个版本
- git reflog:查看历史记录的版本号 id
- git checkout -- xx:把 xx 文件在工作区的修改全部撤销
- git rm xx:删除 xx 文件
- git remote add origin https://github.com/xxxxx/a.git 关联一个远程库
- git push -u(第一次尽量加上 - u,以后不用)origin master:把当前 master 分支推送到远程库
- git clone https://github.com/xxxxx 从远程库中克隆
- git checkout -b dev:创建 dev 分支 并切换到 dev 分支上
- git branch:查看当前所有的分支
- git checkout master:切换回 master 分支
- git merge dev:在当前分支合并 dev 分支
- git branch -d dev:删除 dev 分支
- git branch xxx:创建分支 xxx
- git remote:查看远程库信息
- git remote -v 查看远程库的详细信息
- git pull origin master 将远程库的更新拉取到本地并自动合并
- git push origin master:git 会把 master 分支推送到远程库对应的分支上
# 二. GitHub 远程仓库的使用
# 场景一(关联):本地有仓库,要和远程仓库做关联
- git init
- git add .
- git commit -m “first commit”
- 在 GitHub 上创建一个远程仓库
- git remote add origin https://github.com/xpromise/oa.git (HTTPS)
- 备注:如果此步关联错了,解决办法如下。
- 暴力解决:删除.git 文件夹,重新建立本地仓库。
- 优雅解决:git remote remove origin,再在重新关联仓库
# 场景二(推送):本地有仓库有内容,要推送给远程库
- git push -u origin master (首次加 - u)
- 根据提示输入用户名密码
- 我们第一次推送 master 分支时,加上了 - u 参数,Git 不但会把本地的 master 分支内容推送到远程新的 master 分支,还会把本地 master 分支和远程的 master 分支关联起来,在以后的推送时可以简化命令 git push origin master。
- 备注:正常情况下,成功推送一次后,电脑会记住和账号与密码,下次推送时不会再提示输入。若在电脑不能够自动记住 github 的账户和密码,需执行以下命令解决:git config --global credential.helper store
# 场景三(拉取):本地有仓库有内容,获取远程库新内容
第一种拉取方式:git pull origin master,
将远程仓库的 master 分支上代码版本复制 / 合并到本地 master 分支上
第二种拉取方式:git fetch origin master:tmp
新建一个 tmp 分支,将远程仓库的 master 分支上代码版本复制到 tmp 分支上,不会自动合并。
# 场景四(克隆):本地无仓库,要获取一个完整的远程库
备注:只在第一次获取远程库时才需要克隆
- git clone https://github.com/xxx.git (HTTPS)
git pull --rebase origin master1. 高频命令
git add
将工作文件修改提交到本地暂存区。
git add .
将所有修改过的工作文件提交暂存区(常用)。
git commit -m "XXX"
为本次修改打一个 tag,当然此条命令通常跟在 git add 后使用。每次 commit 都会有一个对应的 tag,当打包发布时,往往我们会打对应 tag 的版本。所以 tag 是一次有意义记录,它是和某次 git commit 绑定对应的。
git push origin branch_name
将本地 branch_name 分支推到远程 branch_name 分支。
git branch -d branch_name
删除本地分支 branch_name(注意:删除本地分支时,当前所处分支不能是要删除的该本地分支)。
git branch -D branch_name
强制删除本地分支 branch_name(如果 branch_name 分支当前修改的内容没有暂存,那么只有强制删除有效)。
git push origin --delete branch_name
删除服务器端分支 branch_name。
git pull origin branch_name
拉取服务器端 branch_name 分支的内容并合并到本地 branch_name 分支(一般来说,多人共用一个分支时,如果你有需要提交到服务器的内容,则要先用此命令更新本地分支的内容,然后再将新的内容提交到服务器)。
git fetch origin branch_name
拉取服务器端 branch_name 分支的内容,但不合并。此操作一般是不确定远端代码是否存在问题,为保险起见,可先拉取到本地查看,确认无误后,和合并此代码到本地的对应分支下。
git merge origin/branch_name 合并当前分支到主分支 git merge 当前分支名 再推送即可
将服务器端 branch_name 分支合并到本地当前分支下。
git merge branch_name
将本地 branch_name 分支合并到本地当前分支下。
git checkout -b branch_name origin/branch_name
如果本地没有 branch_name 分支,想要基于服务器端 branch_name 分支创建一个,但又不想影响到本地的当前分支。可以使用此命令进行本地 branch_name 分支的创建。
git branch
查看本地存在分支。
git branch -a
查看所有本地关联到的分支(远端分支也能打印出来,但是关联如果没有建立,那么是不会显示的,此时我们可以使用 git fetch 拉下来所有分支。)。
git status
查看当前分支的状态,一般合并分支代码后,用于检查是否有冲突。
git reset --hard
回退到 commit id 提交的版本,仅对已经 commit 到本地的代码有效
git checkout
该命令是对未提交到缓存区的代码进行撤销。例如本地修改代码之后,在没有执行 git add 命令之前又想撤销操作,可以执行该命令。
git reset HEAD --
该命令是将放入暂存区的代码进行撤销,放入到工作区中。
git config user.name "提交者的名称"
配置当前仓库下提交者的名称。
git config user.email "邮箱"
配置当前仓库下提交者的邮箱。
git config --global user.name "用户名"
配置全局提交者的名称。
git config --global user.email "邮箱"
配置全局提交者的邮箱。
git config --global --list
查看我们的配置
- git merge 和 git rebase
git merge 和 git rebase 使用场景
git merge 一般用于新功能的开发和 bug 修复;
git rebase 在主分支上进行开发,或者 Pull 的冲突解决;
git merge 主要是在主分支上进行使用,而 git rebase 是在从分支上进行使用。
git merge 和 git rebase 区别:
git merge 会生成新的 commit ,而 git rebase 不会生成新的 commit ,会保留比较完整的提交历史。
git merge 是按照时间顺序进行合并,而 git rebase 是将 主分支顺序不变,插入到从分支的前端。
git rebase 注意事项: 如果分支已经 Push 到了远程仓库就不要对该分支进行 git rebase 操作。如果已经提交到了远程分支再进行 Push 的时候容易出现冲突,我们可以采用 git push --force ,但是最好是永远不要使用这个命令。
// 查看本地仓库配置
git config --local --list
// 如果有本地与远程关联,保留 (多仓库关联)/ 不保留,看实际需要
// 此处我选择不保留,即单仓库关联
git remote remove origin
// 添加本地仓库与远程仓库关联
git remote add origin XXX.git
// 强制推送到远程仓库,且覆盖远程代码库
git push -f --set-upstream origin master:master
# 本地 master 分支关联远程 origin/master 分支
# 方式一
git branch --set-upstream-to=origin/master master
# 方式二 (弃用)
git branch --set-upstream master origin/master
# 方式三
git branch -u origin/master master
$ git config --global --replace-all user.name “要修改的用户名”
$ git config --global --replace-all user.email"要修改的邮箱"
$ git config --global --replace-all user.password “要修改的密码”
查看修改完后的用户名:
$ git config user.name
查看修改完后的邮箱:
$ git config user.email
查看修改完后的密码:
$ git config user.password
由于提供的证书是内部签发,客户端需要执行:
git config --global http.sslVerify false 否则会提示:SSL certificate problem: self signed certificate
然后再 idea 中拉取代码。就会提示输入用户名和密码
github 无法访问
C:\Windows\System32\drivers\etc 这下面改 hosts
#github
192.30.253.113 github.com
192.30.253.113 github.com
192.30.253.118 gist.github.com
192.30.253.119 gist.github.com