http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
1.安装好git后设置用户信息:
2.git config--global user.name “name”
3.git config--global user.email “eamil”
4.git config--global alias.status st (设置别名,简化命令)
5.创建git版本库mkdir gitRepository;cd gitRepository;pwd(显示当前目录)
6.git init 初始化git仓库(把目录变为可管理的git仓库) ls -ah(查看隐藏目录)
7.git add<file>,可以反复多次使用,添加多个文件;
8.git commit-m “xxx” 完成。
9.git status 查看仓库状态
10.git diff 查看修改内容
11.HEAD 指向当前的版本
12.git reset--hard commit_id(版本号id) 回退到想要的版本
13.git log 查看从最近到最远的提交日志,加上--pretty=oneline参数(显示一行)
14.git reflog 查看命令历史
15.gitcheckout -- file 丢弃工作区的修改(版本库替换工作区版本)
16.git resetHEAD file 丢弃缓存区的修改,再gitcheckout -- file 丢弃工作区修改
17.git rm file删除文件 git commit -m “xxx”
18.ssh-keygen-t rsa -C ”email”创建SSH key
19.git remoteadd origin git@github.com:username/repositoryname.git关联远程仓库
20.git push -uorigin master 第一次推送master分支的所有内容
21.git pushorigin master 以后每次推送最新修改
22.git clone git@github.com:username/repositoryname.git 从远程仓库克隆到本地git clone -b 6.25.1-build-01 --depth 1(拉取特定版本)
23.Git 支持多种协议包括https,但ssh支持的原生git协议速度最快。
24.已经存在的空项目git上传本地代码:
cd existing-project
git init
git add --all
git commit -m "InitialCommit"
git remote add origin http://aojie.chen@git.yunat.com/scm/ecrm/20170425_ccms_emyfoodie.git
git push origin master
2.分支
24.git branch 查看分支
25.git branch<name> 创建分支
26.git checkout <name> 切换分支
27.gitcheckout -b <name> 创建+切换分支
28.git merge<name> 合并某分支到当前分支
29.git branch-d <name> 删除分支 -D强行删除
30.git log--graph 可以看到分支合并图
31.git merge--no-ff -m “xxx” <name> 普通模式合并,可以看出曾经做过合并,而fast forward则看不出
32.git stash 保存工作现场,git stash list 查看,git stashapply恢复,git stash drop删除, git stash pop 恢复的同时把stash内容也删了 gitstash apply stash@{0}恢复指定的 stash.
33.git remote-v 查看远程库信息
34.git pushorigin branch-name 如果推送失败,gitpull 抓取远程的新提交
35.gitcheckout -b branch-name origin/branch-name本地创建和远程对应的分支
36.git branch--set-upstream branch-name origin/branch-name建立本地分支和远程分支 的关联
3.标签
37.git tag<name>创建一个标签,默认为HEAD,也可以指定一个commit_id
38.git tag -a<tagname> -m “xxx”可以指定标签信息
39.git tag -s<tagname> -m “xxx”可以用PGP签名标签
40.git tag 查看所有标签
41.git show<tagname> 查看某个标签
42.git pushorigin <tagname> 推送一个本地标签
43.git pushorigin --tags 推送全部未推送过的本地标签
44.git tag -d<tagname> 可以删除一个本地标签
45.git pushorigin :refs/tags/<tagname> 可以删除一个远程标签
4.别名
git config --global alias.lg"log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
5.搭建git服务器
1.安装git ,sudo apt-get install git
2.创建git用户,sudo adduser git
3.创建证书登录,收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件, 把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
4.初始化git仓库:先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下 输入命令:sudo git init --bare sample.git,Git就会创建一个裸仓库,裸仓库没有工 作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器 上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为 git: sudo chown -R git:git sample.git
5.禁用shell登录:出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过 编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指 定的git-shell每次一登录就自动退出。
6.克隆远程仓库:现在,可以通过gitclone命令克隆远程仓库了,在各自的电脑上运行:
git clonegit@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to havecloned an empty repository.
剩下的推送就简单了。
7.管理公钥
如果团队很小,把每个人的公钥收集起来放到服务器的 /home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法 这么玩了,这时,可以用Gitosis来管理公钥。