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、分支合并步骤:
- $ git fetch && git rebase //此操作更新所有分支的内容
- $ git checkout master //切换至需要合并至的分支
- $ git merge --no-ff orogin/dev //自动把dev分支的提交合并到master分支若合并成功,使用
- $ git commit --amend //直接保存退出即可,作用是自动产生一条chang-id若合并有冲突,则需要手动解决冲突。再使用
- $ git add . //或者使用git add -u 或-A 或.
- $ git commit –m “msg”
- $ 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下载命令:
- repo init
- repo sync
- repo start 分支名–all
这篇博客详细介绍了Git的基本操作,包括克隆、分支管理、文件增删改查、提交、推送、查看日志、差异对比、重置、合并、保存恢复工作进度、清理临时文件、版本回退以及命令别名设置等,是Git初学者的实用指南。
1万+

被折叠的 条评论
为什么被折叠?



