git 常用命令行

git 命令行

初始化本地仓库

git init

创建分支(默认为master分支)

git branch guyal 

切换分支

git checkout guyal
git switch guyal

创建并且切换分支

git checkout -b guyal
git switch -c guyal

查看当前分支

git branch  // (带 * 号的是目前所在分支)

更新远程分支

git remote update origin --prune

更新本地分支

git fetch

合并分支

git checkout master // 切换到要合并的分支上
git merge guyal // 合并guyal分支到master分支上

合并分支并提交一个新的commit

// --no-ff参数,表示禁用Fast forward
// -m :本次合并要创建一个新的commit,所以加上-m参数

git merge --no-ff -m "merge with no-ff" dev

存储当前工作区

git stash

查看所有存储工作区

git stash list

恢复工作区

  1. git stash apply:恢复后,stash内容并不删除,可以用 git stash drop 来删除

  2. git stash pop :恢复的同时把stash内容也删了

项目文件添加到版本库中(也就是本地暂存区)

git add ./  「./表示添加文件夹下的所有文件;. 表示当前目录下的文件」

恢复指定的stash

git stash apply stash@{0}

把暂存区的文件提交到仓库

git commit -m "提交说明"

cherry-pick命令,让我们能复制一个特定的提交到当前分支

git cherry-pick 4c805e2

关联远程仓库

git remote add origin 项目远程仓库地址

远程仓库与本地文件同步合并

git pull --rebase origin master(你的分支)

推送到远程仓库

git push -u origin master

删除本地/远程分支
若删除失败,考虑master 为默认分支, 需要先创建自己的分支

git branch -D <name> // 强制删除
git branch -d/D master // 删除本地master分支
git branch -r -d origin/branch-name // 删除远程分支
git push origin :master // 删除远程master分支
git branch guyal // 创建分支
git push origin guyal:guyal // 将template分支提交到远程分支上
git checkout -b guyal //创建并切换分支

版本回退
git 本地版本回退

git reset --hard commit_id  // 使用git log 查看commit_id 

git 远程版本回退

git push origin HEAD --force // 远程提交回退
git reset --hard HEAD^1 (HEAD^1 版本回退上一版)
git push --force // 远程提交回退 

查看提交日志

git log  // q键, 可退出查看日志状态

eg:

git log

commit 3018f35fcd3e86fcb0921245cacbf4a7d0a0d1b6 (HEAD -> guyal, origin/master, origin/guyal, master)
Author: guyal <guyal_910@163.com>
Date: Tue Nov 21 17:59:06 2017 +0800

修复用户重新授权实时渲染

commit 43fb35c3d938d79b5f4d17fdb13818547451fe79
Author: guyal <guyal_910@163.com>
Date: Mon Nov 20 18:15:13 2017 +0800

四待模块页面基本完成

commit da15a615bcbb3d4f8fe328d44c21db66398e54bf
Merge: 35fdfdf aacb65b
Author: YangYang <18103855639@163.com>
Date: Mon Nov 20 10:44:06 2017 +0800

update

git log --oneline


eg:

3018f35 (HEAD -> guyal, origin/master, origin/guyal, master) 修复用户重新授权实时渲染
43fb35c 四待模块页面基本完成
da15a61 update
35fdfdf Merge branch 'yang-dev'
9434aaf update
aacb65b 订单二级页面部分完成
07d7251 待收货一级页面已完成
2fba973 待付款页面已完成
8e7430f 结算中心页面修改css样式已完成
57649bb shopping cart interface completed
9b5159f shopping cart interface completed
32e5c0f completed
8e2c497 completed

可看出以上两种方式的区别

带参数的git log可以看到分支的合并情况

 git log --graph --pretty=oneline --abbrev-commit
[Guyal-deMacBook-Pro:jingguan-mini yalgu$ git log --graph --pretty=oneline --abbrev-commit
*   3b5062e (HEAD -> develop, origin/develop) 正确率动态显示
|\  
| *   610ada1 Merge branch 'develop' of ssh://gitlab.iqihang.com:222/mini-app/jingguan-mini into develop
| |\  
| * | f734d02 fix: pageName
* | | 787be3a 正确率动态显示
| |/  
|/|   
* |   6ea488f 用户信息/专项切换获取数据
|\ \  
| |/  
| *   22339a2 Merge branch 'develop' of ssh://gitlab.iqihang.com:222/mini-app/jingguan-mini into develop
| |\  
| * | 32e7869 fix: 我的
* | | 159fbd6 用户信息/专项切换获取数据
| |/  
|/|   
* |   312db6f 模拟数据
|\ \  
| |/  
| *   27dcd6f Merge branch 'develop' of ssh://gitlab.iqihang.com:222/mini-app/jingguan-mini into develop

git log --graph命令可以看到分支合并图

*   commit 3b5062e92d48ea4d5bd20b9c23564f418bdef447 (HEAD -> develop, origin/develop)
|\  Merge: 787be3a 610ada1
| | Author: 111
| | Date:   Fri Mar 11 13:50:29 2022 +0800
| | 
| |     正确率动态显示
| |   
| *   commit 610ada184b9d478cb9174a66764dfa0562da8d8b
| |\  Merge: f734d02 6ea488f
| | | Author:222
| | | Date:   Fri Mar 11 13:31:58 2022 +0800
| | | 
| | |     Merge branch 'develop' of ssh://gitlab.iqihang.com:222/mini-app/jingguan-mini into develop
| | | 
| * | commit f734d0282bdb6d93d8727f1f5db0ab65a2a23085
| | | Author: 222
| | | Date:   Fri Mar 11 13:31:50 2022 +0800
| | | 
| | |     fix: pageName
| | | 
* | | commit 787be3abd291a677cae41a7a8e31a3ae458ebf58

本地分支更新远程分支 (将本地分支合并到远程分支)

git push origin 本地分支名:远程分支名

远程分支合并本地分支

git pull origin 远程分支:本地分支

查看远程主机信息

// 查看远程主机名称
git remote
// 查看远程主机网址
git remote -v

取回远程仓库上某个分支的更新, 再与本地的指定分支合并

git pull origin 远程仓库名 远程分支名:本地分支名

eg: 取回origin 主机上的dev分支, 与本地的guyal分支合并

git pull origin dev:guyal

如果远程分支是与当前分支合并, 冒号后面的部分可以省略.

git pull origin dev

同样的结果, 使用git fetch操作

git fetch origin  //git fetch 不会自动合并到本地,so.. 
git merge origin/dev  //fetch 完成之后需要merge

eg:

$ git merge origin/dev
fatal: refusing to merge unrelated histories

解决方法(git 版本问题)
merge之后如果出现fatal: refusing to merge unrelated histories, 则需要在其后加 --allow-unrelated-histories 即可;

git merge origin/yang-dev --allow-unrelated-histories 

合并解决冲突

<<<<<<< HEAD
这里是你的本地代码
=======
这里是远程仓库的代码
>>>>>>> dev

视个人情况删减代码
解决完成之后执行

git add -u // 把修改内容加入缓存, 然后在commit
git commit // commit 完成, 查看状态
git status // 会自动进入vim , 输入:wq 即可退出
git push -u origin guyal // 提交即可完成

vim 保存退出vim 命令

按ESC键 跳到命令模式,然后:

:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
 git fsck  --unreachable/git fsck
 git show 0c005235ef78deb20597ed4047ee7f5e29b878a4
 git fsck --lost-found
 git reset --hard 7bc257bf46e663487a0cffd062b852987ecf658c

撤销修改

git checkout -- readme.txt

把readme.txt文件在工作区的修改全部撤销;
这里有两种情况:
修改后还没有被放到暂存区:撤销修改就回到和版本库一模一样的状态;
修改后已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态;
总之,就是让这个文件回到最近一次git commit或git add时的状态。

把暂存区的修改撤销掉(unstage),重新放回工作区

git reset HEAD <file>

git 更新远程分支列表

git remote update origin --prune
git remote update origin -p

删除一个文件

git rm

廖雪峰老师的官方网站讲解的内容有趣有货,推荐点击直达廖雪峰的官方网站

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值