2022-04-22 Git学习笔记 03

这篇博客详细介绍了Git的基本操作,包括克隆、分支管理、文件增删改查、提交、推送、查看日志、差异对比、重置、合并、保存恢复工作进度、清理临时文件、版本回退以及命令别名设置等,是Git初学者的实用指南。

Git学习笔记 03

Git基本操作

1、克隆 【git clone】

  • git clone + 克隆代码的完整路径

2、分支操作 【git branch】

  • 查看本地分支: $ git branch //分支前带 *的是当前所在分支
  • 查看所有本地分支和远程分支: $ git branch -a或者git branch --all
  • 切换本地分支: $ git checkout <分支名>
  • 创建新的本地分支: $ git branch<分支名> < commitid >
  • 创建新分支并切换: $ git checkout -b <分支名> < commitid >
  • 重命名分支: $ git branch -m <旧分支名> <新分支名>
  • 删除本地分支: $ git branch -d /-D <分支名>
  • 建立本地分支并与远程分支建立跟踪关系: $ git checkout –b <本地分支名> <远程分支名>
    eg: git checkout –b dev origin/dev

3、本地修改完成后,增加文件到暂存区 【git add】

  • 添加单个文件/文件夹到暂存区: $ git add 文件/文件夹
  • 添加所有增加和修改文件到暂存区: $ git add .
  • 添加所有修改和删除的文件到暂存区: $ git add –u<==>git add --update
  • 增加所有增加、删除和修改文件到暂存区,包括本地删除的文件:$ git add –A<==>git add --all

4、删除文件/文件夹 【git rm】

  • 删除工作区与暂存区的文件: git rm
    $ git rm 文件
    $ git rm -r 文件夹
  • 删除暂存区的文件,不会删除本地,本地文件变成未跟踪:git rm --cached
    $ git rm --cached 文件
    $ git rm --cached –r 文件夹

git rm 完后,必须执行提交才能删除版本库的文件或目录。

5、重命名【git mv】

  • git mv <旧文件名> <新文件名>

git mv 完后,需要执行提交操作才能到版本库。

6、查看工作区文件状态【git status】

  • $ git status
    Changes to be committed: (已add,未提交)
    Changed but not updated: (已修改,未add)
    Untracked files: (新增文件,未被git跟踪)

7、提交到本地配置库 【git commit】

  • $ git commit –m “msg” //正常提交
  • $ git commit –a –m “msg” //合并git add 和git commit 为一条命令
  • $ git commit –amend //修改最后一次commit

8、推送远程仓库【git push】

  • 直接推送到远程仓库 (此权限一般不开启,如果推送代码太大,超过1G,请联系配置管理员临时开启此权限。)
    $ git push origin 分支名
  • 推送到gerrit,审核通过后才会到远程仓库
    $ git push origin HEAD:refs/for/分支名

9、查看日志 【git log】

  • 查看所有日志:$ git log
  • 查看最近n次的日志:$ git log –n
  • 查看修改的文件:$ git log --name-status
  • 查看每次提交的具体改动:$ git log -p -1 <文件名>
  • 显示提交的变更概要,只需要知道修改了哪些文件:$ git log --stat

10、查看差异【git diff】

  • 查看工作区与暂存区的差异
    $ git diff
  • 查看暂存区与本地配置库的差异
    $ git diff --cached
  • 查看工作区与本地配置库的差异
    $ git diff HEAD
  • 查看工作区与远程分支的差异
    $ git diff origin/分支名

11、重置【git reset】

  • $ git reset [–soft|–hard|–mixed] [< commit >]
    mixed:置换暂存区,不改变工作区。(多数使用此参数)
    hard:置换暂存区;置换工作区。 (此参数危险,本地修改丢)
    soft:仅替换引用;不改变暂存区和工作区。

12、更新合并【git fetch、git rebase、git pull 、git merge】

  • $ git fetch && git rabase (推荐使用)
    $ git fetch origin 分支名 //把远程仓库中最新版本下载到本地配置库的远程分支
    $ git rabase origin 分支名 //把本地配置库的远程分支合并到本地分支
    如有冲突,手动解决冲突后继续合并:
    $ git add -u
    $ git rebase --continue

注意:必须使用git rebase --continue,否则会形成新的分支no branch

  • $ git pull --rebase = git fetch + git rebase(推荐使用)
  • $ git pull = git fetch + git merge(容易产生you are not allowed to upload merges的错误)

13、保存和恢复工作进度 【git stash】

Stash:如果在工作区修改尚未完成时,忽然后一个紧急任务, 需要从一个干净的工作区开始新工作,或者是要切换到别的分支进行工作。此时就需要保存未完成的工作进度

注意: 本地未受版本控制的文件并不能保存进度,需要执行add操作

  • $ git add . (本地修改添加到暂存区)
  • $ git stash (本次修改添加到stash,此时查看状态,工作区恢复了干净)
  • $ git stash pop (紧急任务完成后,再从stash恢复到暂存区)
  • $ git stash clear (清除所有的stash)
    如果本地有两个stash,需要恢复到其中一个:
  • $ git stash list
    stash@{0}: On master: “newfile hack-2.txt”
    stash@{1}: On master: “newfile hack-1.txt”
  • $ git stash apply stash@{1}

14、清理临时生成的文件【git clean】

  • $ git clean -d –fx
    x-----删除忽略文件已经对git来说不识别的文件
    d -----删除未被添加到git的路径中的文件
    f -----强制运行

15、版本回退

  • 对于没有添加到暂存区的修改(未add):
    $ git checkout file
  • 对于已经添加到暂存区的修改(已add,未commit):
    $ git reset HEAD file
    $ git checkout file
  • 对于已经提交的修改(已commit):
    $ git reset - -hard HEAD^ (回退到上个版本)
    $ git reset - -hard commit-id前7位 (回退到某次提交的版本)
  • 对于已经push的修改(已push):
    回退本地分支后:
    $ git push –f // 因为本地分支回退后,版本落后于远程分支,使用强制推送覆盖远程分支。

16、撤销某次提交 【git revert】

  • 撤销某次提交,会生成一个撤销的commit,并撤销本次文件修改
    $ git revert HEAD 撤销前一次 commit
    $ git revert HEAD^ 撤销前前一次 commit
    $ git revert commitID 撤销指定的版本,撤销也会作为一次提交进行保存。

备注: gerrit网页也可以点击“revert”撤销提交,即已经merge到远程的提交也可以被撤销。
(1)在merged列表中点击需要撤销的那次提交,在打开的页面中选“revert”。
(2)在gerrit 的open列表中选择刚才revert的提交,审核提交到远程即可。

17、分支合并步骤:

  1. $ git fetch && git rebase //此操作更新所有分支的内容
  2. $ git checkout master //切换至需要合并至的分支
  3. $ git merge --no-ff orogin/dev //自动把dev分支的提交合并到master分支若合并成功,使用
  4. $ git commit --amend //直接保存退出即可,作用是自动产生一条chang-id若合并有冲突,则需要手动解决冲突。再使用
  5. $ git add . //或者使用git add -u 或-A 或.
  6. $ git commit –m “msg”
  7. $ git push origin HEAD:refs/for/分支名

18、给Git 命令设置别名:

  • $ git config --global alias.co checkout
  • $ git config --global alias.br branch
  • $ git config --global alias.ci commit
  • $ git config --global alias.st status
  • $ git config --global alias.ps push

设置后,如果要输入git commit 只需键入git ci 即可。

19、Git 忽略文件:

一般总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,像是日志或者编译过程中创建的等等。我们创建一个名为.gitignore 的文件,列出要忽略的文件模式。

例如:
*.a      # 忽略所有.a 结尾的文件
!lib.a     # 但lib.a 除外
.[oa]     #忽略所有.a和.o结尾的文件
/dbg     # 仅忽略此目录下的dbg文件和目录
dbg/     # 忽略dbg/ 目录下的所有文件
doc/
.txt   # 会忽略doc/notes.txt 但不包括 doc/server/arch.txt

.gitignore 的文件对当前文件夹及其子文件夹有效。

20、repo下载命令:

  1. repo init
  2. repo sync
  3. repo start 分支名–all
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值