Fork me on GitHub

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

posted @ 2017-10-17 20:50  秋夜雨巷  阅读(287)  评论(0编辑  收藏  举报