文章目录
Git global setup
git config --global user.name "fumk"
git config --global user.email "fumk@paraview.cn"
Create a new repository
git clone http://.git
cd my-AppStore
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
git init
git remote add origin http://.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote add origin http://.git
git push -u origin --all
git push -u origin --tags
强制上传(禁止使用)
git push -u origin fmk -f
删除分支
命令:$ git push origin 【空格】【冒号】【需要删除的分支名字】
比如我github上有master和fmk分支,我现在想着删除fmk分支
git push origin :fmk
git push origin --delete fmk
合并分支(直接clone)
1. 先检出项目到一个文件夹
git clone http://.git
2. 切换到自己的分支
git checkout -b fmk
3. 修改fmk的代码
4. 切换到master分支
git checkout master
5. 合并fmk到master
git merge fmk
合并两个分支代码
1. 先创建要爬下来的分支
git checkout -b **
2. 获取分支下最新版本
git fetch origin **
//fetch:相当于是从远程获取最新版本到本地,不会自动merge
3. 切换到自己分支
git checkout fmk
4. 合并
git merge **
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
修改已有git项目的远程仓库指向
$ git remote set-url origin git@github.com:test/thinkphp.git
FORCE CHECKOUT
force checkout就不会把冲突的这部分内容带到开发分支
SMART CHECKOUT
smart checkout就会把冲突的这部分内容带到开发分支
Could not resolve host
当我使用gitcbu下载项目,再用gitlab提交时报错
fatal: unable to access ‘http://gitlab.paraview.cn/Wuhan/hisense/hisense_login.git/’: Could not resolve host: gitlab.paraview.cn
解决方法:
打开公司VPN就好了
同一工程中,合并两个git项目内容
- 场景:将branch2合并到branch1
- 克隆a到本地:git clone a.git
- 切换到branch1分支:git checkout branch1
- 设置b为a的远程地址,并且定义一个别名为base-102:git remote add base-102 git@192.xx.102.b.git 一般本地branch1默认了origin远程名称,所以起个别名
- 切换到b的branch2分支:git checkout branch2
- 拉最新的代码到本地的branch2分支:git pull base-102 branch2
- 切加branch1分支:git checkout branch1
- 将本地的branch2分支合并到branch1分支:git merge branch2
- 此时,如果报错:fatal: refusing to merge unrelated histories … 则使用加上一个参数: git merge develop --allow-unrelated-histories
- 推送branch1到远程origin:git push origin branch1
git回退到某个历史版本
1. 方法一:git reset
直接回退到指定版本,目标版本之后的提交将被删除。
情况一:“git reset --hard 版本库地址” ,拉取服务器指定提交到暂存区,该操作不影响工作区。
步骤1:使用git log命令查看所有的历史版本,获取某个历史版本的id
git log
步骤2:执行“git reset --hard 版本库地址” ,将服务器指定版本拉取到本地暂存区。
git reset --hard 3a7b73c5cf359187aeb2732a608ede17a78b061f
步骤3:使用“git push -f”提交更改
情况二:“git reset --hard HEAD^ ”:拉取服务器最近一次提交到暂存区,该操作不影响工作区。
然后执行“git checkout 文件名”,从暂存区拉取到工作区。
git reset --hard HEAD^
拉取上次提交前的代码
git reset --hard HEAD^
2. 方法二:git commit --amend
如果上次提交的内容有误,想进行修改,而且不想进行新的提交,使用git commit – amend。
步骤:
- 修正内容,执行“git add”;
- 执行“git commit --amend”;
- 自动进入vim提示需要添加commit信息。输入:“i”添加信息"delete fff",“esc”、“wq”退出并保存;
- 执行“git push -f”成功推送到服务器 (git push会提示报错:当前暂存区版本低于服务器版本一次提交)。
git 合并一个分支的某次提交到另一个分支
git cherry-pick 0128660c08e325d410cb845616af355c0c19c6fe
git tags使用
1.创建tags
git tag -a <tagname> -m "added description release notes" # 创建标签
2.上传tags到远程仓库
git push origin <tagname> # 推送一个本地标签到远程仓库
3.删除本地tags
it tag -d <tagname> # 删除标签
4.删除远程tags
git push origin :refs/tags/<tagname> # 删除一个远程标签
5.更新tags内容
git tag -f tagname
git push origin -f tagname
其他常用命令
初始化一个仓库:git init
查看分支:git branch
将已修改或未跟踪的文件添加到暂存区:git add [file] 或 git add .
提交至本地仓库:git commit -m "提及记录xxxx"
本地分支推送至远程分支:git push
查看当前工作目录和暂存区的状态: git status
查看提交的日志记录: git log
从远程分支拉取代码:git pull
合并某分支(xxx)到当前分支: git merge xxx
切换到分支xxx:git checkout xxx
创建分支xxx并切换到该分支:git checkout -b xxx
删除分支xxx:git branch -d xxx
将当前分支到改动保存到堆栈中:git stash
恢复堆栈中缓存的改动内容:git stash pop