- git一键三连
git add . git commit -m "commit code" git push
- 查看本地库状态
git status
- 添加文件到暂存区
git add <file>
- 删除暂存区文件
git rm --cached <file>
- 将暂存区的文件提交到本地库
# "first commit" 提交信息
git commit -m "first commit" <file>
- 提交本地分支到远程库
git push 仓库别名/仓库地址 分支名
- 查看历史版本
# 查看历史版本日志
git reflog
# 查看历史版本详细日志
git log
- 版本穿梭
# 版本回退
git reflog # 查看回退的版本号
git reset --hard 版本号
- 查看分支
git branch -v
- 创建分支
git branch 分支名
- 切换分支
git checkout 分支名
- 合并分支(主分支没修改)
# 站在主要的的分支上操作要合并的分支
git merge 要合并的分支名
- 分支冲突
- 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替 我们决定使用哪一个。必须人为决定新代码内容。
- 冲突产生的表现:后面状态为
(master|MERGING)
- 解决冲突
- 特殊符号:<<<<<<< HEAD 当前分支的代码 =======合并过来的代码 >>>>>>> hot-fix
- 手动修改文件
- 添加到暂存区
- 执行提交(注意:此时使用
git commit
命令时不能带文件名)
# 查看状态 (master|MERGING)
git status
# 添加到暂存区
git add <file>
# 执行提交到本地库
git commit -m "merge conflict"
- 查看当前所有远程库地址别名
git remote -v
- 创建远程库别名
git remote add 别名 远程库https地址
- 提交本地分支到远程库
git push 仓库别名/仓库地址 分支名
- 拉取远程库代码到本地
git pull 仓库别名/仓库地址 分支名
- 克隆远程库到本地
- clone会做如下操作
- 拉取代码
- 初始化本地库
- 创建别名
git clone https仓库地址
- 若下载分支的话需要加 -b + 分支名称 + 下载地址
$ git clone -b backup git@github.com:shaoshaossm/shaoshaossm.github.io.git
团队协作
跨团队协作
- 非本团队的人fork项目到自己的本地
- 对项目文件进行修改
- 点击
pull request
,单击new pull request
错误解决
git push
报错提交不上去
$ git push
To https://github.com/eddiekao/dummy-git.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/eddiekao/dummy-git.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这段讯息的意思是线上版本的内容比你电脑里这份还要新,所以Git 不让你推上去。
解决办法
- 先拉去线上版本的回来更新再推一次
$ git pull --rebase
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/eddiekao/dummy-git
37aaef6..bab4d89 master -> origin/master
First, rewinding head to replay your work on top of it...
Applying: update index
这里加了
--rebase
参数是表示「内容抓下来之后请使用Rebase 方式合并」,当然你想用一般的合并方式也没问题。合并如果没发生冲突,接着应该就可以顺利往上推了。
- 将本地的强制推送到线上
$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 2.16 KiB | 738.00 KiB/s, done.
Total 19 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To https://github.com/eddiekao/dummy-git.git
+ 6bf3967...c4ea775 master -> master (forced update)