git常用操作
一、创建仓库
1、把当前目录变成Git可以管理的仓库:
$ git init
二、提交代码相关
1、把当工作区文件加到暂存区单个文件加入
git add x.java
全部文件加入
git add .
git commit -m "xxx"
3、克隆一下远程仓库到本地
git clone git@github.com:michaelliao/gitskills.git
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。
要查看远程库的信息,用git remote:
$ git remote
origin
或者,用git remote -v显示更详细的信息:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。
4、添加一个远程仓库
git remote add origin git@github.com:michaelliao/learngit.git
5、本地库的所有内容推送到远程库上。
git push -u origin master
6、提交日志查看(详细)
git log
git log --pretty=oneline
8、把本地的dev推送到远程的origin
git push origin dev
9、指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream-to=origin/dev dev
三、版本回退
1、回到上一个版本
git reset --hard HEAD^
3、回到上倒数第3个版本
git reset --hard HEAD^^^
4、回到上100个版本
git reset --hard HEAD~100
5、回到指定版本
git reset --hard 1094a
在Git中,总是有后悔药可以吃的。当你用
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
四、撤销更改
丢弃修改,这个文件回到最近一次git commit或git add时的状态。类似svn revert命令。
- git checkout -- readme.txt
五、bug分支功能
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:
并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。
1、把当前工作区的内容保存并隐藏起来,等bug分支修改后并合并后可以重新回到之前的工作。
保留现场
- git stash
2、创建一个bug修复的分支
- git checkout -b issue-101
3、推送本地分支到远程仓库
- git push --set-upstream origin 本地分支名
4、从远程仓库里拉取一条本地不存在的分支
如果出现提示:
- git checkout -b 本地分支名 origin/远程分支名
fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?
表示拉取不成功。我们需要先执行
然后再执行
- git fetch
- git checkout -b 本地分支名 origin/远程分支名
5、删除本地分支
- git branch -d 本地分支名
6、删除远程分支
- git push origin --delete 分支名
- git branch -r -d origin/branchName
- git push origin :branchName
7、切换到master分支
- git checkout master
8、把issue-101分支合并到当前分支
- git merge --no-ff -m "merged bug fix 101" issue-101
注意:
--no-ff指的是强行关闭fast-forward方式。
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
总结:
--no-ff:不使用fast-forward方式合并,保留分支的commit历史
--squash:使用squash方式合并,把多次分支commit历史压缩为一次
9、查看是否有保留的工作现场
git stash list
10、回到上一次保留现场=》删除保留的现场记录
git stash apply=》git stash drop
11、直接回到回到上一次保留现场并删除记录
git stash pop
12、使用Git下载指定分支
git clone -b 分支名 仓库地址
如:
git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git
解释一下这个命令:-b表示要从分支下载,v2.8.1就是具体的某个分支的名称,https://git.oschina.net/oschina/android-app.git这是app源码的git仓库地址
13、远程分支代码强制覆盖本地分支
git pull <远程主机名> <远程分支名>:<本地分支名>
eg:
git pull --force origin master:master
六、Feature分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。
添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。
1、创建一个feature分支
git checkout -b feature-vulcan
2、删除一个feature分支
git branch -d feature-vulcan
销毁失败。Git友情提醒,feature-vulcan分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数。。
七、分支通用经验
1、master分支是主分支,因此要时刻与远程同步;2、dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
3、bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
4、feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
八、自定义git
1、git忽略文件:编写.gitignore文件,如:
- # Windows:
- Thumbs.db
- ehthumbs.db
- Desktop.ini
- # Python:
- *.py[cod]
- *.so
- *.egg
- *.egg-info
- dist
- build
- # My configurations:
- db.ini
- deploy_key_rsa
2、配置别名(命令简写配置)
如果敲git st就表示git status那就简单多了。
git config --global alias.st status
还可以:
git完整教程请看:https://www.liaoxuefeng.com/wiki/896043488029600,这里只是摘录了核心知识点。
转载请注明:文章转载自:蓝狐软件工作室 » git常用命令总结(面试和日常工作)
本文标题:git常用命令总结(面试和日常工作)
本文地址:http://www.lanhusoft.com/Article/712.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步