Git
Git下载
https://git-scm.com/download/win
Git常用语句
$ git init //初始化仓库,然后关联远程仓库 $ git clone https://github.com/AutKevin/JAVA //克隆服务器仓库到本地,如果是为了直接克隆远程仓库到本地,直接执行此步骤,不需要init $ git clone -b dev https://github.com/AutKevin/JAVA [文件夹名称_DEV] //克隆指定仓库的分支 $ git remote add origin https://github.com/AutKevin/JAVA //关联到远程库,origin为远程仓库名,https://github.com/AutKevin/JAVA为url $ git pull //获取远程库文件 $ git add . //添加要上传的文件,为.时表示当前文件夹下的所有 $ git commit -m 'first commit' //文件提交到仓库,添加备注 $ git push //推送到远程库 $ git push -u origin master //推送到远程仓库,远程仓库origin的master分支 $ git diff //查看workspace和缓存区之间的区别 $ git status //查看状态 $ git remote -v //查看目前链接的远程仓库 $ git branch -a //查看远程仓库的所有分支 $ git rm file_path //从暂存区和工作区中删除文件,如果是文件夹 $ git rm fileDir -r //删除文件夹及其子文件 $ git rm --cached file_path //从暂存区中移除文件,但仍然保留在当前工作目录中。当想删除远程仓库的文件,但是本地不删除时使用 $ git checkout //从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
git help查看命令帮助
官方例子
初始化一个仓库
git init //初始化本地仓库 git add README.md //添加文件 git commit -m "first commit" //提交到本地仓库 git remote add origin git@github.com:AutKevin/ProjectName.git //将本地仓库关联到远程仓库,并将远程仓库名命名为origin git push -u origin master //推送到远程仓库名为origin的master分支
将本地一个已有的库推送到服务器
注意!!!这里的远程仓库一定要是新建的仓库,因为本地仓库刚init不是clone下来,如果直接-f push上去会导致远程仓库之前所有的内容消失。
如果是已经存在的仓库,要先pull下来再push,如果不想pull可以新建一个分支
git init //本地仓库初始化 git remote add origin git@github.com:AutKevin/ProjectName.git //添加远程仓库,并命名为origin。 git add . git commit -m "first commit" git remote -v //查看所有远程仓库名 git branch -a //查看所有分支名 git push -u origin master //推送到origin远程服务器的master主分支
git pull命令
$ git pull <远程库名> <远程分支名>:<本地分支名>
等同于先做了git fetch ,再做git merg。
git fetch origin online //从远程服务器origin,online分支拉到本地仓库 git checkout online //切换到online分支下 git merge origin/online //将拉到本地仓库的和工作空间合并
Git撤销git commit 但是未git push的修改
1. 找到上次git commit的 id git log 找到你想撤销的commit_id 2. git reset --hard commit_id 完成撤销,同时将代码恢复到前一commit_id 对应的版本。 3. git reset commit_id 完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。
Git下载指定文件夹下的文件
复制github中指定目录的url,将将“tree/master”改成“trunk”再运行svn checkout url即可
svn checkout giturl
创建分支
基础命令
查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>
一个分支代表一个功能点,开发完之后要new一个pull request(拉请求,用于告诉所有成员有新的功能被添加)。然后merge到master上,再删除分支。若是功能开发失败,直接删除即可,不影响其他分支开发。
git checkout -b dev //创建并切换到分支,相当于如下两个命令 /* $ git branch dev 创建分支 $ git checkout dev 切换分支 */ git branch //查看分支 git add readme.txt //添加文件 git commit -m "branch commit" //提交 git checkout master //切换到主分支 git merge dev //合并dev分支,merge用于合并指定分支到当前分支 git branch -d dev //删除本地dev分支 git branch //查看分支
git push [origin] --delete [branchname] //删除远程仓库分支,orign为远程仓库名,branchname为分支名
Git免登陆
git config --global user.name myusername git config --global user.email myemail git config --global github.user myusername git config --global github.token mytoken
获取Tokens,Setting -》 Developer settings -》Personal access tokens,写上备注,勾上repo、package相关权限权限。点击生成后一定要先复制Token,下次就不显示Token了。
Git代理
//设置http全局代理 git config --global https.proxy http://127.0.0.1:10809 //https全局代理 git config --global https.proxy https://127.0.0.1:10809 //使用socks5代理的 例如ss,ssr git config --global http.proxy socks5://127.0.0.1:10808 git config --global https.proxy socks5://127.0.0.1:10808 //只对github.com使用代理,其他仓库不走代理 git config --global http.https://github.com.proxy socks5://127.0.0.1:10808 git config --global https.https://github.com.proxy socks5://127.0.0.1:10808
//取消github代理 git config --global --unset http.https://github.com.proxy git config --global --unset https.https://github.com.proxy //取消全局代理 git config --global --unset http.proxy git config --global --unset https.proxy
回滚到服务器指定版本
即将所有文件恢复到之前服务器版本
git log --pretty=oneline #查看服务器指定版本 git reset --hard versionid git pull git status
恢复误删除的文件
即将单个文件恢复到指定版本
git status #查看工作区的状态 git reset HEAD filename #将文件reset回最新版本 git checkout -- filename #将文件checkout出来
命令行需要输入两次密码问题
# 配置存储模式,执行之后主目录下的.gitconfig中多加helper = store git config --global credential.helper store # Win进入%USERPROFILE%目录,查看.gitconfig是否添加store配置 # 首次输入账号密码之后,就会记住账号密码,并且会在当前用户根目录下生成一个.git-credentials文件,此文件明文记录了密码。
GitHub常用插件
Octotree 左侧形成树
OctoLinker 跳转到文件
enhanced-github 显示文件大小,并单独下载github中的文件
GitHub常用技巧
文件名搜索
源码浏览页面,按T键可以快速进入模糊文件名搜索模式
分支过滤
仓库主页,按W键可以快速进行分支过滤
快捷键提示
在任何界面,?键可以弹出快捷键提示
GitHub搜索技巧
搜索仅包含 fork过的项目,在搜索条件中加入fork:true或fork:only
搜索项目名称中包含关键字的 in:name
搜索描述中包含关键字的 in:description
搜索readme中包含关键字的 in:readme
搜索username中包含关键字的 user:USERNAME
搜索组织或机构名包含ORGNAME的 org:ORGNAME
按项目大小(单位K)搜索 size:n
根据fork数量搜索 forks:n
根据star数量搜索 stars:n
根据编程语言搜索language:LANGUAGE
根据路径(不含文件名)搜索 SearchPath in:path
例:
要搜索的内容 in:description language:java stars:>10 forks:>10 size:>100
其他问题
fatal: refusing to merge unrelated histories
原因是两个分支是两个不同的版本,具有不同的提交历史
解决办法:允许不相关历史提,强制合并
git pull origin master --allow-unrelated-histories
参考
https://blog.csdn.net/kabulore/article/details/51801337
https://www.cnblogs.com/phpper/p/7136048.html