2020-11-24

1 篇文章 0 订阅
本文详细总结了Git常用命令,包括初始化仓库、添加、提交、推送、拉取、合并、分支管理、标签、缓存区操作等,并通过实例解析了在实际场景中的运用,如创建分支、撤销提交、合并代码、打标签等,帮助读者深入理解Git操作。
摘要由CSDN通过智能技术生成

一次git考试总结

首先把git常用命令总结一下

1、git init    初始化git仓库

2、git add xxx  将工作区xxx文件添加到暂存区

3、git commit  将暂存区文件提交到本地仓库

      git commit --amend  把文件追加到最近一次提交中

4、git push  将本地文件推送到远程仓库

      git push -u origin master      -u参数是自动保存,下次不用写远程仓库和分支名,直接使用git push即可 

5、git fetch  将远程仓库的最新内容拉到本地,可以检查了以后在决定是否合并

6、git merge  将本地与工作区的代码进行合并

6、git pull  将远程仓库的最新内容拉下来直接合并

      git pull remote-name branch-name 

      git pull = git fetch + git merge 

7、git config  git配置

      git config --get --global user.name   获取全局用户名

              --get(获取)/–add(添加)    --global(全局)/–local(本地)    user.name(用户名)/user.email(邮箱)

8、git clone http://remote.repo.url  将远程仓库代码克隆到本地

      git clone http://remote.repo.url  your-folder  将远程代码克隆到本地指定文件夹下

9、git status  查询git文件状态

      untracked:仓库里新建的文件,或者从别的地方复制到仓库里的文件,它们的状态都是 "untracked",它们被用红字显示在查询结果的 "Untrakced files" 段落中。  

      modified:被编辑过的文件的状态就变为 "modified",它们被用红字显示在查询结果的 "Changes not staged for commit" 段落中

      staged:通过 git add 命令加入到暂存区的文件的状态就变为 "staged",它们被用绿字显示在查询结果的 "Changes to be committed" 段落中

10、git log  查看历史日志,每条日志包含一个40位的hash值、作者名字、电子邮件地址和提交日期及说明

      git log --pretty=oneline  添加该参数表示把日志以紧凑形式展示,方便查看

11、git branch  列出所有分支

       git branch xxx-name   创建分支

12、git checkout branch-name/file-name  切换到branch_name的分支/撤销对file_name文件的修改

       git checkout -b  branch-name  直接创建branch_name的分支并切换到这个分支上

       git checkout -   切换到上次所在的分支,用于两个分支来回切换非常方便

13、git stash  将文件放到缓存区

       git stash list   列出所有在缓存区中的文件

       git stash pop 恢复之前放在缓存区中的文件

14、git rm  删除文件

        git rm --cached  撤销添加到暂存区的文件(git add的逆向操作)

15、git mv  修改文件名称/移动文件

16、git tag  列出所有标签tag

        git tag your-tag   对最近一次提交打tag

        git tag your-tag  a38799b90    对某次指定提交打tag

        git tag -d your-tag  删除本地tag

17、git push --tag  将本地标签推送到远程服务器

18、git reset  把一个已修改的文件从暂存区中移出

        git reset --sort HEAD^ 取消最后一次提交操作,并且暂存区和工作目录的文件均不受影响

                                              其中上面的git commit --amend就相当于先git reset --sort再git commit  

19、git remote  查看本地项目有几个远程仓库

        git remote -v  查看每个远程仓库的fetch和push地址url

        git remote add remote-name remote-url  手动添加远程仓库

 

20、git diff  查看被修改文件的细节内容

         git diff branch-name/file-name

21、git blame file_name  查看文件中每一行的最后一次修改的人员时间信息

22、git merge  合并代码,将代码合并到主干分支

23、git rebase 功能同git merge

        git rebase -i  修改历史日志提交说明/多次提交合并成一次(将被修改的提交pick改成s)

24、git repack  打包

25、git cherry-pick hash-code  当开发分支上有多次提交,但是只想把某一次提交合并到主线分支上的时候,使用该命令

26、git revert hash-code  取消某次已经提交到服务端的请求,相当于某次提交的逆向操作,添加一个新的版本

        git revert hash-code --no–edit  添加–no–edit参数表示由系统自动生成一条提交说明

        ps: reset是退回到目标版本,目标版本后面的版本就不见了

              revert是对指向目标版本的一次逆向操作而生成一个新的版本,保留了之前的版本

下面分析考试试卷

1.创建分支 hcm-core, 把文件 hcm_file 添加到暂存区,并提交到远

这个问题的答案比较简单,用过git 的都能答出来送分题

git checkout -b hcm-core

git add hcm_file

git commit -m ‘add hcm_file’
git push origin hcm-core
 
2.hcm_file 不小心被添加到了暂存区,从暂存区中删除它,但是不要从文件系统中删除
因为是删除文件,所以 git rm(注意不要直接 rm,直接 rm git 管理
不到)
只是暂存区删除:所以加上--cached
git rm --cached hcm_file
3. 给倒数第二次提交打一个 tag
git tag your-tag 是打 tag
倒数第二次提交,我们可以通过 git log 找到 commitId,也可以用 ~2
答案:git tag your-tag HEAD~2
4. 你仓促地提交了代码(未提交到远程),现在想取消最后一次提交,同时保持暂存区不变
取消提交使用git reset命令
git reset --soft HEAD^
5. 有个好心的同学修改了你的分支,找到他修改了哪个文件,并看看 他改了什么
git diff branch
可以用git log 命令查看修改记录
6. 找出上一题那个好心人
git blame your-file
7.删除名为 hcm-wrong 的本地分支和远程分支
git branch -d branch-name 删除本地分支
git push origin --delete branch-name 删除远程分支
git push origin :branch-name 推送一个空分支远程分支,也相当
于删除远程分支
8. release-core-s21 分支合并到 master ,分别用 merge rebase 来实现
git checkout master
git merge release-core-s21
git rebase release-core-s21
9. 你辛辛苦苦在 HCM-888 分支上开发了一个礼拜,最后被告知只有 一个提交会被上线,其他需求被砍掉了,请悲痛的你把这个提交合并 到 master
git log 找到你的 commitId
git checkout master
git cherry-pick commitId
10. 把最近两次的提交合并成一次提交(未提交到远程)
git rebase -i HEAD~2
将第二行的 pick 改成 squash 或者 s
11. 删除倒数第二次提交(未提交到远程)
git rebase -i head~2
将第二行的 pick 改成 drop 或者 d
12. 你的提交已经 push 到远程了,删除倒数第二次提交
git revert HEAD~2
13. master next topic 三个分支,执行如下命令后, git rebase --onto master next topic,请画出 git log master 的顺序图( 10 分)
A---B---C---D---E master
\
F---G---H---I---J next
\
K---L---M topic
 
git rebase --onto master next topic 的结果是
Master + ( topic - next)
A--B--C--D--E--K--L--M
 
14. 你在 HCM-888 的分支上开发,然后 merge master ,上线后发 现业务有问题,QA 同学执行了回滚(代码也回滚了),你需要在原 分支代码基础上修复 bug 上线,请写出操作流程
 
正常的开发过程:
1.HCM-888 的代码合并到 master
2.master 发布到机器
执行回滚时:
1.机器回滚成上一版本的代码(最好用 commitId)
2.git revert HEAD~
当你需要在 HCM-888 上修复 bug 时:
1.HCM-888 要先 merge 成 master 最新的代码(此时 master 执行 了 revert,所以 master 的代码比 HCM-888 是要更靠前的)
2.merge 后 HCM-888 上就不再有本次发布的代码了
3.为了找回本次的代码要先把master的那次revert在revert回来(最 好用 commitId)
4.git revert HEAD~
5.继续 fixbug,执行正常的发布流程
 
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值