git --version
查看git版本信息
rm -rf dev
删除dev这个文件夹
mkdir dev
创建文件夹
初始化git仓库
git init
在nodejs文件夹下初始化一个仓库,此时文件里会到一个.git的隐藏文件夹
ls -al
可以查看所有的东西 .git也可以看到
本地文件绑定git仓库
git init
git remote add origin git仓库地址 //连接远程仓库 仓库名 origin也可以自己更改 因为本地项目可以既关联git有可以关联码云
git remote rm origin // 删除远程仓库
git checkout -b master //创建分支并切换
git status // 查询仓库状态
git add . // 将文件添加到暂存区
git commit -am '注释' //添加本地文件到版本库
git push origin master //要是直接push不上去的话就直接强推 git push -f origin dev
github仓库更改为阿里云
- 打开git安装文件夹里的git-cmd.exe
- 在git提示符里cd到本地git库
- 运行git remote show origin,会显示远端仓库名称
- 运行git remote set-url (上一步远端仓库名) https://阿里云code地址
- git fetch验证,操作成功即完成
创建忽略文件
touch .gitignore
创建忽略文件 不需要服务器端提交的内容可以写到忽略文件里
查看提交记录和版本回退
git log 产看提交历史,以便确定要回退到哪个版本
git log --pretty=oneline 可以看到commit版本号
git reset --hard commit_id 回退到某个版本 改变了head的指向
Bug分支
当有遇到bug需要修复但是你dev分支的工作还没有提交,但是dev的工作还没完成又必须去修复bug,怎么办?
git stash
这个功能可以把现场工作储藏起来,等以后恢复现场后继续工作
然后切换到bug分支去修改代码,修改完提交到master
流程:
git checkout -b bug //创建bug分支并切换 在这分支上修改bug
git add . // 修改完了提交并commit
git commit -am 'xxx'
git checkout master // 切换到master分支并合并bug分支的代码 然后就可以删除这个分支了
git merge --no-ff -m 'xxxxx' bug
然后回到dev分支继续开发:
git stash list // 查看暂存的记录 需要恢复一下之前的工作现场
// 1. git stash apply恢复,但是恢复后,stash内容并不删除,需要用git stash drop来删除
// 2. git stash pop 恢复的同时也把stash内容删除了 一般用这个方法恢复现场
注意:也可以多次stash,恢复的时候用: git stash apply stash{0}
撤销修改
git checkout -- 文件名 // 把文件在工作区的修改全部撤销 有两种情况:
// 1.文件修改后还没有被放到暂存区,撤销修改后就会到版本库一模一样的状态
// 2.文件已经添加到了暂存区,又做了修改,现在,撤销修改就回到添加到暂存区后的状态
git reset HEAD 文件名 //可以把暂存区的修改撤销掉,重新放到工作区
git checkout -- 文件名 // 也可以把本地误删的文件撤会 相当于一键还原
查看文件内容
cat index.html
git remote -v 查看远程仓库
git remote rm ogigin 删除远程仓库
**开发的时候不在master开发,会切分支来开发**
git branch dev //创建分支
git branch //查看分支
git checkout dev //切换分支
git branch -d 分支名字 //删除本地分支
如果要丢弃一个没有被合并的分支 可以用大写的D git branch -D 分支名字
git push origin --delete 删除远程分支
git checkout -b dev //创建分支并切换
git pull origin 分支名 //拉取远程分支 下载代码不成功的话就拉取远程分支
git commit -a -m ‘dev1’ //在分支上提交新的版本
git log --oneline --graph --decotate //分支的合并显示log
通常我们提交git的时候都是
git add .
git commit -am "some str"
git push
git push -f origin 分支 //强推 push不行用这个,多人协作可能会覆盖别人的代码,容易被打死
下载的时候
git clone xxxxx
git branch -b 分支 //先切换到对应的分支上
git pull origin 分支 //拉取对应分支的数据
**合并分支**
git merge 分支 //将此分支合并到当前分支上 合并上之后需要git push origin 当前分支 到服务器
查看修改的内容 git diff
**git tag 打标签**
git tag 标签名 // 默认是打在最新的commit上的,但是有时候忘记打标签,比如现在是周五了,但应该在周一打的标签没有打怎么办
- git log --pretty=oneline --abbrev-commit 找到历史提交的commit,然后打上去
- git tag v1.2 05ac981(commit) // ok
- git show // 查看打的标签信息
- git tag -d //删除一个本地标签
- git push origin 标签名 推送一个本地标签
- git push origin --tags 推送全部未推送过的本地标签
- git push origin :refs/tags/ 删除一个远程标签
``
多人协作
1.`git push origin <branch-name>`推送自己的修改
2. 如果推送失败,则因为怨恨曾分支比你的本地更新,需要用`git pull`试图合并
3. 如果合并有冲突,则解决冲突,并在本地提交
4. 没有冲突或者解决掉冲突后,再用`git push origin <branch-name>`推送
如果`git pull`提示`no tracking information`,则说明本地分支和远程分支的链接关系没有创建,用命令`git branch --set-upstream-to=origin/remote_branch your_branch`
remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支
cherry-pick
大佬安利的,说是白金级好用的命令—>用于从git库里挑选一个commit应用到当前分支
eg: 你开发了新的值班系统提交到dev分支,目前打算上线该功能(对应到master分支),但是dev上其他的commit还不想上线
- 找出这次提交的版本号 例如是0aef3c
- 切换本地代码库到master分支并且更新到最新
- git fetch 将远端仓库的所有commit拉回来,目的就是为了git数据库里有0aef3c这个提交
- git cherry-pick 0aef3c 然后commit,会生成一个新的commit,可能会产生冲突,解决就好~
修改commit记录
git commit -m 提交之后,发现-m的说明文字写的有问题,想要重新写一次,也就是想撤销上次的提交动作,重新提交一次
git commit --amend