git的管理方式有两种,分别为ssh和http,http的管理方法比较简单,复杂点的是使用ssh方式来管理远程代码。两种管理方法操作大致相同,但是ssh相较会更加安全,因为需要ssh-key证书认证,而且ssh管道管理方式比http管理效率更高,更快。
设置Git的user name和email: $ git config --global user.name "xxx" $ git config --global user.email "xxx@gmail.com" Note:用户名必须是已注册的用户名,邮箱必须为该用户绑定的邮箱地址
1.查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除 2.生存密钥: $ ssh-keygen -t rsa -C “xxx@gmail.com” 按3个回车,密码为空。 Your identification has been saved in /home/tekkub/.ssh/id_rsa. Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub. The key fingerprint is: ……………… 最后得到了两个文件:id_rsa和id_rsa.pub 3.添加密钥到ssh:ssh-add id_rsa(文件名) 需要之前输入密码。 4.在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。 打开https://github.com/ ,登陆xxx,然后添加ssh
5.测试:ssh git@github.com
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts. ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access Connection to github.com closed.
本地创建git仓库,xxx为仓库名称
git init xxx #从远程版本库中现在xxx项目,XXX为远程用户名,xxx.git为远程的仓库名称 #ssh克隆方法:此方法为ssh的下载方法,需要按照上文中所说的在页面上添加ssh秘钥,并在本地配置远程用户名 git clone git@github.com:XXX/xxx.git #从远程版本库中现在xxx项目,XXX为远程用户名,xxx.git为远程的仓库名称 #http克隆方法 git clone https://github.com/XXX/xxx.git #添加远程版本库origin,语法为 git remote add [shortname] [url] git remote add origin /xxx/testr.git 文件分为三个状态,已修改、已暂存、已提交,修改过但是未跟踪的文件状态称为已修改;add文件后,文件进入跟踪状态,称为已暂存状态;commit文件后,文件进入已提交状态 #使用下面的命令跟踪文件,将文件存入已暂存状态 git add '修改过的文件' #使用下面的命令将文件转到已提交状态 git commit -m '提交描述' 查看当前分支文件修改状态 #状态简览 $ git status -s M README MM Rakefile A lib/git.rb M lib/simplegit.rb ?? LICENSE.txt 删除文件 git rm '文件名' 移动文件 git mv 'file_from' 'file_to' 忽略文件 将一些文件无法纳入Git的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。 来看一个实际的例子: $ cat .gitignore *.[oa] *~文件 .gitignore 的格式规范如下: 所有空行或者以 # 开头的行都会被 Git 忽略。 可以使用标准的 glob 模式匹配。 匹配模式可以以(/)开头防止递归。 匹配模式可以以(/)结尾指定目录。 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。 撤销对文件的修改 git checkout 文件名 打标签,生成重要版本记录 #列出当前标签 git tag #搜索某一个标签 git tag -l 'v1.8.5*' #创建标签 git tag -a v1.0 -m 'my version 1.0' #查看标签内容 git show v1.0 #轻量标签 git tag v1.0-lw #后期针对某一次提交打标签 git tag -a v1.2 9fceb02 #提交一个标签 git push origin v1.0 #提交所有标签 git push origin --tags #检出标签 git checkout -b version2 v1.0 #删除tag git tag -d 标签名 分支管理: #新建分支方法一 git checkout -b versionx #新建分支方法二 git branch versionx git checkout versionx #查看所有分支 git branch #查看所有分支的最后一次提交,分支名称前的*代表当前所在的分支 git branch -v #合并子分支 git checkout master git merge versionx #删除子分支 git branch -d versionx #查看各分支合并工作情况 git log --oneline --decorate --graph #分支冲突解决 #删除冲突文件中生成的描述文本,然后提交 git commit -a -m 'fdkkfd' #查看所有的提交动作 git reflog show HEAD@{now} --all #查看当前分支操作历史(图形化) git log --oneline --graph #查看所有分支操作历史(图形化) git log --oneline --graph --all #也可以自定义显示内容 git log --pretty=format: "%an- %s" #筛选已合并过的分支 git branch --merged #筛选未合并过的分支 git branch --no-merged #从远程服务器上clone下来的默认的分支为起始分支为origin,如果是运行git init生成的仓库,默认的起始分支为master #另外也可以运行下面的命令修改clone时起始分支的名称 git clone -o roberttest https://github.com/XXX/xxx.git #拉取远程分支数据到本地,fetch方法只是拉取数据不会合并数据 git fetch 分支名称 #使用pull方法拉取的数据会合并本地的数据 git pull 名称 远程分支管理 #查看远程引用的完成列表 git ls-remote (remote) #或者 git remote show (remote) #将仓库添加到另一个分支中,或者托管到另一个仓库中管理 git remote add lp(分支名称) /xxx/xxx.git(要被托管的git url) git配置 #配置用户名 git config user.name "用户名" #配置用户邮箱 git config user.email "用户邮箱" #查看配置 git config --list git变基:将提交到某一分支上的所有修改都移至另一分支上,变基命令是在推送前清理提交使之整洁的工具,并且只在从未推送至共用仓库的提交上执行变基命令. #方法一 git checkout ex git rebase master #方法二 git checkout master git merge ex #你就可以使用 git rebase 命令的 --onto 选项,选中在 client 分支里但不在 server 分支里的修改 git rebase --onto master server client #可以直接将特性分支(server)变基到目标分支(即 master)上 git rebase master server
git回退到某次的commit:某次commit后发现提交的有问题,想要回退本次commit结果,使用如下命令
git reset 分支序列号 git reset e87d7ffgit从某次提交中拉出一个新分支:
git branch 新分支名 提交的分支序列号 git branch fix 70bcd5c