把文件存入本地暂存区:
- 把新建文件、修改过的文件存入本地暂存区:
git add .
- 把修改过的文件、删除的文件存入本地暂存区:
git add -u
- 把新建文件、修改过的文件、删除的文件存入本地暂存区:
git add -A
,相当于上两条之和
- 把新建文件、修改过的文件存入本地暂存区:
- 将本地暂存区的文件推送到本地库:
git commit -m '修改提示'
- 查看当前 git 状态:
git status
- 从 github 上克隆项目:
git clone <github url>
将本地库文件的修改推送到绑定的 github:
git push
-
git push <远程主机名> <本地分支名>:<远程分支名>
比如我要将本地的wy分支推送到远程wy分支,使用:git push origin wy:wy
如果省略远程分支名,则表示将本地分支推送到与之存在”追踪关系”的远程分支(通常同名),如果该远程分支不存在,则会被新建。
-
将远程库文件拉取到本地仓库:
-
git pull
:会自动将本地版本与新版本merge
。 -
git fetch
:不会自动将本地版本与新版本merge
。
-
分支:
- 创建的新的分支:
git branch <branch-name>
查看分支:
git branch
- 在 git bash 中用此命令,按键盘下键查看未显示部分,输入
q
退出
- 在 git bash 中用此命令,按键盘下键查看未显示部分,输入
- 切换分支:
git checkout <branch-name>
- 合并分支:
git merge origin/<branch-name>
合并之前要先切换到合并的目标分支上 - 删除分支:
git branch -d <branch-name>
- 创建的新的分支:
版本回退:
git log
会显示最近的三个版本,head 指针指向最近的版本,输入q
可以退出git log
。回退之前,用git log
确定要回退到哪个版本。- 加上
--pretty=oneline
会简化信息
- 加上
版本回退:
-
git reset --hard HEAD^
回退到上一个版本,上上是HEAD^^
,往上一百个是HEAD~100
- 直接回退到commit-id所对应版本,
git reset --hard commit-id
-
-
git reflog
可以查看git 的历史操作,如果使用git reset
回退错误,想要再次回到未来的版本,可以使用git reflog
来查看回退之前的版本号。 -
git revert
是产生一次新的提交,不过这次提交的改动与之前的改动是相反的,也就是说利用新的提交去覆盖之前的修改。
- git 更改远程仓库地址:
git remote set-url origin <新的url>
本地仓库整体上传到远程仓库
- 首先在github新建一个仓库(最好不要初始化README.md,因为远程仓库和本地仓库不一样,首先要
git pull
同步,经常出问题…)。 - 将本地仓库与远程仓库连起来:
git remote add origin git@github.com:yourname/仓库名.git
git push -u origin master
- 首先在github新建一个仓库(最好不要初始化README.md,因为远程仓库和本地仓库不一样,首先要
-
git diff
:查看当前代码的修改情况,git diff HEAD -- readme.txt
查看当前工作区和版本库最新版本之间的差别。 git
多人协作的工作模式通常是这样:- 在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致 - 将本地分支推送到远程同名分支:
git push origin branch-name:branch-name
- 如果推送失败,说明远程分支内容比本地更新,需要先抓取并合并,
git pull
- 如果抓取也失败,可能是本地
dev
分支与远程origin/dev
分支的未建立链接:git branch --set-upstream-to=origin/dev dev
,再次使用git pull
抓取合并 - 如果合并有冲突,则解决冲突,并在本地提交
- 再次推送:
git push origin wy:wy
- 在本地创建和远程分支对应的分支,使用
管理修改
- 场景一:工作区的修改没有提交到暂存区(没有
git add
),使用git checkout -- filename
,丢弃工作区的改动。 - 场景二:工作区的修改提交到了暂存区,使用
git reset HEAD -- filename
回到场景一。 - 场景三:提交到了版本库(
git commit
),使用git reset --hard commit-id
回退版本。
- 场景一:工作区的修改没有提交到暂存区(没有
- 多人开发时,先
git add .
–>git commit -m ''
–>git push
(本地非最新) –>git pull
–>git push
,这样可能产生两条提交记录,一条是本地的修改记录,另一条的合并代码的记录。解决办法,本地修改文件后,先git stash
将修改暂存起来,再git pull
,更新本地代码,再git stash pop
,将暂存的本地修改合并到拉取的版本中,可能会产生冲突,解决了冲突后,再执行git add . -> commit -> push
的提交流程。