git 安装 使用命令

windows下安装git:

官网https://git-scm.com/downloads 

下载 Git-2.9.2-64-bit.exe

一路next,除了修改安装目录(爱改不改),完成。

最后,cmd执行 “git --version” 显示“git version 2.9.2.windows.1” 表示安装成功。

且“”开始”中有"git bash"


以下命令学自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,很详细的教程,欢迎去看原帖。

使用命令(windows在 git bash上执行):

常用命令:
git init (把这个目录变成Git可以管理的仓库)
git add readme.txt 
git commit -m "wrote a readme file" (提交到仓库)
git status (查看状态)
git diff readme.txt (对比不同)
git log(--pretty=oneline) (提交记录)
git reset --hard HEAD^   (回退两个版本 HEAD^^,回退100个版本 HEAD~100)
git reset --hard 3628164 (制定hash号回退或者前进,hash号可以不全,但要唯一识别)
git reflog (使用操作命令记录,可以找到每次commit的hash号)
 
工作区->add->暂存区(stage/index)->commit->版本区的分支
 
git diff HEAD -- readme.txt (查看工作区和版本区)
如果没有add进暂存区,commit就不会提交到版本区
git checkout -- readme.txt (一键还原成版本库最新版本。丢弃工作区的修改。"--"符号一定要,不然就变成切换到另外一个分支的命令了)
git reset HEAD readme.txt (丢弃暂存区的修改,放回工作区。也就是add了还没有commit的那部分,此时工作区跟版本区不一样,暂存区是空的)
rm test.txt;git rm test.txt;git commit -m "remove test.txt" (删除文件)
 
ssh-keygen -t rsa -C "xxxx@126.com" (创建ssh key,用git bash 的命令行窗口执行,生成的文件在C:\Users\Administrator下,加入到github的ssh keys)
本地推送远端:
githup远端用按钮选择创建新的空的仓库repository
本地执行:
git remote add origin git@github.com:xxxx/learngit.git  (这样远程的名字就叫origin)
git push -u origin master (-u 意思是第一次推送,不会把本地的master推送成分支,而是本地master和远程的master关联起来)
git push origin master (第二次及其以后,本地修改了,往远端推送)
远程库克隆到本地
git clone https://github.com/euske/pdfminer.git



分支:
git checkout -b dev (创建dev分支,并切换到此分支。    等同于:git branch dev; git checkout dev)
git branch(查看当前分支)
git add readme.txt (在dev分支上提交)
git commit -m "branch test"


git checkout master (切换到master分支)
git merge dev (把dev合并到master上,这是没有冲突的情况)


git branch -d dev (删除dev分支)
git branch (再次查看分支)


------如果分支有冲突
git checkout -b feature1
git add readme.txt 
git commit -m "AND simple"
git checkout master
git add readme.txt 
git commit -m "& simple"
git merge feature1
git status (查看状态)
git add readme.txt (再次提交,采用master的内容)
git commit -m "conflict fixed"
git log --graph (可以查看分支的具体情况图)
git branch -d feature1
----------
git merge --no-ff -m "merge with no-ff" dev  (强制不使用fast forward方式合并,这样的话需要有一次commit,并且能够清晰的看到合并轨迹)


------可以把当前工作现场“储藏”起来,创建分支解决bug
git stash
git checkout master
git checkout -b issue-101 (创建解决101bug的分支)
git add readme.txt 
git commit -m "fix bug 101"
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101
git checkout dev
git status (查看状态)
git stash list (查看工作现场村到哪里去了)
git stash pop (恢复现场并删除stash记录,等同于:git stash apply;git stash drop)
git stash list (再次查看,没有了)

------强制删除 没有合并 没有用过的分支
git branch -D feature-vulcan

-------多人合作
git remote
git remote -v (查看远程库的信息)

git push origin master
git push origin dev (推送不同分支到远程库)

模拟另外一个开发小伙伴:
git clone git@github.com:michaelliao/learngit.git
git checkout -b dev origin/dev (创建本地dev分支切换,并与远程库中的dev关联)
git commit -m "add /usr/bin/env"
git push origin dev

此时,你也要提交
git add hello.py 
git commit -m "add coding: utf-8"
git push origin dev (----会推送失败,需要先pull,解决冲突)
git pull (git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接)
git branch --set-upstream dev origin/dev
git pull (合并,解决冲突)
git commit -m "merge & fix hello.py"
git push origin dev

标签
git checkout master (切换到需要打标签的分支上)
git tag v1.0 (打一个新标签)
git tag (查看所有标签)


git tag v0.9 6224937 (根据commit id =6224937打标签,这样随意打什么时候的版本)


注意,标签不是按时间顺序列出,而是按字母排序的。


git show v0.9 (查看标签详细信息)


git tag -s <tagname> -m "blablabla..."  可以用PGP签名标签;略。




git tag -d v0.1 (删除标签)
git push origin :refs/tags/v0.9 (远程删除标签)


git push origin v1.0 (推送标签到远程)
git push origin --tags (一次性推送全部尚未推送到远程的本地标签)



使用GitHub
点“Fork”
git clone git@github.com:michaelliao/bootstrap.git (复制到自己的仓库,修改)


配置git
git config --global color.ui true (让Git显示颜色)

.gitignore 文件
git check-ignore -v App.class (查看"App.class",是因为什么规则被忽略)

设置别名:
git config --global alias.st status (设置用st代替status)
(还有人丧心病狂地把lg配置成了如下: 哈哈)
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"

(--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
每个仓库的Git配置文件都放在.git/config文件中:
也可以直接修改这个文件)


搭建Git服务器
(前提:linux系统,ubantu机器)
sudo apt-get install git (安装git)
sudo adduser git (创建一个git用户,用来运行git服务)
收集所有需要登录的用户的公钥,就是各自的id_rsa.pub,导入到/home/git/.ssh/authorized_keys文件里,一行一个。
(选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:)
sudo git init --bare sample.git (Git就会创建一个裸仓库,裸仓库没有工作区)
sudo chown -R git:git sample.git (把owner改为git用户)
(出于安全考虑,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每次一登录就自动退出。)

接下来,各自在自己的电脑上操作:
git clone git@server:/srv/sample.git
(剩下就的就是:修改推送了)

ps:管理大家的公钥,少量的可以直接用“/home/git/.ssh/authorized_keys”,如上;
如果人数超多,用Gitosis来管理公钥,虽然不知道是啥。
要像SVN那样变态地控制权限(每个人是否有读写权限会精确到每个分支甚至每个目录下),
用Gitolite(Git也继承了开源社区的精神,不支持权限控制。
不过,因为Git支持钩子hook,所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值