Git命令进阶

  • git add 用法

  1. git add -A:保存所有的修改
  2. git add . :保存新的添加和修改,但是不包括删除
  3. git add -u:保存修改和删除,但是不包括新建文件。
  • git commit 用法

  1. git commit -m "提交备注信息" : 该命令将git add . 存入缓存区的修改内容提交至本地仓库中,若文件未添加至暂存区,则提交时不会提交任何修改。
  2. git commit -a:相当于运行 git add -u把所有当前目录下的文件加入缓存区域再运行git commit,此时需要在备注页面添加备注信息。注意!此时对于新增的文件,并没有被commit。
  3. git commit –am “本次提交描述” 或 git commit –a –m“本次提交描述”:和git commit -a 功能相同,唯一区别在于可以直接添加备注。
  4. git commit --amend :该命令的作用在于执行了git commit命令后,又有新改动,可以先执行git add .命令将新修改代码加入到缓存区后,执行git commit --amend命令即可将新改动追加至原提交信息上。
  • git stash 用法

  1. git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
  2. git stash list:查看stash了哪些存储
  3. git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
  4. git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
  5. git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
  6. git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
  7. git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
  8. git stash clear:删除所有缓存的satsh

注:新增文件不会直接被存储,需要先git add . 然后在git stash save 'xxxx'方可存储

  • git reflog 用法

  1. 查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录
  2. 可用于代码找回:git reset --hard f3ef592 (或者HEAD@{49}) 即可
615ce06 HEAD@{44}: rebase -i (finish): returning to refs/heads/my_test_branch
615ce06 HEAD@{45}: rebase -i (fixup): zancun_new
702356c HEAD@{46}: rebase -i (fixup): # This is a combination of 2 commits.
c997622 HEAD@{47}: rebase -i (reword): zancun_new
fb74ec2 (origin/master, origin/HEAD) HEAD@{48}: rebase -i (start): checkout FETCH_HEAD
f3ef592 HEAD@{49}: commit: zancun3
6b82c75 HEAD@{50}: commit: zancun2
e900fa0 HEAD@{51}: commit: zancun

 

  • git reset 用

  1. --hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
  2. --soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。相当于git add . 后没有git commit。
  3. --mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。相当于修改了内容没有git add . 。
  4. git reset --hard HEAD:表示回退至本地版本库的头指针所指版本。可以使用git reset --hard HEAD^,一个^表示一个版本,可以多个,也可以使用git reset HEAD~n的形式。
  5. git reset --sofg HEAD/版本ID:回退至指定版本,并保留缓存区内容。
  6. git reset --mixed HEAD/版本ID:回退至指定版本,并保留工作空间的内容。
  • git checkout 用法

  • 分支间的切换

  1. git checkout branchName:在本地已有分支基础上切换分支,即本地分支间的切换。
  2. git checkout -b newBranchName:在本地创建新分支并切换至该分支,等同于:先执行git branch newBranchName,在执行git checkout newBranchName(工作区一定要是clean的)
  3. git checkout -b newBranchName remote_branch_name:拉取远程分支remote_branch_name并创建一个本地分支newBranchName,并切到本地分支newBranchName,采用此种方法建立的本地分支会和远程分支建立映射关系。
  • 回退修改

  1. git checkout -- fileName:把fileName从当前HEAD中检出,也就是回退当前工作区的这个文件的修改, -- 可以省略不写。
  2. git checkout --hard HEAD:回退工作区的全部文件修改,不需要对每个文件进行checkout。
  • git revert 用法

  1. 反转提交, 撤销一个提交的同时会创建一个新的提交,也就是用一个新提交来消除一个历史提交所做的任何修改。
  2. git revert commit -id:revert指定的一个commit
  3. git revert HEAD~3: revert指定倒数第四个commit
  4. revert过程有可能遇到冲突,要么git revert --abort终止此次revert操作,代码还原至revert命令前。要么手动消除冲突(同普通的冲突解决),然后git commit
  • reset,checkout,revert三者总结

命令 | 作用域 | 常用情景
---- | ---
git reset | 提交层面 | 在私有分支上舍弃一些没有提交的更改
git reset| 文件层面 | 将文件从缓存区中移除
git checkout| 提交层面| 切换分支或查看旧版本
git checkout| 文件层面| 舍弃工作目录中的更改
git revert| 提交层面| 在公共分支上回滚更改
git revert| 文件层面| (然而并没有)

  • git branch 用法

  1. git banch:查看本地仓库分支;
  2. git banch -r:查看远程仓库分支;
  3. git banch -a:查看本地仓库和远程仓库所有分支;
  4. git branch -d 分支名称:删除本地分支,也可以使用 -D 强制删除;
  • git pull 用法

  1. git pull <远程主机名> <远程分支名>:<本地分支名>:该命令用于从另一个存储库或本地分支获取并集成(整合)。git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
  2. 在默认模式下,git pull = git fetch + git merge
  3. 使用--rebase模式下,git pull --rebase = git fetch + git rebase
  • git push 用法

  1. git push <远程主机名> <本地分支名>:<远程分支名>: 命令用于将本地分支的更新,推送到远程主机。

       例:git push origin HEAD:master 该命令是将当前分支推送到源存储库中的远程引用匹配主机。该形式方便推送当前分支,而不考虑其本地名称。

              git push origin master  该命令将本地master分支推送到origin主机的amster分支上。如果master不存在,则会被新建。如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送了一个空的本地分支到远程分支。

               git push origin :master 该命令表示删除origin主机的master分支。如果当前分支和远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

  • git merge --no-ff origin/develop用法

  1. 合并前先使用:git fetch --all 拉取服务器端最新分支信息;
  2. 该命令是将指定(origin/develop)合并到当前所在分支上;
  3. 如果指定分支(origin/develop)上有非本人提交,在提交时会报错,此时可使用git reset --mixed 合并前developID,然后再git add ., git commit
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值