一.git常用命令
# 显示当前的 Git 配置
git config --list
# 在当前目录初始化一个本地Git仓库
git init
# 克隆一个项目
git clone [url]
# 分别设置提交代码的用户名和电子邮件地址。
git config –global user.name "[name]"
git config –global user.email "[email address]"
# 新增指定文件到暂存区(Index / Stage)
git add [file1] [file2]
# 删除工作区(Workspace)文件,并且将这次删除放入暂存区
git rm [file1] [file2]
# 新增一个文件夹到暂存区
git add [dir]
# 把暂存区提交到仓库区(Repository)
git commit -m '[ commit msg]'
# 列出所有本地分支和远程分支
git branch -a
# 新建一个本地分支,不切换到新分支
git branch [branch-name]
# 切换到指定分支
git checkout [branch-name]
# 合并指定分支到当前分支
git merge [branch]
# 删除本地分支
$ git branch -d [branch-name]
# 删除远程分支
git push origin --delete [branch_name]
# 将远程仓库变动,更新回本地
git fetch [remote]
# 显示远程仓库
git remote -v
# 查看远程仓库的详细信息
git remote show [remote]
# 添加远程仓库,取别名remote-name
git remote add [remote-name] [url]
# 删除远程仓库地址
git remote rm [remote-name]
# 设置从哪个分支中拉取
git branch --set-upstream-to=origin/要拉取的分支名
# 拉取远程仓库的哪个分支代码,并与当前本地分支合并
git pull [remote-name] [branch]
# –rebase的作用是取消本地库中的commit,并接到新版本库中
git pull --rebase [remote-name] [branch]
# 上传当前本地分支,到远程仓库的哪个分支
git push [remote] [branch]
# 显示有变更的文件
git status
# 显示当前分支的版本历史
git log
# 根据关键词搜索提交历史
git log -S [keyword]
git reset --soft HEAD
git reset --mixed HEAD
git reset --hard HEAD
# 将当前进行的工作保存到栈中, 比如想pull 最新代码, 又不想加新commit
git stash
# 将栈中最新的一条取出
git stash pop
示例
一.在文件夹下初始化git仓库:
二.查看仓库
三.关联远程仓库(master或者dev分支)
四.拉取远程仓库代码到本地仓库(master或者dev分支)
五.不使用idea使用命令添加代码到本地仓库(文件绝对路径)或者.git下的文件git add myFolder
六.提交
七.上传到远程仓库
idea操作git
一.基本操作
1.初始化git,clone远程仓库的某个分支,如master、dev
2.打开idea发现git已经加载到idea
3.idea中Fetch获取分支信息后,拉取dev分支代码
4.基于dev分支创建本地分支feature
5.本地分支feature编写完,commit本地分支feature
6.然后切换到dev分支,pull最新代码,最好使用pull --rebase
7.将feature分支marge到dev分支,然后commit,再push dev分支
注意:本地改动直接pull到dev导致冲突,或者是merge导致的冲突,需要重新提交。
如果是rebase模式下,冲突解决后,只要输入git rebase --continue即可。
二.其他操作
1.合并分支:比如我在本地创建一个dzh-branch本地分支,在dzh-branch分支编写完,要将dzh-branch分支合并到dev分支。切换到dev分支—>点击idea右下角的按钮—>点击dzh-branch分支—>点击Merge Selected into Current—>Merge ‘dzh-branch’ into ‘dev’
2.创建新的远程分支:创建好dzh-branch本地分支后直接commit再push,就发现远程仓库有了新的分支
问题
二.先提交,有下面几种处理方式:
1.add并且commit,再checkout,提交到当前分支
2.add但不commit,可以stash,然后checkout回来之后stash apply,在commit,提交到当前分支
3.add但不commit,也不stash,直接checkout,然后再commit的话,记录就在切换分支下面。
三.commit和pull的先后区别
注意:但是先pull再commit的话, 这一个commit就不再是"你所编辑的代码",而是"别人编辑的代码+你所编辑的代码"。
四.error: open(“vs/demo2/.vs/demo2/v17/Browse.VC.opendb”): Permission denied
解决:在.gitignore文件添加 .vs/
五.rebase和merge区别
1.rebase会改变提交历史;merge则会保留真实的历史
2.用rebase做合并,因为合并后可以形成一条线性的历史记录,这样项目演进路线更清晰;
3.用merge,虽然历史记录相对错综复杂但贵在真实,可以通过历史记录清楚的看到代码真实的演进过程