Git生成私钥
查看单前用户 git config user.name git config user.email 配置自己的身份,这样在提交代码的时候就能知道是谁提交的: git config --global user.name "limengfan" git config --global user.email "limengfan@qq.com" 查看是否已经有了ssh密钥 cd ~/.ssh ls 如果没有密钥则不会有此文件夹,有则备份删除 生存密钥 $ ssh-keygen -t rsa -C "limengfan@qq.com" 按3个回车,密码为空。 最后得到了两个文件 id_rsa和id_rsa.pub
基本操作
1.创建仓库 使用当前目录作为Git仓库,我们只需使它初始化。 git init 使用我们指定目录作为Git仓库 git init 名称 查询代码仓库 ls -al 2.提交本地代码 添加文件到缓存中 git add . 添加所有 git add 文件名1 文件名2 添加单个文件 清除不要的修改文件 git checkout 文件名 从缓存中删除文件 git reset HEAD 文件名 查看添加的文件(A表示已添加的,AM表示添加后又有改动) git status -s 将缓存区内容提交到仓库中 提交这里要在-m参数后面加上提交参数,不然会被认为不合法不能提交. git commit -m "提交测试" 将提交代码推到远程服务器 git push 3.以查看在你上次提交之后是否有修改 git status 4.查看执行 git status 的结果的详细信息 尚未缓存的改动:git diff 查看已缓存的改动: git diff --cached 查看已缓存的与未缓存的所有改动:git diff HEAD 显示摘要而非整个 diff:git diff --stat 注意:git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。 7.更新本地代码 git pull 8.从现有 Git 仓库中拷贝项目 克隆repo文件到当前目录 git clone repo 克隆到指定的目录(及directory目录) git clone repo directory 要克隆 Ruby语言的 Git代码仓库 Grit,newname指自定义克隆文件名 git clone git://github.com/schacon/grit.git newname 7.创建目录 mkdir 目录名 8.创建文件 touch 文件名 9.修改文件 vim 文件名 按键:i 光标前插入 按键:a 光标后插入 退出编辑 esc按键 保存并退出 输入wq 10.查看文件内容 cat 文件名 11.删除文件 rm 文件名 rm -f 文件名 强制删除 rm –r * 递归删除整个目录中的所有子目录和文件 12.移动或重命名文件 mv a.txt b.txt 将a.txt文件改名为b.txt mv a.txt ./a 将a.txt文件移动到单前的a目录下
不影响当前工作,更新核心代码
# 保存工作现场(将目前还不想提交的但是已经修改的代码保存至堆栈中) git stash # 从远程仓库获取最新代码并自动合并到本地 git pull # pull 命令如果有冲突,先处理冲突 # 恢复工作现场 git stash pop
分支管理(切换分支Git将还原你的工作目录到你创建分支时候的样子)
1.列出分支 git branch # 查看全部分支 git branch -a 注:我们有一个叫做 master 的分支,并且该分支是当前分支。 git init 的时候,缺省情况下 Git 就会为你创建 master 分支。 2.创建分支命令: git branch 分支名 3.切换分支 git checkout (branchname) 4.创建新分支并立即切换到该分支下 git checkout -b (branchname) 5.删除分支 git branch -d (branchname) 6.合并分支(你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支) git merge 想要合并的分支名 7.将本地的分支推送到远程主机origin上的对应分支 git push origin 本地分支名:远程分支名 8.将本地的master分支推送到origin主机,同时指定origin为默认主机,以后就可以不加任何参数使用git push git push -u origin master # 将本地的代码提交到git仓库 **创建新版本库**(服务器) git clone (地址) cd guojian_mobile touch README.md git add README.md git commit -m "add README" git push -u origin master **已存在的文件夹或 Git 仓库**(服务器) cd existing_folder git init git remote rm origin // 删除关联对应的远程仓库地址 git remote add origin (地址) //添加git地址 git remote set-url origin (新地址) //修改git地址 git add . git commit git push -u origin master
git更换远程仓库地址
先查看关联的远程仓库地址 git remote -v 修改更新 git remote set-url origin (新地址)
git回退代码
1. 查看代码提交记录 git log 2. 将最新的3次提交全部重置,就像没有提交过一样。 git reset --hard HEAD~3 3. 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本 git reset --hard 38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 4. 查看最近的操作记录 git reflog 5.回撤后,push 提交会失败,因为当前分支的版本低于远程分支的版本,所以要想覆盖掉它,必须使用force git push origin dev --force
git代码修复
在平时开发中,我们有时候可能会因为手误或其它原因将某些重要文件删除。如果之前有将此文件纳入到 Git 中,这时便可以利用 Git 来对误删文件进行恢复。
- 查看 Git 状态,能看到有相关提示显示
XXXX
文件已被删除
git status
- 下面我们使用 Git 进行恢复被删除文件
git checkout -f
解决git pull/push每次都需要输入密码问题
如果我们git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁的输入账号和密码会很麻烦。
进入你的项目目录 输入命令: git config --global credential.helper store 然后你会在你本地生成一个文本,上边记录你的账号和密码。当然这些你可以不用关心。 然后你再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。
冲突解决
//先同步了本地库和远程库,再进行文件的上传。 git pull --rebase origin master //强制推送本地代码,结果:本地代码会覆盖线上的git仓库的代码 git push -f origin master
git强制覆盖本地代码(谨慎操作,自己本地修改未提交的代码会被覆盖)
(与git远程仓库保持一致:git reset --hard origin/master)
git fetch --all git reset --hard origin/master //返回上一步不提交【解决冲突】 git pull
Git 本地分支与远程分支关联
git branch-set-upstream-to=origin/远程分支的名字 本地分支的名字
git branch --set-upstream-to=origin/dev dev
git操作之git commit以后想要回退方法
# 回退到上一个提交状态,并保留修改的文件 git reset --soft HEAD^