git常用命令
git常用命令
项目中经常使用的命令
-
获取帮助
git help
git--help
man git- -
初始化仓库
git init -
克隆仓库
git clone http://git.oschina.net/yiibai/git-start.git 自定义仓库目录名称 #克隆仓库到本地常用的协议
git clone http[s]😕/example.com/path/to/repo.git
git clone http://git.oschina.net/yiibai/sample.git
git clone ssh://example.com/path/to/repo.git
git clone git://example.com/path/to/repo.git -
配置相关
git配置分为系统配置、全局配置和本地配置,一般一台电脑设置的是全局配置(针对使用电脑的人)。分别加上 --system, --global和--local(可省略)
存在在 /etc/.gitconfig(系统配置), ~/.gitconfig(全局配置) ./.git/config(当前配置)git config user.name '姓名'
git config user.email '邮箱@xxx.com'git config --list # 查看所有配置
git config --unset user.gender # 删除配置
git config alias.co checkout # 别名设置
-
忽略、暂存、提交、推送
git status # 显示工作目录和暂存区的状态
git add . #将工作区中修改的文件,提交到暂存区
git status # 检查状态
git commit -m "xxx" # 将文件提交到本地仓库【将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中】
git push [origin branch_name] # 推送到远程仓库
git pull origin branch # 生产目录拉取最新修改新增文件
git status # 未追踪文件 -- untracked file
git add .
git status # 提交到暂存区
git rm --cached xxxfile # 从暂存区删除,工作区保留该文件
忽略新增文件
.gitingore 配置要忽略的文件
*.o #忽略.o文件
dir/ #忽略目录
**/test.php #忽略当前目录(所有)子(孙子)目录下的test.php文件已追踪文件
git restore... # 丢弃工作区的修改 to discard changes in working directory
git checkout --... # to discard changes in working directory git restore --staged
# 从暂存区移除文件 to unstage
git reset HEAD... # to unstage -
差异对比
git diff# git add 前,比较工作区和暂存区的差别
git diff --cached # git add后,比较暂存区和版本库的差异
git diff --staged # 比较暂存区和版本库的差异
git diff branch1 branch2 # 比较两个分支的差异
git diff sha1 sha2 # 比较提交之间的差别
git diff HEAD # 显示工作区和HEAD的区别 -
git commit 提交
git commit -m "xxx"
git commit -a # 会先把已经track的文件的改动使用 git add 添加到暂存区,然后再提交(未追踪的文件要先使用 git add命令)
git commit --ament # 增补提交(修改上一次提交的备注) -
git reset 用于将HEAD复位到指定状态,一般用于撤销之前的一些操作
git reset HEAD # HEAD指的是当前分支最新的一个提交
git reset HEAD将错误git add的文件,撤销到工作区
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD] 将当前分支重设到指定的commit或者HEAD
+ --hard 自以来在工作目录中的任何改变都被丢弃,并把HEAD执行 commit 记录。 -
git rm 从工作区或者暂存区删除文件
git rm --cached file # 从暂存区删除文件
git rm -r dir # 删除目录
git log: commit1->commit2->commit3
git reset --hard HEAD~1 commit3的修改将丢失
示例1
git add .
git reset 撤销add更改的内容
示例2:回滚最近一次提交
git commit -am "备注信息"
git reset --soft HEAD^ # 从仓库中撤销到暂存区
修改代码
git commit -a -c ORIG_HEAD # 使用上次提交的信息,进行编辑重新提交(git reset时,会把HEAD拷贝到.git/ORIG_HEAD中 -c/C 拿已经提交对象中的信息)
示例3:回滚最近几次提交,并把这几次提交放到指定分支中
git branch top/wip # 根据当前分支新建一个分支
git reset --hard HEAD~3 # 撤销最近的3次修改
git checkout topic/wip # 切换到新分支
示例4:永久删除几个提交
git commit # 先提交一下
git reset --hard HEAD~3 最近的三个提交(HEAD,HEAD^,HEAD~2)
示例5:回滚merge和pull操作
git pull 冲突,后边解决
git reset --hard 清除索引和工作区中被搞乱的东西
git pull . topic/branch 将topic/branch分支合并到当前的分支
git reset --hard ORIG_HEAD # 发现不应该合并,撤销掉(git pull和git merge都会把执行前的HEAD放入ORIG_HEAD中)
示例6: 在污染的工作区中回滚合并或者拉取
git pull
git reset --merge ORIG_HEAD(--hard会清空工作区和暂存区,可能会将本地未使用git add的改变丢掉,可以使用--merge, 不清空工作区)
示例7:中断的工作流处理
git checkout feature; #新分支
git commit -am "xxx" #开发一半,改bug
git checkout master; # 切换分支,修改bug
git commit #fix之后提交
git checkout feature; # 切回开发分支
git reset --soft HEAD^ # 切换到提交前的状态->到暂存区
git reset # 恢复到工作区
示例7:保留工作区并丢弃一些之前的提交
写了一些代码,发现不应该放到这个分支
git tag start;
git checkout -b branch1; #新建一个分支
修改文件之后
git commit -am "提交到新分支"
git checkout orig_branch # 回到原分支
git reset --keep start # 工作区也是修改之前的工作区,新修改的带到了新的分支(类似于github desktop新建分支,当前修改带到新分支功能)
```
- 分支相关
git checkout dev # 切换分支
git checkout -b 新分支名称 remotes/origin/prod # 用远程分支建立一个本地分支
git checkout -b 新分支名称 # 用当前分支创建一个新分支
git push --set-upstream origin 远程仓库名称 #将本地分支,推送到远程分支,并建立一个本地到远程仓库的引用关联
git branch -v # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看本地和远程分支(可能与远程分支不同步)
git fetch # 命令用于从另一个存储库下载对象和引用。(本地的远程分支与实际的远程分支少)
git remote show origin # 显示远程的所有分支及跟踪状态等
git remote prune origin # 删除本地有而远程已经删掉的分支
git branch -d local_branch # 删除本地分支
git branch -m old_branch new_branch # 修改分支名称
git branch xxx # 以当前分支为基础,创建一个新分支
git add .
git commit -m "add something"
git push --set-upstream origin 远程仓库名称 #将本地分支,推送到远程分支,并建立一个本地到远程仓库的引用关联
git push origin xxx
git push origin --delete branch_name #删除远程分支
- git checkout 用于切换分支或者恢复工作区文件
git checkout -- '*.c' #检出索引中所有的C源文件
git checkout -- xxxfile # 检出文件
git checkout 【branch】# 检出当前分支的head
git checkout tag_name # 在当前分支上,取出tag_name的版本内容
git checkout branch file # 从branch分支上取出对应的文件,替换当前工作区的文件
git checkout commit_id filename # 从某次提交上检出文件
git checkout -b branch_name remote_branch # 通过远程分支创建一个新分支
git checkout . 工作区中修改的文件,都会被HEAD取出的文件覆盖,修改的内容会丢失

浙公网安备 33010602011771号